diff --git a/.gitignore b/.gitignore index f6757dc..f3f87a0 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ main.pdb # F12 native screenshots (debug captures) screenshot_*.png + +# Editor scratch state (recent projects, layout) +.bloom-editor/ diff --git a/CLAUDE.md b/CLAUDE.md index 07dc664..3fcebf7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -122,18 +122,51 @@ the view moves, and the phone has no headroom to absorb the stall. ## World pipeline -`assets/worlds/.world.json` is authored by hand (later: by the -bloom editor). Every `npm run dev` re-runs `tools/build-world.ts`, -which buckets entities by `userData.kind` and emits a Perry-safe -TypeScript module of parallel flat arrays at `src/generated/world.ts`. -Perry can't parse JSON at runtime (arrays from `JSON.parse` have no -`.length`), so the generator is a hard requirement — never import the -JSON directly. Supported kinds today: `player_spawn`, `collider_box`, -`static_mesh` (with optional box collider + tag-driven paint -category), `prop_tree`, `point_light`, `enemy_spawner`, -`weapon_pickup`, `wave_config`. Water volumes and environment settings -come from the top-level fields. Adding a new kind = add a bucket in -`tools/build-world.ts` + consume the generated arrays in `main.ts`. +**The world is loaded at runtime.** `src/world-runtime.ts` reads +`assets/worlds/arena_02.world.json` at startup via the engine's +`loadWorld`, and exposes it as the flat number arrays the game loop +consumes. There is no `src/generated/` any more, and no bake step: +edit a level in the Bloom editor, relaunch, and it is there. + +(The old `tools/build-world.ts` baker existed because Perry 0.4.x +returned arrays from `JSON.parse` whose `.length` read as undefined. +That is fixed — verified on 0.5.1208 — so the workaround is gone. The +two Perry rules that still bind: build arrays with `new Array(n)` + +index assignment, never `.push()`; and parse strings at load, never on +a per-frame path.) + +What lives in the world file: + +- **Engine concepts, first-class**: `environment` (sky/sun/ambient/fog), + `lights` (schema v2 — point lights are engine-universal, so they are + not `userData`), `water`, `rivers`, `terrain` (the authored + heightmap: physics, enemy ground-following, and the scatters all read + it directly). +- **Game concepts, in `userData.kind`**: `player_spawn`, `collider_box`, + `static_mesh` (optional box collider + tag-driven paint category), + `prop_tree` (the forest — 88 real entities, each movable), + `enemy_spawner`, `weapon_pickup`, `wave_config`. A spawner means + nothing without this game, so it stays game-defined; the editor + round-trips it as opaque key/values. + +Adding a new kind = bucket it in `src/world-runtime.ts` and consume the +array in `main.ts`. Nothing to regenerate. + +### What is still derived rather than authored + +- **The terrain's visual mesh** (`assets/models/terrain_hills.glb`) is + built from `world.terrain` by `bun tools/build-terrain.ts`, which also + adds the horizon "skirt" outside the arena. Sculpt in the editor → + save → re-run that one command → the visuals follow. Physics and + height queries need no rebuild; they read the world file. +- **The grass** (20k instances) is scattered at startup. Its keep-out + shapes — water, building footprint — are *derived from the world data* + (`W.keepOut`), not hardcoded rectangles as before: move the river in + the editor and the grass moves with it. +- **Seeding tools**, run once, not part of the build: + `bake-terrain-to-world.ts` (heightmap from the procedural recipe in + `terrain-shape.ts`) and `bake-forest-to-world.ts` (the 88 trees). + Re-running either OVERWRITES editor work on that data. ## Conventions diff --git a/assets/models/terrain_hills.glb b/assets/models/terrain_hills.glb index 3378073..131fb6a 100644 Binary files a/assets/models/terrain_hills.glb and b/assets/models/terrain_hills.glb differ diff --git a/assets/worlds/arena_01.world.json b/assets/worlds/arena_01.world.json index fdd6eb5..2062fc6 100644 --- a/assets/worlds/arena_01.world.json +++ b/assets/worlds/arena_01.world.json @@ -1,18 +1,49 @@ { - "schemaVersion": 1, + "schemaVersion": 2, "name": "Arena 01", "id": "arena_01", - "bounds": { "min": [-30, -5, -30], "max": [30, 20, 30] }, + "bounds": { + "min": [ + -30, + -5, + -30 + ], + "max": [ + 30, + 20, + 30 + ] + }, "environment": { - "skyColor": [0.08, 0.08, 0.1], - "ambientColor": [0.5, 0.5, 0.7], + "skyColor": [ + 0.08, + 0.08, + 0.1 + ], + "ambientColor": [ + 0.5, + 0.5, + 0.7 + ], "ambientIntensity": 0.35, - "sunDirection": [-0.3, -0.9, -0.2], - "sunColor": [1.0, 0.95, 0.85], + "sunDirection": [ + -0.3, + -0.9, + -0.2 + ], + "sunColor": [ + 1.0, + 0.95, + 0.85 + ], "sunIntensity": 1.0, "fogStart": 25, "fogEnd": 80, - "fogColor": [0.08, 0.08, 0.12], + "fogColor": [ + 0.08, + 0.08, + 0.12 + ], "shadowsEnabled": true }, "terrain": null, @@ -22,86 +53,263 @@ "name": "player_spawn", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 1, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 0, + 1, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["logic"], - "userData": { "kind": "player_spawn", "primary": "1", "yaw": "0" } + "tags": [ + "logic" + ], + "userData": { + "kind": "player_spawn", + "primary": "1", + "yaw": "0" + } }, { "id": "floor", "name": "floor", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, -0.5, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 0, + -0.5, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "25,0.5,25", "static": "1" } + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "25,0.5,25", + "static": "1" + } }, { "id": "wall_n", "name": "wall_n", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 2.5, -25], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 0, + 2.5, + -25 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "25,3,0.5", "static": "1" } + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "25,3,0.5", + "static": "1" + } }, { "id": "wall_s", "name": "wall_s", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 2.5, 25], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 0, + 2.5, + 25 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "25,3,0.5", "static": "1" } + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "25,3,0.5", + "static": "1" + } }, { "id": "wall_e", "name": "wall_e", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [25, 2.5, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 25, + 2.5, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "0.5,3,25", "static": "1" } + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "0.5,3,25", + "static": "1" + } }, { "id": "wall_w", "name": "wall_w", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-25, 2.5, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + -25, + 2.5, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "0.5,3,25", "static": "1" } + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "0.5,3,25", + "static": "1" + } }, { "id": "spawner_a", "name": "spawner_a", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [15, 0, -15], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 15, + 0, + -15 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["logic"], - "userData": { "kind": "enemy_spawner", "enemyType": "dretch", "waveBits": "1,2,3", "maxAlive": "3", "cooldown": "1.2" } + "tags": [ + "logic" + ], + "userData": { + "kind": "enemy_spawner", + "enemyType": "dretch", + "waveBits": "1,2,3", + "maxAlive": "3", + "cooldown": "1.2" + } }, { "id": "cfg_waves", "name": "waves", "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, + "transform": { + "position": [ + 0, + 0, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, "tint": null, - "tags": ["logic"], + "tags": [ + "logic" + ], "userData": { "kind": "wave_config", "waves": "[{\"count\":5,\"enemy\":\"dretch\"},{\"count\":10,\"enemy\":\"dretch\"},{\"count\":20,\"enemy\":\"dretch\"}]" } } ], + "lights": [], "water": [], "rivers": [], - "metadata": { "gameId": "shooter" } + "metadata": { + "gameId": "shooter" + } } diff --git a/assets/worlds/arena_02.world.json b/assets/worlds/arena_02.world.json index f149d38..06f28a1 100644 --- a/assets/worlds/arena_02.world.json +++ b/assets/worlds/arena_02.world.json @@ -1,456 +1,22275 @@ { - "schemaVersion": 1, + "schemaVersion": 2, "name": "Arena 02 — Outdoor plaza", "id": "arena_02", - "bounds": { "min": [-50, -5, -50], "max": [50, 30, 50] }, + "bounds": { + "min": [ + -50, + -5, + -50 + ], + "max": [ + 50, + 30, + 50 + ] + }, "environment": { - "skyColor": [0.55, 0.62, 0.78], - "ambientColor": [0.75, 0.78, 0.85], + "skyColor": [ + 0.55, + 0.62, + 0.78 + ], + "ambientColor": [ + 0.75, + 0.78, + 0.85 + ], "ambientIntensity": 0.55, - "sunDirection": [0.45, 0.72, 0.52], - "sunColor": [1.0, 0.95, 0.82], + "sunDirection": [ + 0.45, + 0.72, + 0.52 + ], + "sunColor": [ + 1, + 0.95, + 0.82 + ], "sunIntensity": 1.1, "fogStart": 45, "fogEnd": 140, - "fogColor": [0.62, 0.68, 0.78], + "fogColor": [ + 0.62, + 0.68, + 0.78 + ], "shadowsEnabled": true }, - "terrain": null, + "terrain": { + "width": 128, + "depth": 128, + "cellSize": 0.6299212598425197, + "origin": [ + -40, + 0, + -40 + ], + "heights": [ + 0.6377, + 0.7011, + 0.7649, + 0.8287, + 0.8921, + 0.9546, + 1.0155, + 1.0743, + 1.1303, + 1.183, + 1.2315, + 1.2754, + 1.314, + 1.3467, + 1.3732, + 1.3928, + 1.4054, + 1.4108, + 1.4087, + 1.3992, + 1.3825, + 1.3587, + 1.3284, + 1.2919, + 1.2498, + 1.2029, + 1.1517, + 1.0972, + 1.0402, + 0.9814, + 0.9218, + 0.8621, + 0.8031, + 0.7454, + 0.6899, + 0.6369, + 0.5871, + 0.5407, + 0.4981, + 0.4594, + 0.4248, + 0.3942, + 0.3676, + 0.3448, + 0.3256, + 0.3097, + 0.2969, + 0.2867, + 0.2789, + 0.273, + 0.2686, + 0.2654, + 0.2629, + 0.2609, + 0.259, + 0.257, + 0.2545, + 0.2513, + 0.2473, + 0.2424, + 0.2364, + 0.2292, + 0.2209, + 0.2115, + 0.2011, + 0.1898, + 0.1776, + 0.1649, + 0.1517, + 0.1383, + 0.125, + 0.112, + 0.0996, + 0.0881, + 0.0777, + 0.0688, + 0.0616, + 0.0563, + 0.0533, + 0.0528, + 0.0549, + 0.0598, + 0.0677, + 0.0786, + 0.0925, + 0.1096, + 0.1297, + 0.1527, + 0.1786, + 0.2071, + 0.2381, + 0.2712, + 0.3061, + 0.3426, + 0.3803, + 0.4187, + 0.4575, + 0.4962, + 0.5344, + 0.5718, + 0.6079, + 0.6423, + 0.6746, + 0.7045, + 0.7316, + 0.7558, + 0.7767, + 0.7941, + 0.8079, + 0.818, + 0.8244, + 0.8269, + 0.8256, + 0.8205, + 0.8119, + 0.7998, + 0.7843, + 0.7658, + 0.7443, + 0.7202, + 0.6937, + 0.6651, + 0.6347, + 0.6027, + 0.5695, + 0.5353, + 0.5004, + 0.465, + 0.64, + 0.7028, + 0.7659, + 0.8291, + 0.8919, + 0.9538, + 1.0142, + 1.0725, + 1.1281, + 1.1804, + 1.2287, + 1.2724, + 1.311, + 1.3438, + 1.3704, + 1.3903, + 1.4033, + 1.4091, + 1.4076, + 1.3988, + 1.3829, + 1.3601, + 1.3307, + 1.2952, + 1.2543, + 1.2085, + 1.1586, + 1.1054, + 1.0496, + 0.9922, + 0.9338, + 0.8754, + 0.8176, + 0.7612, + 0.7068, + 0.6549, + 0.606, + 0.5605, + 0.5187, + 0.4807, + 0.4465, + 0.4163, + 0.39, + 0.3672, + 0.348, + 0.3319, + 0.3187, + 0.308, + 0.2995, + 0.2927, + 0.2874, + 0.2831, + 0.2794, + 0.2761, + 0.2728, + 0.2692, + 0.2651, + 0.2604, + 0.2547, + 0.2481, + 0.2405, + 0.2318, + 0.222, + 0.2111, + 0.1994, + 0.1868, + 0.1737, + 0.16, + 0.1462, + 0.1324, + 0.1189, + 0.106, + 0.0939, + 0.083, + 0.0736, + 0.0659, + 0.0602, + 0.0569, + 0.0561, + 0.0581, + 0.063, + 0.071, + 0.0823, + 0.0969, + 0.1148, + 0.136, + 0.1604, + 0.1879, + 0.2184, + 0.2516, + 0.2873, + 0.3251, + 0.3647, + 0.4057, + 0.4477, + 0.4904, + 0.5331, + 0.5755, + 0.6171, + 0.6575, + 0.6962, + 0.7328, + 0.7669, + 0.7981, + 0.8261, + 0.8506, + 0.8713, + 0.8881, + 0.9009, + 0.9094, + 0.9138, + 0.9139, + 0.9099, + 0.9017, + 0.8897, + 0.8739, + 0.8546, + 0.832, + 0.8064, + 0.7781, + 0.7473, + 0.7144, + 0.6798, + 0.6436, + 0.6064, + 0.5683, + 0.5297, + 0.4909, + 0.6402, + 0.7021, + 0.7644, + 0.8268, + 0.8888, + 0.9499, + 1.0096, + 1.0672, + 1.1223, + 1.1741, + 1.2221, + 1.2656, + 1.304, + 1.3368, + 1.3634, + 1.3836, + 1.397, + 1.4033, + 1.4024, + 1.3944, + 1.3793, + 1.3575, + 1.3292, + 1.295, + 1.2553, + 1.2108, + 1.1623, + 1.1105, + 1.0562, + 1.0003, + 0.9434, + 0.8864, + 0.83, + 0.7749, + 0.7218, + 0.6711, + 0.6234, + 0.5789, + 0.5379, + 0.5006, + 0.4671, + 0.4373, + 0.4112, + 0.3886, + 0.3693, + 0.353, + 0.3394, + 0.3282, + 0.319, + 0.3114, + 0.3051, + 0.2997, + 0.2948, + 0.2901, + 0.2854, + 0.2803, + 0.2747, + 0.2683, + 0.2611, + 0.2529, + 0.2437, + 0.2334, + 0.2222, + 0.21, + 0.1971, + 0.1834, + 0.1694, + 0.155, + 0.1407, + 0.1266, + 0.1131, + 0.1004, + 0.0889, + 0.0788, + 0.0705, + 0.0643, + 0.0605, + 0.0592, + 0.0609, + 0.0656, + 0.0737, + 0.0851, + 0.1, + 0.1185, + 0.1406, + 0.1662, + 0.1952, + 0.2275, + 0.2628, + 0.3009, + 0.3414, + 0.3841, + 0.4286, + 0.4743, + 0.5209, + 0.5678, + 0.6146, + 0.6608, + 0.7059, + 0.7493, + 0.7906, + 0.8294, + 0.8652, + 0.8977, + 0.9264, + 0.9511, + 0.9716, + 0.9877, + 0.9992, + 1.006, + 1.0082, + 1.0057, + 0.9987, + 0.9873, + 0.9716, + 0.952, + 0.9286, + 0.9017, + 0.8717, + 0.8388, + 0.8035, + 0.7662, + 0.7271, + 0.6866, + 0.6451, + 0.603, + 0.5606, + 0.5182, + 0.6382, + 0.699, + 0.7603, + 0.8217, + 0.8827, + 0.9429, + 1.0018, + 1.0586, + 1.113, + 1.1642, + 1.2117, + 1.2548, + 1.293, + 1.3257, + 1.3525, + 1.3729, + 1.3866, + 1.3934, + 1.3932, + 1.386, + 1.3719, + 1.3511, + 1.324, + 1.2911, + 1.2528, + 1.2098, + 1.1629, + 1.1127, + 1.06, + 1.0056, + 0.9504, + 0.895, + 0.8402, + 0.7866, + 0.7349, + 0.6855, + 0.639, + 0.5956, + 0.5555, + 0.5191, + 0.4862, + 0.4569, + 0.4312, + 0.4087, + 0.3894, + 0.3729, + 0.359, + 0.3473, + 0.3374, + 0.3289, + 0.3216, + 0.3151, + 0.309, + 0.303, + 0.2968, + 0.2903, + 0.2831, + 0.2752, + 0.2664, + 0.2567, + 0.246, + 0.2343, + 0.2217, + 0.2083, + 0.1942, + 0.1796, + 0.1647, + 0.1498, + 0.1351, + 0.121, + 0.1076, + 0.0954, + 0.0846, + 0.0755, + 0.0686, + 0.0641, + 0.0623, + 0.0634, + 0.0678, + 0.0755, + 0.0869, + 0.1019, + 0.1208, + 0.1435, + 0.17, + 0.2002, + 0.234, + 0.2712, + 0.3116, + 0.3547, + 0.4004, + 0.4482, + 0.4976, + 0.5482, + 0.5994, + 0.6508, + 0.7018, + 0.7518, + 0.8004, + 0.8469, + 0.8909, + 0.9318, + 0.9693, + 1.0029, + 1.0323, + 1.0572, + 1.0773, + 1.0925, + 1.1025, + 1.1075, + 1.1073, + 1.1021, + 1.0919, + 1.0769, + 1.0574, + 1.0336, + 1.0059, + 0.9745, + 0.9399, + 0.9023, + 0.8623, + 0.8202, + 0.7765, + 0.7315, + 0.6857, + 0.6394, + 0.593, + 0.5468, + 0.634, + 0.6937, + 0.7538, + 0.814, + 0.8739, + 0.933, + 0.9908, + 1.0467, + 1.1002, + 1.1507, + 1.1976, + 1.2403, + 1.2782, + 1.3107, + 1.3375, + 1.3581, + 1.3721, + 1.3795, + 1.38, + 1.3736, + 1.3605, + 1.3409, + 1.3151, + 1.2836, + 1.2468, + 1.2055, + 1.1602, + 1.1117, + 1.0608, + 1.0083, + 0.9548, + 0.9011, + 0.848, + 0.7961, + 0.746, + 0.6981, + 0.6528, + 0.6106, + 0.5716, + 0.5361, + 0.5039, + 0.4752, + 0.4498, + 0.4276, + 0.4082, + 0.3916, + 0.3773, + 0.3651, + 0.3545, + 0.3452, + 0.3369, + 0.3293, + 0.3219, + 0.3146, + 0.3071, + 0.2991, + 0.2904, + 0.281, + 0.2707, + 0.2595, + 0.2473, + 0.2343, + 0.2204, + 0.2058, + 0.1908, + 0.1754, + 0.1598, + 0.1445, + 0.1296, + 0.1155, + 0.1025, + 0.0909, + 0.081, + 0.0732, + 0.0679, + 0.0653, + 0.0657, + 0.0694, + 0.0767, + 0.0877, + 0.1026, + 0.1215, + 0.1445, + 0.1716, + 0.2028, + 0.2378, + 0.2767, + 0.319, + 0.3646, + 0.4131, + 0.464, + 0.517, + 0.5716, + 0.6271, + 0.6832, + 0.7391, + 0.7943, + 0.8483, + 0.9003, + 0.9499, + 0.9965, + 1.0396, + 1.0788, + 1.1135, + 1.1435, + 1.1684, + 1.188, + 1.2021, + 1.2106, + 1.2135, + 1.2108, + 1.2026, + 1.189, + 1.1703, + 1.1468, + 1.1187, + 1.0864, + 1.0503, + 1.0108, + 0.9684, + 0.9234, + 0.8765, + 0.8279, + 0.7782, + 0.7279, + 0.6772, + 0.6267, + 0.5767, + 0.6277, + 0.686, + 0.7447, + 0.8036, + 0.8622, + 0.92, + 0.9766, + 1.0315, + 1.0841, + 1.1337, + 1.1799, + 1.222, + 1.2595, + 1.2919, + 1.3186, + 1.3393, + 1.3537, + 1.3616, + 1.3628, + 1.3574, + 1.3453, + 1.327, + 1.3025, + 1.2725, + 1.2374, + 1.1978, + 1.1544, + 1.1078, + 1.0588, + 1.0082, + 0.9566, + 0.9049, + 0.8536, + 0.8035, + 0.755, + 0.7087, + 0.6649, + 0.6239, + 0.5861, + 0.5515, + 0.5201, + 0.492, + 0.467, + 0.445, + 0.4257, + 0.4089, + 0.3943, + 0.3815, + 0.3703, + 0.3602, + 0.3509, + 0.3422, + 0.3336, + 0.325, + 0.3161, + 0.3067, + 0.2966, + 0.2857, + 0.2739, + 0.2613, + 0.2477, + 0.2334, + 0.2184, + 0.2028, + 0.1868, + 0.1707, + 0.1547, + 0.1391, + 0.1242, + 0.1103, + 0.0978, + 0.087, + 0.0782, + 0.0719, + 0.0683, + 0.0678, + 0.0707, + 0.0772, + 0.0876, + 0.1021, + 0.1208, + 0.1438, + 0.1711, + 0.2029, + 0.2388, + 0.2789, + 0.323, + 0.3707, + 0.4216, + 0.4756, + 0.532, + 0.5903, + 0.6501, + 0.7108, + 0.7717, + 0.8322, + 0.8918, + 0.9496, + 1.0052, + 1.0579, + 1.1071, + 1.1524, + 1.1931, + 1.2289, + 1.2593, + 1.2842, + 1.3031, + 1.3161, + 1.3229, + 1.3236, + 1.3181, + 1.3068, + 1.2897, + 1.2671, + 1.2393, + 1.2066, + 1.1696, + 1.1286, + 1.0841, + 1.0366, + 0.9866, + 0.9346, + 0.8811, + 0.8266, + 0.7715, + 0.7164, + 0.6617, + 0.6077, + 0.6194, + 0.6761, + 0.7333, + 0.7906, + 0.8477, + 0.9041, + 0.9595, + 1.0131, + 1.0646, + 1.1133, + 1.1587, + 1.2001, + 1.2372, + 1.2692, + 1.2959, + 1.3167, + 1.3315, + 1.3399, + 1.3418, + 1.3373, + 1.3264, + 1.3094, + 1.2864, + 1.258, + 1.2247, + 1.1869, + 1.1454, + 1.1009, + 1.0539, + 1.0054, + 0.9559, + 0.9062, + 0.8569, + 0.8086, + 0.762, + 0.7173, + 0.675, + 0.6355, + 0.5988, + 0.5652, + 0.5347, + 0.5072, + 0.4827, + 0.4609, + 0.4417, + 0.4248, + 0.4098, + 0.3966, + 0.3846, + 0.3737, + 0.3635, + 0.3537, + 0.3439, + 0.3341, + 0.3238, + 0.313, + 0.3015, + 0.2891, + 0.276, + 0.262, + 0.2472, + 0.2317, + 0.2156, + 0.1991, + 0.1823, + 0.1657, + 0.1493, + 0.1336, + 0.1188, + 0.1053, + 0.0935, + 0.0836, + 0.0762, + 0.0715, + 0.0699, + 0.0717, + 0.0773, + 0.0868, + 0.1005, + 0.1186, + 0.1413, + 0.1686, + 0.2005, + 0.237, + 0.278, + 0.3233, + 0.3727, + 0.4259, + 0.4824, + 0.5419, + 0.6039, + 0.6677, + 0.7329, + 0.7987, + 0.8645, + 0.9297, + 0.9936, + 1.0554, + 1.1145, + 1.1703, + 1.2222, + 1.2694, + 1.3117, + 1.3484, + 1.3793, + 1.404, + 1.4222, + 1.4338, + 1.4388, + 1.4371, + 1.4288, + 1.4142, + 1.3933, + 1.3666, + 1.3344, + 1.2971, + 1.2552, + 1.2092, + 1.1595, + 1.1068, + 1.0515, + 0.9943, + 0.9357, + 0.8762, + 0.8164, + 0.7568, + 0.6977, + 0.6397, + 0.6089, + 0.6639, + 0.7194, + 0.7751, + 0.8306, + 0.8855, + 0.9393, + 0.9917, + 1.0419, + 1.0895, + 1.134, + 1.1747, + 1.2112, + 1.243, + 1.2695, + 1.2904, + 1.3055, + 1.3145, + 1.3172, + 1.3136, + 1.3039, + 1.2882, + 1.2668, + 1.2401, + 1.2087, + 1.1729, + 1.1335, + 1.091, + 1.0463, + 0.9999, + 0.9526, + 0.9051, + 0.8579, + 0.8116, + 0.7668, + 0.7239, + 0.6833, + 0.6452, + 0.6098, + 0.5773, + 0.5477, + 0.5209, + 0.4969, + 0.4754, + 0.4562, + 0.4392, + 0.4239, + 0.4102, + 0.3976, + 0.3859, + 0.3747, + 0.3638, + 0.3529, + 0.3417, + 0.3302, + 0.318, + 0.3051, + 0.2915, + 0.277, + 0.2617, + 0.2457, + 0.2291, + 0.2121, + 0.1947, + 0.1774, + 0.1603, + 0.1437, + 0.128, + 0.1135, + 0.1006, + 0.0896, + 0.0809, + 0.075, + 0.0721, + 0.0727, + 0.077, + 0.0853, + 0.098, + 0.1152, + 0.1372, + 0.164, + 0.1957, + 0.2324, + 0.2738, + 0.32, + 0.3707, + 0.4256, + 0.4844, + 0.5466, + 0.6117, + 0.6793, + 0.7487, + 0.8193, + 0.8904, + 0.9612, + 1.0311, + 1.0993, + 1.1651, + 1.2277, + 1.2865, + 1.3409, + 1.3902, + 1.4339, + 1.4716, + 1.5027, + 1.5271, + 1.5445, + 1.5547, + 1.5577, + 1.5535, + 1.5423, + 1.5241, + 1.4994, + 1.4685, + 1.4318, + 1.3896, + 1.3427, + 1.2914, + 1.2365, + 1.1784, + 1.1178, + 1.0553, + 0.9915, + 0.927, + 0.8623, + 0.798, + 0.7346, + 0.6725, + 0.5965, + 0.6496, + 0.7033, + 0.7571, + 0.8109, + 0.8641, + 0.9164, + 0.9672, + 1.0161, + 1.0626, + 1.1061, + 1.146, + 1.1819, + 1.2132, + 1.2396, + 1.2606, + 1.2759, + 1.2854, + 1.2889, + 1.2864, + 1.2779, + 1.2636, + 1.2439, + 1.219, + 1.1894, + 1.1558, + 1.1185, + 1.0783, + 1.0359, + 0.9918, + 0.9468, + 0.9015, + 0.8565, + 0.8124, + 0.7696, + 0.7286, + 0.6896, + 0.653, + 0.619, + 0.5877, + 0.559, + 0.5329, + 0.5094, + 0.4882, + 0.4692, + 0.452, + 0.4365, + 0.4222, + 0.409, + 0.3965, + 0.3844, + 0.3724, + 0.3604, + 0.348, + 0.3352, + 0.3217, + 0.3075, + 0.2926, + 0.2769, + 0.2604, + 0.2433, + 0.2257, + 0.2078, + 0.1898, + 0.1719, + 0.1545, + 0.1379, + 0.1223, + 0.1083, + 0.0961, + 0.0861, + 0.0788, + 0.0745, + 0.0736, + 0.0765, + 0.0834, + 0.0948, + 0.1108, + 0.1317, + 0.1577, + 0.1888, + 0.2251, + 0.2666, + 0.3131, + 0.3646, + 0.4208, + 0.4813, + 0.5457, + 0.6137, + 0.6846, + 0.7579, + 0.8329, + 0.9089, + 0.9852, + 1.061, + 1.1356, + 1.2081, + 1.2778, + 1.344, + 1.4058, + 1.4627, + 1.5139, + 1.559, + 1.5974, + 1.6288, + 1.6528, + 1.6692, + 1.6779, + 1.6788, + 1.672, + 1.6577, + 1.636, + 1.6073, + 1.572, + 1.5306, + 1.4836, + 1.4315, + 1.3749, + 1.3146, + 1.2511, + 1.185, + 1.1172, + 1.0481, + 0.9785, + 0.9089, + 0.8399, + 0.7721, + 0.7059, + 0.5821, + 0.6333, + 0.6849, + 0.7369, + 0.7887, + 0.8401, + 0.8907, + 0.94, + 0.9874, + 1.0326, + 1.075, + 1.114, + 1.1492, + 1.1801, + 1.2063, + 1.2273, + 1.243, + 1.253, + 1.2573, + 1.2558, + 1.2485, + 1.2358, + 1.2177, + 1.1947, + 1.1672, + 1.1356, + 1.1007, + 1.0628, + 1.0228, + 0.9812, + 0.9386, + 0.8957, + 0.853, + 0.811, + 0.7703, + 0.7312, + 0.694, + 0.659, + 0.6264, + 0.5962, + 0.5685, + 0.5432, + 0.5202, + 0.4994, + 0.4805, + 0.4632, + 0.4474, + 0.4327, + 0.4189, + 0.4056, + 0.3926, + 0.3796, + 0.3665, + 0.3529, + 0.3389, + 0.3241, + 0.3087, + 0.2925, + 0.2756, + 0.2581, + 0.24, + 0.2215, + 0.2029, + 0.1843, + 0.166, + 0.1485, + 0.1319, + 0.1167, + 0.1032, + 0.0919, + 0.0831, + 0.0773, + 0.0748, + 0.076, + 0.0813, + 0.0911, + 0.1056, + 0.1251, + 0.1498, + 0.1799, + 0.2154, + 0.2564, + 0.3029, + 0.3546, + 0.4115, + 0.4732, + 0.5393, + 0.6095, + 0.6833, + 0.76, + 0.839, + 0.9196, + 1.0011, + 1.0826, + 1.1634, + 1.2426, + 1.3194, + 1.393, + 1.4626, + 1.5273, + 1.5866, + 1.6397, + 1.6861, + 1.7252, + 1.7567, + 1.7803, + 1.7956, + 1.8026, + 1.8014, + 1.7918, + 1.7743, + 1.7489, + 1.7162, + 1.6765, + 1.6303, + 1.5782, + 1.5209, + 1.459, + 1.3932, + 1.3242, + 1.2527, + 1.1794, + 1.1051, + 1.0303, + 0.9558, + 0.8821, + 0.8099, + 0.7395, + 0.5659, + 0.6149, + 0.6645, + 0.7143, + 0.7642, + 0.8137, + 0.8624, + 0.91, + 0.956, + 0.9998, + 1.041, + 1.079, + 1.1135, + 1.1439, + 1.1698, + 1.1908, + 1.2068, + 1.2173, + 1.2224, + 1.222, + 1.216, + 1.2048, + 1.1885, + 1.1674, + 1.142, + 1.1127, + 1.0801, + 1.0447, + 1.0071, + 0.968, + 0.9279, + 0.8874, + 0.8471, + 0.8075, + 0.7689, + 0.7318, + 0.6964, + 0.6631, + 0.6319, + 0.603, + 0.5763, + 0.5518, + 0.5294, + 0.5089, + 0.4901, + 0.4728, + 0.4567, + 0.4416, + 0.4271, + 0.4131, + 0.3992, + 0.3852, + 0.371, + 0.3564, + 0.3411, + 0.3252, + 0.3086, + 0.2913, + 0.2733, + 0.2547, + 0.2357, + 0.2165, + 0.1972, + 0.1782, + 0.1597, + 0.1421, + 0.1257, + 0.111, + 0.0982, + 0.0879, + 0.0804, + 0.0762, + 0.0757, + 0.0792, + 0.0872, + 0.0999, + 0.1177, + 0.1408, + 0.1694, + 0.2037, + 0.2437, + 0.2895, + 0.3409, + 0.3979, + 0.4602, + 0.5275, + 0.5993, + 0.6753, + 0.7548, + 0.8373, + 0.922, + 1.0082, + 1.0951, + 1.1818, + 1.2675, + 1.3513, + 1.4323, + 1.5097, + 1.5826, + 1.6502, + 1.7118, + 1.7667, + 1.8143, + 1.854, + 1.8855, + 1.9085, + 1.9227, + 1.928, + 1.9244, + 1.9121, + 1.8912, + 1.8621, + 1.8253, + 1.781, + 1.7301, + 1.6729, + 1.6104, + 1.5431, + 1.4718, + 1.3973, + 1.3203, + 1.2416, + 1.162, + 1.0821, + 1.0027, + 0.9243, + 0.8476, + 0.7732, + 0.5479, + 0.5947, + 0.642, + 0.6897, + 0.7374, + 0.7849, + 0.8317, + 0.8775, + 0.9219, + 0.9642, + 1.0042, + 1.0412, + 1.0749, + 1.1047, + 1.1303, + 1.1514, + 1.1675, + 1.1786, + 1.1845, + 1.1851, + 1.1805, + 1.1709, + 1.1563, + 1.1372, + 1.114, + 1.087, + 1.0568, + 1.024, + 0.989, + 0.9524, + 0.9149, + 0.877, + 0.8391, + 0.8018, + 0.7654, + 0.7304, + 0.6969, + 0.6653, + 0.6356, + 0.6079, + 0.5823, + 0.5586, + 0.5367, + 0.5166, + 0.498, + 0.4806, + 0.4643, + 0.4487, + 0.4337, + 0.4189, + 0.4042, + 0.3893, + 0.3741, + 0.3583, + 0.342, + 0.3249, + 0.3072, + 0.2888, + 0.2698, + 0.2504, + 0.2306, + 0.2107, + 0.1909, + 0.1716, + 0.1529, + 0.1354, + 0.1194, + 0.1052, + 0.0934, + 0.0842, + 0.0782, + 0.0757, + 0.0773, + 0.0832, + 0.0939, + 0.1096, + 0.1308, + 0.1576, + 0.1902, + 0.2288, + 0.2733, + 0.3239, + 0.3805, + 0.4427, + 0.5104, + 0.5833, + 0.6608, + 0.7425, + 0.8278, + 0.916, + 1.0063, + 1.098, + 1.1902, + 1.2821, + 1.3726, + 1.4609, + 1.546, + 1.6271, + 1.7032, + 1.7735, + 1.8373, + 1.8939, + 1.9425, + 1.9828, + 2.0142, + 2.0365, + 2.0494, + 2.0529, + 2.047, + 2.0318, + 2.0076, + 1.9747, + 1.9337, + 1.8849, + 1.8291, + 1.7669, + 1.6991, + 1.6264, + 1.5497, + 1.4697, + 1.3873, + 1.3032, + 1.2183, + 1.1334, + 1.0491, + 0.9661, + 0.8851, + 0.8066, + 0.5283, + 0.5727, + 0.6177, + 0.6631, + 0.7086, + 0.754, + 0.7988, + 0.8427, + 0.8853, + 0.9262, + 0.9648, + 1.0007, + 1.0336, + 1.0628, + 1.0881, + 1.1091, + 1.1255, + 1.1371, + 1.1438, + 1.1455, + 1.1423, + 1.1342, + 1.1215, + 1.1044, + 1.0834, + 1.0588, + 1.0311, + 1.0008, + 0.9684, + 0.9346, + 0.8997, + 0.8643, + 0.829, + 0.794, + 0.7599, + 0.727, + 0.6955, + 0.6655, + 0.6374, + 0.611, + 0.5864, + 0.5636, + 0.5423, + 0.5226, + 0.5041, + 0.4868, + 0.4702, + 0.4542, + 0.4387, + 0.4232, + 0.4076, + 0.3918, + 0.3756, + 0.3588, + 0.3414, + 0.3233, + 0.3046, + 0.2852, + 0.2653, + 0.245, + 0.2245, + 0.2041, + 0.1839, + 0.1644, + 0.1458, + 0.1285, + 0.1129, + 0.0995, + 0.0886, + 0.0807, + 0.0763, + 0.0757, + 0.0794, + 0.0878, + 0.1013, + 0.1202, + 0.1448, + 0.1754, + 0.212, + 0.2549, + 0.3041, + 0.3595, + 0.4211, + 0.4886, + 0.5617, + 0.6401, + 0.7233, + 0.8106, + 0.9016, + 0.9954, + 1.0913, + 1.1884, + 1.2858, + 1.3826, + 1.4778, + 1.5704, + 1.6595, + 1.7441, + 1.8233, + 1.8963, + 1.9621, + 2.0202, + 2.0698, + 2.1105, + 2.1417, + 2.1632, + 2.1748, + 2.1764, + 2.1681, + 2.15, + 2.1224, + 2.0857, + 2.0405, + 1.9872, + 1.9266, + 1.8594, + 1.7864, + 1.7084, + 1.6262, + 1.5408, + 1.453, + 1.3637, + 1.2736, + 1.1837, + 1.0946, + 1.0071, + 0.9219, + 0.8394, + 0.5071, + 0.549, + 0.5916, + 0.6346, + 0.6779, + 0.721, + 0.7638, + 0.8058, + 0.8466, + 0.8858, + 0.9231, + 0.9579, + 0.9898, + 1.0184, + 1.0433, + 1.0642, + 1.0809, + 1.093, + 1.1005, + 1.1033, + 1.1014, + 1.095, + 1.0841, + 1.0691, + 1.0504, + 1.0282, + 1.003, + 0.9753, + 0.9457, + 0.9145, + 0.8823, + 0.8496, + 0.8168, + 0.7843, + 0.7525, + 0.7217, + 0.6921, + 0.6639, + 0.6373, + 0.6122, + 0.5887, + 0.5667, + 0.5461, + 0.5268, + 0.5085, + 0.4911, + 0.4744, + 0.458, + 0.4419, + 0.4258, + 0.4095, + 0.3928, + 0.3756, + 0.3579, + 0.3394, + 0.3204, + 0.3007, + 0.2804, + 0.2597, + 0.2387, + 0.2176, + 0.1967, + 0.1763, + 0.1567, + 0.1382, + 0.1213, + 0.1063, + 0.0937, + 0.0839, + 0.0774, + 0.0747, + 0.0761, + 0.0821, + 0.0931, + 0.1095, + 0.1316, + 0.1596, + 0.194, + 0.2347, + 0.2819, + 0.3357, + 0.3959, + 0.4625, + 0.5352, + 0.6136, + 0.6974, + 0.7861, + 0.879, + 0.9755, + 1.0748, + 1.1761, + 1.2784, + 1.3809, + 1.4824, + 1.5821, + 1.679, + 1.7719, + 1.8598, + 1.942, + 2.0174, + 2.0851, + 2.1446, + 2.195, + 2.236, + 2.2669, + 2.2876, + 2.2978, + 2.2974, + 2.2867, + 2.2656, + 2.2347, + 2.1942, + 2.1448, + 2.087, + 2.0217, + 1.9495, + 1.8713, + 1.7881, + 1.7006, + 1.6099, + 1.5169, + 1.4224, + 1.3273, + 1.2325, + 1.1388, + 1.0469, + 0.9576, + 0.8713, + 0.4844, + 0.5239, + 0.5639, + 0.6045, + 0.6454, + 0.6862, + 0.7268, + 0.7668, + 0.8058, + 0.8434, + 0.8792, + 0.9128, + 0.9438, + 0.9717, + 0.9963, + 1.0171, + 1.0339, + 1.0466, + 1.0549, + 1.0587, + 1.0582, + 1.0534, + 1.0444, + 1.0316, + 1.0151, + 0.9953, + 0.9727, + 0.9477, + 0.9208, + 0.8923, + 0.8629, + 0.8328, + 0.8026, + 0.7726, + 0.7431, + 0.7145, + 0.6869, + 0.6605, + 0.6354, + 0.6116, + 0.5892, + 0.5681, + 0.5481, + 0.5292, + 0.5111, + 0.4937, + 0.4768, + 0.4601, + 0.4434, + 0.4267, + 0.4096, + 0.3921, + 0.3741, + 0.3554, + 0.3361, + 0.3161, + 0.2955, + 0.2745, + 0.253, + 0.2314, + 0.2099, + 0.1887, + 0.1681, + 0.1485, + 0.1303, + 0.1138, + 0.0995, + 0.0879, + 0.0793, + 0.0743, + 0.0734, + 0.0768, + 0.0852, + 0.0988, + 0.1181, + 0.1435, + 0.1751, + 0.2132, + 0.2579, + 0.3095, + 0.3677, + 0.4327, + 0.5042, + 0.582, + 0.6657, + 0.7548, + 0.8488, + 0.9471, + 1.049, + 1.1536, + 1.26, + 1.3674, + 1.4747, + 1.5808, + 1.6848, + 1.7856, + 1.8821, + 1.9732, + 2.0581, + 2.1357, + 2.2053, + 2.266, + 2.3171, + 2.3582, + 2.3887, + 2.4084, + 2.4172, + 2.4149, + 2.4016, + 2.3776, + 2.3433, + 2.2991, + 2.2456, + 2.1834, + 2.1134, + 2.0364, + 1.9532, + 1.8648, + 1.7722, + 1.6764, + 1.5782, + 1.4788, + 1.3788, + 1.2794, + 1.1812, + 1.0851, + 0.9918, + 0.9018, + 0.4604, + 0.4973, + 0.5348, + 0.5729, + 0.6113, + 0.6498, + 0.6882, + 0.7261, + 0.7632, + 0.7992, + 0.8335, + 0.8658, + 0.8958, + 0.9231, + 0.9472, + 0.9679, + 0.9849, + 0.998, + 1.0071, + 1.0121, + 1.013, + 1.0098, + 1.0027, + 0.9919, + 0.9777, + 0.9605, + 0.9405, + 0.9181, + 0.8939, + 0.8682, + 0.8415, + 0.8141, + 0.7865, + 0.759, + 0.7319, + 0.7054, + 0.6798, + 0.6552, + 0.6316, + 0.6092, + 0.5879, + 0.5677, + 0.5483, + 0.5298, + 0.5119, + 0.4945, + 0.4774, + 0.4604, + 0.4433, + 0.4259, + 0.4082, + 0.3899, + 0.371, + 0.3515, + 0.3313, + 0.3105, + 0.2892, + 0.2674, + 0.2454, + 0.2232, + 0.2013, + 0.1799, + 0.1593, + 0.1398, + 0.122, + 0.1061, + 0.0926, + 0.082, + 0.0748, + 0.0714, + 0.0723, + 0.0779, + 0.0886, + 0.105, + 0.1272, + 0.1558, + 0.1909, + 0.2327, + 0.2815, + 0.3373, + 0.4, + 0.4696, + 0.5459, + 0.6286, + 0.7173, + 0.8116, + 0.9108, + 1.0143, + 1.1213, + 1.2309, + 1.3423, + 1.4545, + 1.5663, + 1.6768, + 1.7849, + 1.8893, + 1.9892, + 2.0833, + 2.1707, + 2.2503, + 2.3214, + 2.3832, + 2.4349, + 2.476, + 2.506, + 2.5247, + 2.5319, + 2.5276, + 2.5118, + 2.4849, + 2.4473, + 2.3994, + 2.3418, + 2.2754, + 2.2009, + 2.1191, + 2.0311, + 1.9378, + 1.8403, + 1.7395, + 1.6365, + 1.5322, + 1.4277, + 1.3238, + 1.2214, + 1.1212, + 1.0242, + 0.9308, + 0.4352, + 0.4694, + 0.5044, + 0.5399, + 0.5758, + 0.612, + 0.6481, + 0.6839, + 0.7191, + 0.7533, + 0.7861, + 0.8172, + 0.8462, + 0.8727, + 0.8964, + 0.9169, + 0.9341, + 0.9477, + 0.9576, + 0.9636, + 0.9659, + 0.9643, + 0.9591, + 0.9505, + 0.9386, + 0.9238, + 0.9064, + 0.8867, + 0.8653, + 0.8423, + 0.8183, + 0.7937, + 0.7687, + 0.7436, + 0.7188, + 0.6945, + 0.6709, + 0.6481, + 0.6261, + 0.605, + 0.5848, + 0.5654, + 0.5467, + 0.5286, + 0.511, + 0.4936, + 0.4763, + 0.459, + 0.4414, + 0.4235, + 0.4051, + 0.3861, + 0.3665, + 0.3462, + 0.3252, + 0.3037, + 0.2816, + 0.2592, + 0.2367, + 0.2142, + 0.192, + 0.1705, + 0.1499, + 0.1307, + 0.1133, + 0.0981, + 0.0856, + 0.0762, + 0.0703, + 0.0686, + 0.0713, + 0.0791, + 0.0923, + 0.1114, + 0.1366, + 0.1684, + 0.2069, + 0.2525, + 0.3052, + 0.3651, + 0.4321, + 0.5062, + 0.5872, + 0.6746, + 0.7682, + 0.8673, + 0.9715, + 1.0799, + 1.1917, + 1.3062, + 1.4222, + 1.5389, + 1.655, + 1.7695, + 1.8813, + 1.9892, + 2.0921, + 2.1889, + 2.2786, + 2.3601, + 2.4325, + 2.4951, + 2.5472, + 2.5882, + 2.6176, + 2.6352, + 2.6408, + 2.6345, + 2.6162, + 2.5865, + 2.5456, + 2.4941, + 2.4326, + 2.3621, + 2.2832, + 2.1969, + 2.1043, + 2.0063, + 1.9041, + 1.7986, + 1.6909, + 1.5821, + 1.4732, + 1.3651, + 1.2587, + 1.1549, + 1.0543, + 0.9577, + 0.409, + 0.4405, + 0.4728, + 0.5057, + 0.5391, + 0.5729, + 0.6068, + 0.6404, + 0.6737, + 0.7061, + 0.7374, + 0.7671, + 0.7951, + 0.8208, + 0.844, + 0.8644, + 0.8818, + 0.8959, + 0.9065, + 0.9136, + 0.9172, + 0.9173, + 0.914, + 0.9074, + 0.8978, + 0.8855, + 0.8707, + 0.8537, + 0.835, + 0.8148, + 0.7935, + 0.7716, + 0.7491, + 0.7266, + 0.7041, + 0.682, + 0.6603, + 0.6392, + 0.6188, + 0.599, + 0.5799, + 0.5614, + 0.5433, + 0.5257, + 0.5082, + 0.4909, + 0.4735, + 0.4558, + 0.4379, + 0.4194, + 0.4004, + 0.3808, + 0.3604, + 0.3394, + 0.3178, + 0.2956, + 0.2729, + 0.25, + 0.227, + 0.2042, + 0.1819, + 0.1604, + 0.14, + 0.1212, + 0.1044, + 0.09, + 0.0784, + 0.0702, + 0.0659, + 0.0658, + 0.0706, + 0.0806, + 0.0962, + 0.1179, + 0.1461, + 0.1811, + 0.223, + 0.2722, + 0.3287, + 0.3926, + 0.4638, + 0.5422, + 0.6276, + 0.7195, + 0.8177, + 0.9215, + 1.0303, + 1.1433, + 1.2597, + 1.3786, + 1.499, + 1.6198, + 1.7398, + 1.8581, + 1.9733, + 2.0843, + 2.19, + 2.2892, + 2.3808, + 2.4638, + 2.5374, + 2.6007, + 2.653, + 2.6937, + 2.7224, + 2.7388, + 2.7429, + 2.7344, + 2.7138, + 2.6812, + 2.6372, + 2.5822, + 2.517, + 2.4425, + 2.3595, + 2.2689, + 2.1719, + 2.0695, + 1.9628, + 1.8529, + 1.741, + 1.628, + 1.515, + 1.403, + 1.2929, + 1.1856, + 1.0819, + 0.9823, + 0.3818, + 0.4106, + 0.4402, + 0.4706, + 0.5015, + 0.5328, + 0.5643, + 0.5959, + 0.6271, + 0.6578, + 0.6875, + 0.716, + 0.7428, + 0.7678, + 0.7905, + 0.8108, + 0.8282, + 0.8428, + 0.8541, + 0.8623, + 0.8672, + 0.8689, + 0.8675, + 0.863, + 0.8557, + 0.8458, + 0.8335, + 0.8192, + 0.8032, + 0.7858, + 0.7672, + 0.7479, + 0.728, + 0.7079, + 0.6878, + 0.6678, + 0.648, + 0.6287, + 0.6098, + 0.5913, + 0.5733, + 0.5556, + 0.5382, + 0.5209, + 0.5037, + 0.4864, + 0.4689, + 0.451, + 0.4326, + 0.4137, + 0.3941, + 0.3739, + 0.3529, + 0.3313, + 0.309, + 0.2862, + 0.2631, + 0.2398, + 0.2165, + 0.1935, + 0.1711, + 0.1497, + 0.1296, + 0.1113, + 0.0951, + 0.0816, + 0.0711, + 0.0642, + 0.0614, + 0.0631, + 0.0699, + 0.0821, + 0.1002, + 0.1246, + 0.1557, + 0.1937, + 0.239, + 0.2916, + 0.3518, + 0.4195, + 0.4947, + 0.5772, + 0.6667, + 0.7629, + 0.8654, + 0.9735, + 1.0866, + 1.2039, + 1.3245, + 1.4475, + 1.5718, + 1.6964, + 1.8201, + 1.9416, + 2.0599, + 2.1737, + 2.2818, + 2.383, + 2.4763, + 2.5607, + 2.6351, + 2.6989, + 2.7512, + 2.7915, + 2.8194, + 2.8346, + 2.8369, + 2.8265, + 2.8035, + 2.7682, + 2.7211, + 2.6628, + 2.5941, + 2.5158, + 2.4289, + 2.3343, + 2.2333, + 2.1267, + 2.0159, + 1.902, + 1.786, + 1.6692, + 1.5525, + 1.4369, + 1.3235, + 1.2131, + 1.1064, + 1.0042, + 0.3539, + 0.38, + 0.4069, + 0.4346, + 0.463, + 0.4919, + 0.5211, + 0.5505, + 0.5797, + 0.6086, + 0.6368, + 0.6639, + 0.6897, + 0.7139, + 0.7362, + 0.7562, + 0.7738, + 0.7887, + 0.8008, + 0.81, + 0.8163, + 0.8195, + 0.8199, + 0.8175, + 0.8124, + 0.8049, + 0.7952, + 0.7835, + 0.7702, + 0.7554, + 0.7396, + 0.7228, + 0.7055, + 0.6878, + 0.6699, + 0.652, + 0.6342, + 0.6165, + 0.5991, + 0.5819, + 0.5649, + 0.5481, + 0.5313, + 0.5144, + 0.4975, + 0.4802, + 0.4626, + 0.4445, + 0.4258, + 0.4064, + 0.3863, + 0.3655, + 0.344, + 0.3218, + 0.299, + 0.2757, + 0.2522, + 0.2285, + 0.205, + 0.1819, + 0.1596, + 0.1385, + 0.1188, + 0.101, + 0.0856, + 0.073, + 0.0637, + 0.0582, + 0.057, + 0.0605, + 0.0692, + 0.0837, + 0.1042, + 0.1312, + 0.1651, + 0.2062, + 0.2546, + 0.3106, + 0.3743, + 0.4456, + 0.5245, + 0.6108, + 0.7042, + 0.8044, + 0.9109, + 1.0229, + 1.14, + 1.2611, + 1.3856, + 1.5122, + 1.6401, + 1.768, + 1.8949, + 2.0193, + 2.1403, + 2.2564, + 2.3666, + 2.4695, + 2.5642, + 2.6496, + 2.7246, + 2.7886, + 2.8408, + 2.8805, + 2.9075, + 2.9214, + 2.9221, + 2.9097, + 2.8843, + 2.8464, + 2.7964, + 2.735, + 2.663, + 2.5812, + 2.4906, + 2.3924, + 2.2876, + 2.1773, + 2.0627, + 1.9451, + 1.8255, + 1.7052, + 1.5851, + 1.4664, + 1.3501, + 1.2369, + 1.1277, + 1.0231, + 0.3253, + 0.3487, + 0.373, + 0.398, + 0.4239, + 0.4504, + 0.4773, + 0.5045, + 0.5318, + 0.5589, + 0.5855, + 0.6113, + 0.6361, + 0.6595, + 0.6812, + 0.701, + 0.7187, + 0.734, + 0.7468, + 0.757, + 0.7646, + 0.7694, + 0.7715, + 0.7711, + 0.7683, + 0.7631, + 0.7559, + 0.7468, + 0.7361, + 0.724, + 0.7107, + 0.6966, + 0.6817, + 0.6663, + 0.6507, + 0.6348, + 0.6188, + 0.6028, + 0.5869, + 0.5709, + 0.5549, + 0.5389, + 0.5227, + 0.5063, + 0.4895, + 0.4723, + 0.4546, + 0.4363, + 0.4173, + 0.3975, + 0.377, + 0.3557, + 0.3337, + 0.311, + 0.2877, + 0.2641, + 0.2402, + 0.2163, + 0.1927, + 0.1697, + 0.1476, + 0.1267, + 0.1075, + 0.0904, + 0.0758, + 0.0643, + 0.0562, + 0.0521, + 0.0525, + 0.0578, + 0.0686, + 0.0852, + 0.1081, + 0.1377, + 0.1743, + 0.2183, + 0.2697, + 0.3289, + 0.3958, + 0.4705, + 0.5529, + 0.6428, + 0.7398, + 0.8436, + 0.9536, + 1.0693, + 1.1899, + 1.3145, + 1.4423, + 1.5722, + 1.7032, + 1.834, + 1.9635, + 2.0905, + 2.2136, + 2.3317, + 2.4435, + 2.5479, + 2.6436, + 2.7296, + 2.8051, + 2.869, + 2.9208, + 2.9599, + 2.9859, + 2.9984, + 2.9974, + 2.983, + 2.9554, + 2.915, + 2.8623, + 2.7979, + 2.7228, + 2.6379, + 2.544, + 2.4424, + 2.3342, + 2.2205, + 2.1026, + 1.9817, + 1.8589, + 1.7355, + 1.6126, + 1.4911, + 1.3722, + 1.2566, + 1.1453, + 1.0388, + 0.2963, + 0.317, + 0.3386, + 0.3611, + 0.3844, + 0.4085, + 0.4332, + 0.4583, + 0.4836, + 0.5089, + 0.5339, + 0.5584, + 0.5821, + 0.6047, + 0.6259, + 0.6455, + 0.6633, + 0.679, + 0.6925, + 0.7036, + 0.7124, + 0.7187, + 0.7226, + 0.7242, + 0.7235, + 0.7206, + 0.7158, + 0.7092, + 0.7011, + 0.6915, + 0.6808, + 0.6692, + 0.6567, + 0.6436, + 0.6301, + 0.6162, + 0.6021, + 0.5877, + 0.5731, + 0.5583, + 0.5433, + 0.5281, + 0.5124, + 0.4964, + 0.4799, + 0.4628, + 0.445, + 0.4265, + 0.4072, + 0.3871, + 0.3662, + 0.3444, + 0.322, + 0.2989, + 0.2753, + 0.2514, + 0.2273, + 0.2033, + 0.1797, + 0.1568, + 0.1349, + 0.1144, + 0.0958, + 0.0795, + 0.0658, + 0.0554, + 0.0486, + 0.046, + 0.048, + 0.0552, + 0.0679, + 0.0867, + 0.1119, + 0.144, + 0.1832, + 0.2299, + 0.2842, + 0.3463, + 0.4163, + 0.4942, + 0.5797, + 0.6728, + 0.773, + 0.8801, + 0.9933, + 1.1121, + 1.2358, + 1.3635, + 1.4941, + 1.6268, + 1.7604, + 1.8936, + 2.0254, + 2.1544, + 2.2793, + 2.3989, + 2.512, + 2.6173, + 2.7136, + 2.8001, + 2.8756, + 2.9393, + 2.9906, + 3.0288, + 3.0536, + 3.0647, + 3.0621, + 3.0457, + 3.016, + 2.9732, + 2.918, + 2.851, + 2.7731, + 2.6852, + 2.5884, + 2.4838, + 2.3726, + 2.2559, + 2.1351, + 2.0113, + 1.8858, + 1.7598, + 1.6344, + 1.5107, + 1.3896, + 1.2721, + 1.159, + 1.051, + 0.2669, + 0.285, + 0.304, + 0.3239, + 0.3448, + 0.3665, + 0.3889, + 0.4119, + 0.4353, + 0.4588, + 0.4824, + 0.5056, + 0.5282, + 0.55, + 0.5707, + 0.59, + 0.6079, + 0.6239, + 0.638, + 0.6501, + 0.6601, + 0.6679, + 0.6735, + 0.6769, + 0.6783, + 0.6777, + 0.6752, + 0.6711, + 0.6654, + 0.6583, + 0.6501, + 0.6408, + 0.6307, + 0.6198, + 0.6084, + 0.5964, + 0.584, + 0.5711, + 0.5579, + 0.5443, + 0.5302, + 0.5157, + 0.5006, + 0.485, + 0.4687, + 0.4516, + 0.4338, + 0.4151, + 0.3956, + 0.3752, + 0.3539, + 0.3319, + 0.3091, + 0.2856, + 0.2618, + 0.2376, + 0.2134, + 0.1894, + 0.1659, + 0.1432, + 0.1217, + 0.1018, + 0.0838, + 0.0683, + 0.0557, + 0.0464, + 0.0409, + 0.0398, + 0.0435, + 0.0525, + 0.0672, + 0.0881, + 0.1155, + 0.15, + 0.1917, + 0.2409, + 0.2979, + 0.3628, + 0.4355, + 0.5162, + 0.6046, + 0.7006, + 0.8037, + 0.9135, + 1.0296, + 1.1511, + 1.2774, + 1.4076, + 1.5407, + 1.6756, + 1.8112, + 1.9464, + 2.0799, + 2.2104, + 2.3366, + 2.4573, + 2.5712, + 2.677, + 2.7737, + 2.8602, + 2.9354, + 2.9987, + 3.0492, + 3.0865, + 3.1101, + 3.1197, + 3.1154, + 3.0972, + 3.0654, + 3.0204, + 2.9629, + 2.8934, + 2.813, + 2.7226, + 2.6232, + 2.516, + 2.4022, + 2.283, + 2.1597, + 2.0336, + 1.9059, + 1.7777, + 1.6503, + 1.5248, + 1.402, + 1.283, + 1.1686, + 1.0594, + 0.2374, + 0.2529, + 0.2693, + 0.2867, + 0.3052, + 0.3245, + 0.3448, + 0.3657, + 0.3872, + 0.4091, + 0.4311, + 0.453, + 0.4746, + 0.4956, + 0.5157, + 0.5349, + 0.5527, + 0.5691, + 0.5838, + 0.5968, + 0.6079, + 0.6171, + 0.6243, + 0.6296, + 0.633, + 0.6345, + 0.6343, + 0.6325, + 0.6292, + 0.6245, + 0.6187, + 0.6117, + 0.6038, + 0.5951, + 0.5856, + 0.5754, + 0.5646, + 0.5533, + 0.5413, + 0.5288, + 0.5156, + 0.5018, + 0.4873, + 0.472, + 0.4559, + 0.4389, + 0.4211, + 0.4023, + 0.3825, + 0.3619, + 0.3403, + 0.318, + 0.2949, + 0.2712, + 0.2472, + 0.2229, + 0.1987, + 0.1748, + 0.1515, + 0.1291, + 0.108, + 0.0887, + 0.0715, + 0.0569, + 0.0454, + 0.0373, + 0.0332, + 0.0336, + 0.039, + 0.0497, + 0.0663, + 0.0893, + 0.1189, + 0.1556, + 0.1996, + 0.2512, + 0.3107, + 0.378, + 0.4533, + 0.5365, + 0.6275, + 0.7259, + 0.8315, + 0.9437, + 1.0621, + 1.1859, + 1.3143, + 1.4465, + 1.5814, + 1.7181, + 1.8553, + 1.9919, + 2.1266, + 2.2581, + 2.3851, + 2.5063, + 2.6206, + 2.7266, + 2.8232, + 2.9093, + 2.9841, + 3.0466, + 3.0962, + 3.1323, + 3.1546, + 3.1627, + 3.1568, + 3.1368, + 3.1031, + 3.0561, + 2.9964, + 2.9248, + 2.8422, + 2.7496, + 2.648, + 2.5386, + 2.4227, + 2.3014, + 2.1762, + 2.0482, + 1.9187, + 1.7889, + 1.66, + 1.5331, + 1.4092, + 1.2892, + 1.1739, + 1.064, + 0.2079, + 0.2208, + 0.2347, + 0.2497, + 0.2658, + 0.2829, + 0.301, + 0.32, + 0.3396, + 0.3598, + 0.3803, + 0.401, + 0.4215, + 0.4418, + 0.4614, + 0.4803, + 0.4982, + 0.5149, + 0.5302, + 0.544, + 0.5562, + 0.5667, + 0.5755, + 0.5825, + 0.5878, + 0.5914, + 0.5933, + 0.5937, + 0.5927, + 0.5903, + 0.5867, + 0.582, + 0.5762, + 0.5695, + 0.5619, + 0.5534, + 0.5442, + 0.5342, + 0.5235, + 0.512, + 0.4996, + 0.4865, + 0.4725, + 0.4575, + 0.4416, + 0.4247, + 0.4068, + 0.3879, + 0.368, + 0.3472, + 0.3254, + 0.3028, + 0.2796, + 0.2557, + 0.2316, + 0.2073, + 0.1832, + 0.1594, + 0.1364, + 0.1145, + 0.094, + 0.0754, + 0.059, + 0.0454, + 0.0349, + 0.0281, + 0.0255, + 0.0274, + 0.0344, + 0.0469, + 0.0654, + 0.0903, + 0.122, + 0.1607, + 0.2069, + 0.2608, + 0.3224, + 0.392, + 0.4695, + 0.5549, + 0.648, + 0.7485, + 0.8561, + 0.9704, + 1.0906, + 1.2161, + 1.3461, + 1.4798, + 1.6161, + 1.754, + 1.8922, + 2.0296, + 2.165, + 2.2969, + 2.4242, + 2.5456, + 2.6597, + 2.7655, + 2.8616, + 2.9471, + 3.0211, + 3.0826, + 3.1311, + 3.1659, + 3.1867, + 3.1934, + 3.1858, + 3.1641, + 3.1286, + 3.0798, + 3.0183, + 2.9448, + 2.8603, + 2.7659, + 2.6625, + 2.5513, + 2.4337, + 2.3109, + 2.1842, + 2.0548, + 1.9241, + 1.7932, + 1.6634, + 1.5357, + 1.411, + 1.2905, + 1.1747, + 1.0646, + 0.1786, + 0.189, + 0.2005, + 0.2131, + 0.2269, + 0.2419, + 0.2579, + 0.2749, + 0.2927, + 0.3113, + 0.3304, + 0.3499, + 0.3694, + 0.3889, + 0.408, + 0.4267, + 0.4445, + 0.4615, + 0.4774, + 0.492, + 0.5052, + 0.517, + 0.5272, + 0.5359, + 0.5429, + 0.5485, + 0.5525, + 0.555, + 0.5561, + 0.5559, + 0.5545, + 0.5518, + 0.548, + 0.5432, + 0.5373, + 0.5305, + 0.5228, + 0.5141, + 0.5045, + 0.4939, + 0.4824, + 0.4698, + 0.4563, + 0.4416, + 0.4259, + 0.4091, + 0.3912, + 0.3722, + 0.3522, + 0.3312, + 0.3093, + 0.2865, + 0.2631, + 0.2393, + 0.2151, + 0.1909, + 0.1669, + 0.1435, + 0.1208, + 0.0994, + 0.0796, + 0.0617, + 0.0463, + 0.0337, + 0.0245, + 0.019, + 0.0177, + 0.0212, + 0.0298, + 0.0441, + 0.0644, + 0.0911, + 0.1247, + 0.1654, + 0.2136, + 0.2694, + 0.333, + 0.4046, + 0.484, + 0.5713, + 0.6661, + 0.7684, + 0.8776, + 0.9933, + 1.1149, + 1.2416, + 1.3728, + 1.5074, + 1.6445, + 1.7829, + 1.9216, + 2.0593, + 2.1948, + 2.3267, + 2.4538, + 2.5748, + 2.6883, + 2.7934, + 2.8887, + 2.9732, + 3.046, + 3.1063, + 3.1534, + 3.1869, + 3.2062, + 3.2113, + 3.2021, + 3.1788, + 3.1417, + 3.0912, + 3.0281, + 2.9531, + 2.8671, + 2.7712, + 2.6664, + 2.554, + 2.4352, + 2.3113, + 2.1836, + 2.0534, + 1.922, + 1.7906, + 1.6603, + 1.5322, + 1.4074, + 1.2867, + 1.1711, + 1.0611, + 0.1495, + 0.1576, + 0.1667, + 0.1771, + 0.1887, + 0.2015, + 0.2156, + 0.2307, + 0.2469, + 0.2639, + 0.2816, + 0.2999, + 0.3185, + 0.3372, + 0.3559, + 0.3742, + 0.3921, + 0.4093, + 0.4256, + 0.441, + 0.4552, + 0.4681, + 0.4797, + 0.4899, + 0.4987, + 0.5061, + 0.512, + 0.5166, + 0.5197, + 0.5215, + 0.522, + 0.5213, + 0.5194, + 0.5163, + 0.5121, + 0.5068, + 0.5004, + 0.493, + 0.4844, + 0.4747, + 0.4639, + 0.4519, + 0.4387, + 0.4244, + 0.4089, + 0.3922, + 0.3743, + 0.3552, + 0.3351, + 0.314, + 0.2919, + 0.2691, + 0.2457, + 0.2218, + 0.1978, + 0.1737, + 0.15, + 0.1265, + 0.1032, + 0.0818, + 0.0627, + 0.046, + 0.032, + 0.021, + 0.0133, + 0.0094, + 0.0096, + 0.0145, + 0.0246, + 0.0405, + 0.063, + 0.0917, + 0.1271, + 0.1696, + 0.2196, + 0.2771, + 0.3425, + 0.4157, + 0.4967, + 0.5855, + 0.6818, + 0.7853, + 0.8956, + 1.0124, + 1.1348, + 1.2623, + 1.394, + 1.529, + 1.6663, + 1.8048, + 1.9434, + 2.0809, + 2.2159, + 2.3472, + 2.4735, + 2.5936, + 2.7062, + 2.8101, + 2.9041, + 2.9873, + 3.0587, + 3.1176, + 3.1632, + 3.1951, + 3.2128, + 3.2164, + 3.2056, + 3.1808, + 3.1422, + 3.0903, + 3.0258, + 2.9496, + 2.8624, + 2.7654, + 2.6597, + 2.5465, + 2.427, + 2.3025, + 2.1744, + 2.0439, + 1.9123, + 1.7808, + 1.6506, + 1.5228, + 1.3983, + 1.278, + 1.1629, + 1.0535, + 0.121, + 0.1267, + 0.1336, + 0.1418, + 0.1514, + 0.1622, + 0.1743, + 0.1877, + 0.2022, + 0.2178, + 0.2342, + 0.2513, + 0.269, + 0.287, + 0.3052, + 0.3233, + 0.3411, + 0.3586, + 0.3753, + 0.3914, + 0.4064, + 0.4205, + 0.4334, + 0.445, + 0.4554, + 0.4645, + 0.4722, + 0.4786, + 0.4836, + 0.4873, + 0.4896, + 0.4907, + 0.4905, + 0.4891, + 0.4864, + 0.4825, + 0.4773, + 0.4709, + 0.4633, + 0.4544, + 0.4442, + 0.4328, + 0.42, + 0.406, + 0.3906, + 0.374, + 0.3561, + 0.337, + 0.3168, + 0.2957, + 0.2736, + 0.2507, + 0.2273, + 0.2016, + 0.1742, + 0.1482, + 0.1238, + 0.1011, + 0.0801, + 0.0612, + 0.0444, + 0.0299, + 0.0181, + 0.009, + 0.0031, + 0.0006, + 0.0021, + 0.0079, + 0.0185, + 0.0347, + 0.0569, + 0.086, + 0.1228, + 0.168, + 0.2227, + 0.2839, + 0.3508, + 0.4253, + 0.5076, + 0.5975, + 0.6948, + 0.7992, + 0.9102, + 1.0275, + 1.1503, + 1.278, + 1.4098, + 1.5446, + 1.6816, + 1.8196, + 1.9575, + 2.0941, + 2.2281, + 2.3583, + 2.4834, + 2.6021, + 2.7132, + 2.8155, + 2.908, + 2.9895, + 3.0592, + 3.1164, + 3.1603, + 3.1905, + 3.2066, + 3.2085, + 3.1963, + 3.17, + 3.1301, + 3.077, + 3.0115, + 2.9343, + 2.8463, + 2.7486, + 2.6424, + 2.5288, + 2.4091, + 2.2846, + 2.1566, + 2.0263, + 1.8951, + 1.7641, + 1.6345, + 1.5074, + 1.3837, + 1.2644, + 1.1502, + 1.0419, + 0.093, + 0.0966, + 0.1014, + 0.1076, + 0.1151, + 0.124, + 0.1344, + 0.1461, + 0.159, + 0.1732, + 0.1884, + 0.2044, + 0.2212, + 0.2386, + 0.2563, + 0.2741, + 0.2919, + 0.3095, + 0.3267, + 0.3433, + 0.3592, + 0.3743, + 0.3883, + 0.4013, + 0.4132, + 0.4238, + 0.4332, + 0.4412, + 0.448, + 0.4534, + 0.4575, + 0.4602, + 0.4616, + 0.4616, + 0.4603, + 0.4576, + 0.4536, + 0.4482, + 0.4414, + 0.4332, + 0.4236, + 0.4126, + 0.4002, + 0.3863, + 0.3711, + 0.3546, + 0.3367, + 0.3177, + 0.2975, + 0.2763, + 0.2518, + 0.223, + 0.1953, + 0.1688, + 0.1438, + 0.1202, + 0.0982, + 0.0779, + 0.0594, + 0.0428, + 0.0283, + 0.016, + 0.0062, + -0.0011, + -0.0054, + -0.0066, + -0.0041, + 0.0023, + 0.0133, + 0.0293, + 0.051, + 0.0791, + 0.1144, + 0.1577, + 0.2099, + 0.2719, + 0.3447, + 0.4293, + 0.5166, + 0.6073, + 0.7052, + 0.81, + 0.9214, + 1.0387, + 1.1614, + 1.2888, + 1.42, + 1.5541, + 1.6902, + 1.8272, + 1.9639, + 2.0991, + 2.2316, + 2.3601, + 2.4834, + 2.6003, + 2.7095, + 2.8098, + 2.9003, + 2.9798, + 3.0476, + 3.1028, + 3.1448, + 3.1732, + 3.1876, + 3.188, + 3.1743, + 3.1467, + 3.1056, + 3.0516, + 2.9852, + 2.9074, + 2.819, + 2.721, + 2.6147, + 2.5013, + 2.3818, + 2.2578, + 2.1303, + 2.0008, + 1.8705, + 1.7405, + 1.6121, + 1.4862, + 1.3638, + 1.2459, + 1.1332, + 1.0263, + 0.0659, + 0.0674, + 0.0702, + 0.0744, + 0.0801, + 0.0873, + 0.096, + 0.1061, + 0.1176, + 0.1304, + 0.1444, + 0.1595, + 0.1755, + 0.1922, + 0.2094, + 0.227, + 0.2448, + 0.2625, + 0.2801, + 0.2972, + 0.3139, + 0.3298, + 0.3449, + 0.3591, + 0.3723, + 0.3843, + 0.3952, + 0.4048, + 0.4131, + 0.42, + 0.4256, + 0.4299, + 0.4326, + 0.434, + 0.4339, + 0.4324, + 0.4293, + 0.4248, + 0.4187, + 0.4111, + 0.402, + 0.3914, + 0.3793, + 0.3656, + 0.3506, + 0.3341, + 0.3163, + 0.2972, + 0.271, + 0.2423, + 0.2145, + 0.1879, + 0.1625, + 0.1384, + 0.1157, + 0.0946, + 0.0751, + 0.0572, + 0.0411, + 0.0269, + 0.0146, + 0.0043, + -0.0037, + -0.0092, + -0.0122, + -0.0122, + -0.009, + -0.0022, + 0.0088, + 0.0244, + 0.0452, + 0.072, + 0.1055, + 0.1464, + 0.1958, + 0.2544, + 0.3234, + 0.4035, + 0.4959, + 0.6014, + 0.713, + 0.8179, + 0.929, + 1.0459, + 1.168, + 1.2946, + 1.4248, + 1.5577, + 1.6923, + 1.8277, + 1.9626, + 2.0959, + 2.2263, + 2.3527, + 2.4738, + 2.5883, + 2.6952, + 2.7932, + 2.8813, + 2.9585, + 3.024, + 3.077, + 3.117, + 3.1435, + 3.1562, + 3.155, + 3.1399, + 3.1111, + 3.0691, + 3.0143, + 2.9474, + 2.8692, + 2.7807, + 2.6829, + 2.577, + 2.464, + 2.3454, + 2.2222, + 2.0959, + 1.9677, + 1.8388, + 1.7103, + 1.5835, + 1.4594, + 1.3388, + 1.2228, + 1.1119, + 1.007, + 0.0396, + 0.0392, + 0.0402, + 0.0426, + 0.0466, + 0.0521, + 0.0592, + 0.0679, + 0.0781, + 0.0897, + 0.1026, + 0.1167, + 0.1319, + 0.148, + 0.1648, + 0.1822, + 0.1999, + 0.2178, + 0.2356, + 0.2532, + 0.2705, + 0.2873, + 0.3033, + 0.3186, + 0.333, + 0.3463, + 0.3584, + 0.3694, + 0.3791, + 0.3874, + 0.3944, + 0.3999, + 0.4039, + 0.4064, + 0.4074, + 0.4068, + 0.4046, + 0.4008, + 0.3954, + 0.3883, + 0.3796, + 0.3693, + 0.3574, + 0.344, + 0.329, + 0.3126, + 0.2878, + 0.2594, + 0.2318, + 0.2052, + 0.1796, + 0.1552, + 0.1321, + 0.1105, + 0.0903, + 0.0716, + 0.0545, + 0.0391, + 0.0254, + 0.0134, + 0.0032, + -0.0051, + -0.0114, + -0.0155, + -0.0172, + -0.0164, + -0.0127, + -0.0057, + 0.005, + 0.0199, + 0.0396, + 0.0648, + 0.0961, + 0.1345, + 0.1806, + 0.2356, + 0.3002, + 0.3756, + 0.4626, + 0.5623, + 0.6755, + 0.803, + 0.9333, + 1.0493, + 1.1704, + 1.2956, + 1.4242, + 1.5554, + 1.6881, + 1.8213, + 1.9539, + 2.0847, + 2.2126, + 2.3363, + 2.4547, + 2.5665, + 2.6706, + 2.7658, + 2.8512, + 2.9259, + 2.9889, + 3.0396, + 3.0774, + 3.1019, + 3.1128, + 3.11, + 3.0936, + 3.0637, + 3.0209, + 2.9655, + 2.8983, + 2.8202, + 2.7319, + 2.6347, + 2.5295, + 2.4175, + 2.3001, + 2.1784, + 2.0537, + 1.9272, + 1.8002, + 1.6738, + 1.5492, + 1.4272, + 1.309, + 1.1952, + 1.0867, + 0.984, + 0.0144, + 0.0123, + 0.0115, + 0.0123, + 0.0147, + 0.0187, + 0.0244, + 0.0317, + 0.0407, + 0.0512, + 0.0631, + 0.0764, + 0.0909, + 0.1064, + 0.1228, + 0.1399, + 0.1575, + 0.1755, + 0.1936, + 0.2116, + 0.2295, + 0.2469, + 0.2638, + 0.28, + 0.2954, + 0.3098, + 0.3231, + 0.3353, + 0.3462, + 0.3557, + 0.3638, + 0.3705, + 0.3756, + 0.3791, + 0.3809, + 0.3811, + 0.3797, + 0.3765, + 0.3715, + 0.3649, + 0.3565, + 0.3465, + 0.3348, + 0.3214, + 0.3018, + 0.2742, + 0.2471, + 0.2207, + 0.1951, + 0.1706, + 0.1473, + 0.1252, + 0.1045, + 0.0853, + 0.0676, + 0.0514, + 0.0367, + 0.0237, + 0.0122, + 0.0024, + -0.0058, + -0.0123, + -0.017, + -0.0198, + -0.0205, + -0.019, + -0.015, + -0.0081, + 0.0021, + 0.016, + 0.0343, + 0.0576, + 0.0865, + 0.1219, + 0.1646, + 0.2156, + 0.2757, + 0.346, + 0.4274, + 0.5209, + 0.6273, + 0.7476, + 0.8825, + 1.0326, + 1.1685, + 1.2919, + 1.4185, + 1.5474, + 1.6777, + 1.8082, + 1.938, + 2.0659, + 2.1908, + 2.3114, + 2.4266, + 2.5352, + 2.6361, + 2.7283, + 2.8107, + 2.8825, + 2.9428, + 2.9909, + 3.0264, + 3.0488, + 3.0579, + 3.0536, + 3.0359, + 3.0051, + 2.9616, + 2.9059, + 2.8387, + 2.7609, + 2.6732, + 2.5768, + 2.4728, + 2.3623, + 2.2465, + 2.1267, + 2.0041, + 1.8799, + 1.7553, + 1.6314, + 1.5093, + 1.3901, + 1.2745, + 1.1635, + 1.0577, + 0.9577, + -0.0096, + -0.0133, + -0.0156, + -0.0163, + -0.0154, + -0.0127, + -0.0083, + -0.0022, + 0.0057, + 0.0151, + 0.0262, + 0.0387, + 0.0525, + 0.0675, + 0.0836, + 0.1004, + 0.118, + 0.136, + 0.1543, + 0.1727, + 0.191, + 0.209, + 0.2266, + 0.2436, + 0.2598, + 0.2752, + 0.2895, + 0.3026, + 0.3145, + 0.3251, + 0.3342, + 0.3417, + 0.3477, + 0.352, + 0.3546, + 0.3555, + 0.3545, + 0.3518, + 0.3473, + 0.341, + 0.3328, + 0.323, + 0.3114, + 0.286, + 0.2599, + 0.2341, + 0.2089, + 0.1845, + 0.1611, + 0.1388, + 0.1178, + 0.0981, + 0.0798, + 0.063, + 0.0477, + 0.034, + 0.0218, + 0.011, + 0.0018, + -0.006, + -0.0123, + -0.0172, + -0.0205, + -0.0222, + -0.0222, + -0.0202, + -0.0161, + -0.0095, + -0.0001, + 0.0126, + 0.0292, + 0.0503, + 0.0766, + 0.1089, + 0.1479, + 0.1947, + 0.2501, + 0.3151, + 0.3906, + 0.4777, + 0.5772, + 0.69, + 0.8169, + 0.9585, + 1.1153, + 1.2838, + 1.4079, + 1.5341, + 1.6614, + 1.7888, + 1.9153, + 2.0398, + 2.1612, + 2.2782, + 2.3899, + 2.4949, + 2.5923, + 2.6811, + 2.7602, + 2.8289, + 2.8862, + 2.9317, + 2.9647, + 2.985, + 2.9922, + 2.9864, + 2.9675, + 2.9359, + 2.8919, + 2.8361, + 2.7692, + 2.6919, + 2.6052, + 2.5101, + 2.4076, + 2.2989, + 2.1853, + 2.0678, + 1.9477, + 1.8262, + 1.7044, + 1.5835, + 1.4645, + 1.3483, + 1.2359, + 1.1279, + 1.0252, + 0.9282, + -0.0322, + -0.0374, + -0.0411, + -0.0432, + -0.0435, + -0.042, + -0.0388, + -0.0337, + -0.0268, + -0.0183, + -0.008, + 0.0038, + 0.0171, + 0.0316, + 0.0473, + 0.0639, + 0.0814, + 0.0994, + 0.1178, + 0.1365, + 0.1552, + 0.1737, + 0.1918, + 0.2095, + 0.2264, + 0.2425, + 0.2576, + 0.2716, + 0.2843, + 0.2956, + 0.3055, + 0.3138, + 0.3205, + 0.3254, + 0.3285, + 0.3299, + 0.3294, + 0.327, + 0.3227, + 0.3166, + 0.3087, + 0.2942, + 0.2697, + 0.2451, + 0.2207, + 0.1968, + 0.1735, + 0.1512, + 0.13, + 0.1099, + 0.0912, + 0.0739, + 0.0581, + 0.0438, + 0.031, + 0.0196, + 0.0097, + 0.0012, + -0.006, + -0.0118, + -0.0165, + -0.0198, + -0.0219, + -0.0227, + -0.0222, + -0.02, + -0.0161, + -0.01, + -0.0016, + 0.0097, + 0.0244, + 0.0432, + 0.0666, + 0.0955, + 0.1307, + 0.1731, + 0.2236, + 0.2832, + 0.3527, + 0.4333, + 0.5258, + 0.631, + 0.7498, + 0.8827, + 1.0303, + 1.193, + 1.3709, + 1.5157, + 1.6396, + 1.7635, + 1.8863, + 2.007, + 2.1244, + 2.2375, + 2.3452, + 2.4463, + 2.5399, + 2.6249, + 2.7005, + 2.7658, + 2.82, + 2.8627, + 2.8932, + 2.9112, + 2.9166, + 2.9093, + 2.8893, + 2.857, + 2.8127, + 2.757, + 2.6906, + 2.6142, + 2.5287, + 2.4351, + 2.3346, + 2.2281, + 2.1169, + 2.0022, + 1.885, + 1.7666, + 1.6481, + 1.5306, + 1.415, + 1.3023, + 1.1934, + 1.089, + 0.9897, + 0.896, + -0.0535, + -0.0599, + -0.0648, + -0.068, + -0.0695, + -0.0691, + -0.0668, + -0.0626, + -0.0566, + -0.0488, + -0.0392, + -0.028, + -0.0153, + -0.0012, + 0.0142, + 0.0306, + 0.0479, + 0.066, + 0.0845, + 0.1033, + 0.1223, + 0.1412, + 0.1597, + 0.1779, + 0.1954, + 0.2121, + 0.2278, + 0.2423, + 0.2557, + 0.2676, + 0.278, + 0.2869, + 0.294, + 0.2994, + 0.3029, + 0.3046, + 0.3043, + 0.3021, + 0.298, + 0.292, + 0.2755, + 0.2528, + 0.2299, + 0.2069, + 0.1844, + 0.1624, + 0.1412, + 0.121, + 0.1019, + 0.0842, + 0.0678, + 0.053, + 0.0396, + 0.0277, + 0.0172, + 0.0082, + 0.0006, + -0.0058, + -0.011, + -0.0151, + -0.0182, + -0.0203, + -0.0214, + -0.0215, + -0.0206, + -0.0184, + -0.0149, + -0.0097, + -0.0024, + 0.0073, + 0.0199, + 0.0361, + 0.0565, + 0.082, + 0.1132, + 0.1511, + 0.1966, + 0.2507, + 0.3142, + 0.3882, + 0.4736, + 0.5712, + 0.6818, + 0.8061, + 0.9445, + 1.0975, + 1.2652, + 1.4475, + 1.6127, + 1.7327, + 1.8514, + 1.9678, + 2.0809, + 2.1897, + 2.2931, + 2.39, + 2.4794, + 2.5605, + 2.6323, + 2.694, + 2.745, + 2.7847, + 2.8125, + 2.8283, + 2.8319, + 2.8231, + 2.8021, + 2.7692, + 2.7248, + 2.6694, + 2.6037, + 2.5284, + 2.4444, + 2.3528, + 2.2545, + 2.1506, + 2.0423, + 1.9306, + 1.8168, + 1.7019, + 1.5871, + 1.4733, + 1.3615, + 1.2527, + 1.1476, + 1.047, + 0.9514, + 0.8614, + -0.0731, + -0.0807, + -0.0866, + -0.0908, + -0.0932, + -0.0937, + -0.0922, + -0.0888, + -0.0835, + -0.0764, + -0.0674, + -0.0567, + -0.0444, + -0.0306, + -0.0156, + 0.0007, + 0.0179, + 0.0359, + 0.0544, + 0.0734, + 0.0925, + 0.1116, + 0.1305, + 0.149, + 0.1668, + 0.1839, + 0.2, + 0.215, + 0.2288, + 0.2411, + 0.2519, + 0.2611, + 0.2685, + 0.2741, + 0.2778, + 0.2796, + 0.2795, + 0.2773, + 0.2733, + 0.2564, + 0.2356, + 0.2144, + 0.193, + 0.1719, + 0.1511, + 0.131, + 0.1119, + 0.0939, + 0.0771, + 0.0617, + 0.0477, + 0.0352, + 0.0243, + 0.0148, + 0.0067, + -0.0001, + -0.0056, + -0.01, + -0.0134, + -0.0159, + -0.0176, + -0.0186, + -0.0189, + -0.0186, + -0.0175, + -0.0156, + -0.0127, + -0.0085, + -0.0026, + 0.0052, + 0.0156, + 0.0291, + 0.0464, + 0.0683, + 0.0954, + 0.1288, + 0.1693, + 0.2179, + 0.2754, + 0.3429, + 0.4213, + 0.5113, + 0.6138, + 0.7295, + 0.8588, + 1.0021, + 1.1596, + 1.3313, + 1.5169, + 1.6968, + 1.811, + 1.9229, + 2.0314, + 2.1356, + 2.2343, + 2.3267, + 2.4118, + 2.4886, + 2.5564, + 2.6144, + 2.662, + 2.6986, + 2.7238, + 2.7373, + 2.739, + 2.7288, + 2.7069, + 2.6736, + 2.6292, + 2.5742, + 2.5095, + 2.4356, + 2.3534, + 2.264, + 2.1682, + 2.0672, + 1.9621, + 1.8539, + 1.7437, + 1.6327, + 1.5219, + 1.4122, + 1.3046, + 1.1999, + 1.0989, + 1.0024, + 0.9108, + 0.8247, + -0.0911, + -0.0996, + -0.1064, + -0.1114, + -0.1145, + -0.1157, + -0.1149, + -0.1122, + -0.1075, + -0.1008, + -0.0923, + -0.082, + -0.0701, + -0.0566, + -0.0418, + -0.0257, + -0.0087, + 0.0092, + 0.0278, + 0.0468, + 0.066, + 0.0852, + 0.1042, + 0.1229, + 0.141, + 0.1583, + 0.1746, + 0.1898, + 0.2037, + 0.2163, + 0.2272, + 0.2365, + 0.244, + 0.2496, + 0.2534, + 0.2552, + 0.2549, + 0.2527, + 0.2369, + 0.2182, + 0.1988, + 0.1791, + 0.1593, + 0.1399, + 0.121, + 0.1029, + 0.0859, + 0.07, + 0.0555, + 0.0425, + 0.0309, + 0.0208, + 0.0122, + 0.0051, + -0.0007, + -0.0053, + -0.0088, + -0.0114, + -0.0131, + -0.0142, + -0.0148, + -0.0149, + -0.0147, + -0.0141, + -0.0131, + -0.0117, + -0.0096, + -0.0066, + -0.0023, + 0.0035, + 0.0115, + 0.0222, + 0.0363, + 0.0545, + 0.0776, + 0.1064, + 0.142, + 0.1851, + 0.2367, + 0.2978, + 0.3693, + 0.4519, + 0.5465, + 0.6537, + 0.774, + 0.9078, + 1.0553, + 1.2165, + 1.3911, + 1.5787, + 1.7659, + 1.8729, + 1.9765, + 2.0757, + 2.1696, + 2.2572, + 2.3377, + 2.4101, + 2.4738, + 2.5279, + 2.572, + 2.6055, + 2.6279, + 2.6392, + 2.639, + 2.6275, + 2.6048, + 2.5711, + 2.5269, + 2.4726, + 2.4089, + 2.3366, + 2.2565, + 2.1695, + 2.0766, + 1.9788, + 1.8772, + 1.7728, + 1.6666, + 1.5597, + 1.4532, + 1.3479, + 1.2447, + 1.1445, + 1.0479, + 0.9557, + 0.8684, + 0.7863, + -0.1074, + -0.1166, + -0.124, + -0.1297, + -0.1334, + -0.1351, + -0.1348, + -0.1325, + -0.1282, + -0.1219, + -0.1138, + -0.1038, + -0.0922, + -0.079, + -0.0643, + -0.0485, + -0.0315, + -0.0137, + 0.0047, + 0.0237, + 0.0428, + 0.0621, + 0.0811, + 0.0998, + 0.1179, + 0.1352, + 0.1516, + 0.1668, + 0.1807, + 0.1932, + 0.2041, + 0.2133, + 0.2207, + 0.2262, + 0.2297, + 0.2313, + 0.2309, + 0.2172, + 0.2007, + 0.1832, + 0.1652, + 0.1469, + 0.1288, + 0.1112, + 0.0942, + 0.0781, + 0.0632, + 0.0496, + 0.0374, + 0.0266, + 0.0174, + 0.0097, + 0.0035, + -0.0014, + -0.005, + -0.0076, + -0.0092, + -0.01, + -0.0103, + -0.0102, + -0.0098, + -0.0093, + -0.0087, + -0.0081, + -0.0075, + -0.0067, + -0.0056, + -0.0041, + -0.0016, + 0.0021, + 0.0076, + 0.0154, + 0.0262, + 0.0407, + 0.0597, + 0.0841, + 0.1147, + 0.1525, + 0.1984, + 0.2533, + 0.318, + 0.3935, + 0.4804, + 0.5794, + 0.6909, + 0.8155, + 0.9532, + 1.1041, + 1.2679, + 1.4443, + 1.6324, + 1.8185, + 1.9169, + 2.011, + 2.0998, + 2.1824, + 2.2581, + 2.326, + 2.3853, + 2.4355, + 2.476, + 2.5063, + 2.526, + 2.5349, + 2.533, + 2.5202, + 2.4967, + 2.4628, + 2.4189, + 2.3655, + 2.3031, + 2.2327, + 2.1548, + 2.0705, + 1.9807, + 1.8864, + 1.7885, + 1.6881, + 1.5861, + 1.4837, + 1.3817, + 1.281, + 1.1825, + 1.087, + 0.9951, + 0.9074, + 0.8245, + 0.7467, + -0.1218, + -0.1315, + -0.1395, + -0.1455, + -0.1496, + -0.1517, + -0.1517, + -0.1497, + -0.1457, + -0.1397, + -0.1318, + -0.1221, + -0.1106, + -0.0976, + -0.0831, + -0.0674, + -0.0506, + -0.033, + -0.0146, + 0.0042, + 0.0232, + 0.0423, + 0.0613, + 0.0798, + 0.0978, + 0.1149, + 0.1311, + 0.1461, + 0.1598, + 0.172, + 0.1826, + 0.1915, + 0.1986, + 0.2038, + 0.207, + 0.2082, + 0.1976, + 0.1832, + 0.1677, + 0.1514, + 0.1348, + 0.118, + 0.1016, + 0.0857, + 0.0706, + 0.0566, + 0.0439, + 0.0325, + 0.0226, + 0.0142, + 0.0074, + 0.002, + -0.0019, + -0.0046, + -0.0062, + -0.0068, + -0.0067, + -0.0061, + -0.0051, + -0.0039, + -0.0028, + -0.0019, + -0.0012, + -0.0008, + -0.0008, + -0.0009, + -0.0011, + -0.0011, + -0.0006, + 0.0008, + 0.0037, + 0.0085, + 0.016, + 0.0269, + 0.0419, + 0.0619, + 0.0878, + 0.1204, + 0.1608, + 0.2097, + 0.268, + 0.3365, + 0.416, + 0.5071, + 0.6103, + 0.7259, + 0.8541, + 0.995, + 1.1483, + 1.3137, + 1.4904, + 1.6776, + 1.8533, + 1.942, + 2.0256, + 2.1031, + 2.1738, + 2.237, + 2.292, + 2.3382, + 2.375, + 2.402, + 2.419, + 2.4257, + 2.422, + 2.4081, + 2.3839, + 2.3499, + 2.3064, + 2.2539, + 2.1931, + 2.1246, + 2.0493, + 1.9679, + 1.8814, + 1.7907, + 1.6968, + 1.6006, + 1.5032, + 1.4054, + 1.3082, + 1.2123, + 1.1187, + 1.028, + 0.9409, + 0.8579, + 0.7796, + 0.7062, + -0.1343, + -0.1443, + -0.1526, + -0.1589, + -0.1632, + -0.1654, + -0.1656, + -0.1638, + -0.1599, + -0.154, + -0.1462, + -0.1366, + -0.1252, + -0.1123, + -0.098, + -0.0825, + -0.0658, + -0.0484, + -0.0302, + -0.0116, + 0.0072, + 0.0261, + 0.0448, + 0.063, + 0.0806, + 0.0975, + 0.1133, + 0.1279, + 0.1411, + 0.1529, + 0.163, + 0.1714, + 0.1779, + 0.1825, + 0.1852, + 0.1783, + 0.1661, + 0.1525, + 0.138, + 0.1229, + 0.1076, + 0.0923, + 0.0776, + 0.0635, + 0.0504, + 0.0385, + 0.028, + 0.0189, + 0.0113, + 0.0052, + 0.0007, + -0.0024, + -0.0042, + -0.0048, + -0.0044, + -0.0033, + -0.0016, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0016, + 0.0058, + 0.0131, + 0.0242, + 0.0399, + 0.0613, + 0.089, + 0.124, + 0.1673, + 0.2195, + 0.2815, + 0.3539, + 0.4375, + 0.5326, + 0.6397, + 0.7588, + 0.8901, + 1.0333, + 1.1879, + 1.3535, + 1.5292, + 1.7138, + 1.8697, + 1.9478, + 2.0201, + 2.0858, + 2.1442, + 2.1948, + 2.2369, + 2.27, + 2.2938, + 2.3081, + 2.3126, + 2.3072, + 2.2921, + 2.2674, + 2.2334, + 2.1905, + 2.1391, + 2.0799, + 2.0136, + 1.9409, + 1.8626, + 1.7796, + 1.6927, + 1.603, + 1.5113, + 1.4185, + 1.3255, + 1.2333, + 1.1425, + 1.0539, + 0.9682, + 0.886, + 0.8078, + 0.7341, + 0.6652, + -0.1448, + -0.155, + -0.1633, + -0.1696, + -0.174, + -0.1762, + -0.1764, + -0.1745, + -0.1706, + -0.1647, + -0.1569, + -0.1473, + -0.136, + -0.1232, + -0.109, + -0.0935, + -0.0771, + -0.0598, + -0.0419, + -0.0236, + -0.005, + 0.0135, + 0.0317, + 0.0495, + 0.0666, + 0.0829, + 0.0981, + 0.1121, + 0.1247, + 0.1358, + 0.1453, + 0.1529, + 0.1587, + 0.1626, + 0.1596, + 0.1495, + 0.1378, + 0.125, + 0.1115, + 0.0975, + 0.0835, + 0.0699, + 0.0568, + 0.0446, + 0.0335, + 0.0237, + 0.0154, + 0.0086, + 0.0033, + -0.0004, + -0.0027, + -0.0036, + -0.0032, + -0.0018, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0065, + 0.0183, + 0.0352, + 0.0583, + 0.0884, + 0.1262, + 0.1727, + 0.2286, + 0.2944, + 0.3709, + 0.4585, + 0.5574, + 0.6679, + 0.79, + 0.9234, + 1.0678, + 1.2227, + 1.3871, + 1.5601, + 1.7404, + 1.8673, + 1.9343, + 1.9949, + 2.0485, + 2.0946, + 2.1326, + 2.1621, + 2.1827, + 2.1942, + 2.1966, + 2.1896, + 2.1734, + 2.1483, + 2.1144, + 2.0721, + 2.022, + 1.9646, + 1.9006, + 1.8307, + 1.7556, + 1.6762, + 1.5934, + 1.508, + 1.4209, + 1.3329, + 1.2449, + 1.1577, + 1.072, + 0.9885, + 0.908, + 0.8308, + 0.7575, + 0.6885, + 0.6242, + -0.1533, + -0.1634, + -0.1716, + -0.1778, + -0.182, + -0.184, + -0.184, + -0.182, + -0.1779, + -0.1719, + -0.1639, + -0.1542, + -0.1429, + -0.1301, + -0.1159, + -0.1006, + -0.0843, + -0.0672, + -0.0496, + -0.0317, + -0.0136, + 0.0044, + 0.0221, + 0.0393, + 0.0558, + 0.0714, + 0.0858, + 0.099, + 0.1107, + 0.1209, + 0.1295, + 0.1362, + 0.1411, + 0.1418, + 0.1337, + 0.1238, + 0.1127, + 0.1006, + 0.088, + 0.0752, + 0.0626, + 0.0505, + 0.0392, + 0.0289, + 0.0199, + 0.0122, + 0.0061, + 0.0016, + -0.0014, + -0.0028, + -0.0028, + -0.0016, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0097, + 0.0285, + 0.0539, + 0.0868, + 0.128, + 0.1781, + 0.2378, + 0.3077, + 0.3882, + 0.4795, + 0.5818, + 0.6952, + 0.8194, + 0.954, + 1.0985, + 1.2522, + 1.4139, + 1.5826, + 1.7569, + 1.8465, + 1.902, + 1.9508, + 1.9924, + 2.0263, + 2.0521, + 2.0696, + 2.0785, + 2.0787, + 2.0703, + 2.0531, + 2.0276, + 1.9939, + 1.9525, + 1.9037, + 1.8482, + 1.7866, + 1.7196, + 1.6479, + 1.5723, + 1.4936, + 1.4126, + 1.3302, + 1.2471, + 1.1641, + 1.0821, + 1.0016, + 0.9234, + 0.8479, + 0.7758, + 0.7075, + 0.6432, + 0.5834, + -0.1597, + -0.1695, + -0.1774, + -0.1833, + -0.1871, + -0.1888, + -0.1885, + -0.1861, + -0.1817, + -0.1753, + -0.1672, + -0.1573, + -0.1458, + -0.1329, + -0.1188, + -0.1036, + -0.0875, + -0.0707, + -0.0534, + -0.0358, + -0.0183, + -0.0009, + 0.0161, + 0.0326, + 0.0482, + 0.0628, + 0.0763, + 0.0885, + 0.0992, + 0.1083, + 0.1157, + 0.1213, + 0.1251, + 0.1191, + 0.1109, + 0.1013, + 0.0906, + 0.0792, + 0.0676, + 0.0559, + 0.0447, + 0.0342, + 0.0247, + 0.0163, + 0.0094, + 0.0039, + 0.0001, + -0.0022, + -0.0029, + -0.0021, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0207, + 0.0491, + 0.0854, + 0.1302, + 0.1843, + 0.2481, + 0.322, + 0.4063, + 0.501, + 0.6062, + 0.7217, + 0.847, + 0.9817, + 1.125, + 1.2759, + 1.4334, + 1.5961, + 1.7574, + 1.8078, + 1.8519, + 1.8891, + 1.9189, + 1.9412, + 1.9556, + 1.9619, + 1.9601, + 1.9502, + 1.9322, + 1.9064, + 1.873, + 1.8325, + 1.7852, + 1.7317, + 1.6726, + 1.6086, + 1.5403, + 1.4686, + 1.3941, + 1.3176, + 1.2399, + 1.1618, + 1.084, + 1.0071, + 0.9319, + 0.8589, + 0.7886, + 0.7215, + 0.6581, + 0.5986, + 0.5433, + -0.1639, + -0.1733, + -0.1807, + -0.1861, + -0.1893, + -0.1905, + -0.1897, + -0.1868, + -0.1819, + -0.1752, + -0.1666, + -0.1565, + -0.1448, + -0.1318, + -0.1176, + -0.1025, + -0.0865, + -0.07, + -0.0532, + -0.0361, + -0.0192, + -0.0025, + 0.0137, + 0.0292, + 0.0438, + 0.0574, + 0.0698, + 0.0807, + 0.0902, + 0.098, + 0.1041, + 0.1084, + 0.1063, + 0.0995, + 0.0912, + 0.0817, + 0.0714, + 0.0607, + 0.05, + 0.0395, + 0.0297, + 0.0209, + 0.0131, + 0.0068, + 0.0019, + -0.0013, + -0.0029, + -0.0029, + -0.0013, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0131, + 0.045, + 0.0851, + 0.1341, + 0.1924, + 0.2602, + 0.338, + 0.4257, + 0.5232, + 0.6305, + 0.7471, + 0.8725, + 1.0059, + 1.1465, + 1.2933, + 1.4449, + 1.6, + 1.7133, + 1.7526, + 1.7854, + 1.8114, + 1.8302, + 1.8416, + 1.8454, + 1.8417, + 1.8304, + 1.8116, + 1.7856, + 1.7527, + 1.7131, + 1.6674, + 1.616, + 1.5595, + 1.4985, + 1.4338, + 1.3659, + 1.2957, + 1.2238, + 1.1509, + 1.0777, + 1.005, + 0.9334, + 0.8634, + 0.7955, + 0.7304, + 0.6684, + 0.6098, + 0.555, + 0.5042, + -0.166, + -0.1748, + -0.1815, + -0.1861, + -0.1887, + -0.1892, + -0.1876, + -0.1841, + -0.1786, + -0.1713, + -0.1623, + -0.1518, + -0.1398, + -0.1266, + -0.1124, + -0.0973, + -0.0816, + -0.0654, + -0.0489, + -0.0325, + -0.0162, + -0.0004, + 0.0149, + 0.0293, + 0.0428, + 0.0551, + 0.0661, + 0.0757, + 0.0836, + 0.09, + 0.0946, + 0.0958, + 0.0901, + 0.0828, + 0.0743, + 0.0648, + 0.0549, + 0.0448, + 0.035, + 0.0258, + 0.0175, + 0.0103, + 0.0044, + 0.0001, + -0.0026, + -0.0037, + -0.003, + -0.0007, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0069, + 0.0429, + 0.0873, + 0.1405, + 0.2029, + 0.2747, + 0.3559, + 0.4465, + 0.5461, + 0.6545, + 0.7712, + 0.8953, + 1.0261, + 1.1626, + 1.3036, + 1.4477, + 1.5937, + 1.6538, + 1.6823, + 1.7044, + 1.7198, + 1.7283, + 1.7298, + 1.7242, + 1.7117, + 1.6923, + 1.6662, + 1.6337, + 1.5952, + 1.5511, + 1.5018, + 1.448, + 1.3902, + 1.329, + 1.2651, + 1.1991, + 1.1318, + 1.0637, + 0.9955, + 0.9279, + 0.8614, + 0.7966, + 0.7339, + 0.6739, + 0.6168, + 0.563, + 0.5128, + 0.4663, + -0.166, + -0.1739, + -0.1798, + -0.1835, + -0.1852, + -0.1848, + -0.1824, + -0.178, + -0.1718, + -0.1638, + -0.1543, + -0.1432, + -0.1309, + -0.1175, + -0.1032, + -0.0881, + -0.0725, + -0.0567, + -0.0408, + -0.025, + -0.0095, + 0.0054, + 0.0196, + 0.0328, + 0.045, + 0.0559, + 0.0654, + 0.0733, + 0.0797, + 0.0843, + 0.0872, + 0.0834, + 0.0768, + 0.0688, + 0.0599, + 0.0505, + 0.0409, + 0.0315, + 0.0226, + 0.0147, + 0.0078, + 0.0023, + -0.0016, + -0.0039, + -0.0045, + -0.0033, + -0.0004, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0034, + 0.0438, + 0.0926, + 0.1501, + 0.2165, + 0.2919, + 0.3759, + 0.4686, + 0.5694, + 0.6778, + 0.7932, + 0.9148, + 1.0415, + 1.1723, + 1.306, + 1.4413, + 1.556, + 1.5804, + 1.5988, + 1.6109, + 1.6167, + 1.6159, + 1.6086, + 1.595, + 1.575, + 1.5489, + 1.517, + 1.4796, + 1.4372, + 1.3902, + 1.339, + 1.2844, + 1.2267, + 1.1668, + 1.1051, + 1.0422, + 0.9789, + 0.9157, + 0.8531, + 0.7917, + 0.732, + 0.6744, + 0.6193, + 0.5671, + 0.518, + 0.4723, + 0.43, + -0.1638, + -0.1707, + -0.1755, + -0.1782, + -0.1788, + -0.1773, + -0.1739, + -0.1686, + -0.1615, + -0.1527, + -0.1425, + -0.1309, + -0.1181, + -0.1044, + -0.0899, + -0.0749, + -0.0595, + -0.0441, + -0.0287, + -0.0136, + 0.001, + 0.0149, + 0.0278, + 0.0397, + 0.0504, + 0.0597, + 0.0675, + 0.0738, + 0.0783, + 0.0811, + 0.0802, + 0.0737, + 0.066, + 0.0572, + 0.0479, + 0.0385, + 0.0292, + 0.0205, + 0.0126, + 0.0059, + 0.0005, + -0.0032, + -0.0052, + -0.0055, + -0.0038, + -0.0004, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0037, + 0.0486, + 0.1018, + 0.1634, + 0.2334, + 0.3117, + 0.3979, + 0.4916, + 0.5925, + 0.6997, + 0.8125, + 0.9301, + 1.0512, + 1.175, + 1.3, + 1.425, + 1.4804, + 1.4952, + 1.5042, + 1.5073, + 1.5044, + 1.4956, + 1.4809, + 1.4604, + 1.4344, + 1.4032, + 1.3671, + 1.3264, + 1.2816, + 1.2332, + 1.1817, + 1.1276, + 1.0716, + 1.0141, + 0.9557, + 0.8971, + 0.8387, + 0.7811, + 0.7247, + 0.67, + 0.6173, + 0.5671, + 0.5196, + 0.4751, + 0.4337, + 0.3955, + -0.1595, + -0.1652, + -0.1688, + -0.1702, + -0.1696, + -0.1669, + -0.1623, + -0.1559, + -0.1478, + -0.1381, + -0.1271, + -0.1148, + -0.1015, + -0.0875, + -0.0728, + -0.0578, + -0.0426, + -0.0275, + -0.0127, + 0.0016, + 0.0152, + 0.0279, + 0.0396, + 0.05, + 0.0591, + 0.0667, + 0.0726, + 0.0769, + 0.0795, + 0.0803, + 0.0745, + 0.0665, + 0.0575, + 0.0479, + 0.0382, + 0.0286, + 0.0196, + 0.0115, + 0.0046, + -0.0008, + -0.0046, + -0.0066, + -0.0066, + -0.0047, + -0.0009, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0085, + 0.0579, + 0.1153, + 0.1806, + 0.2535, + 0.3338, + 0.4211, + 0.5149, + 0.6145, + 0.7192, + 0.8281, + 0.9402, + 1.0544, + 1.1697, + 1.2847, + 1.3828, + 1.3942, + 1.4003, + 1.4009, + 1.396, + 1.3857, + 1.3701, + 1.3493, + 1.3235, + 1.293, + 1.2581, + 1.2192, + 1.1767, + 1.1311, + 1.0827, + 1.0322, + 0.98, + 0.9267, + 0.8728, + 0.8187, + 0.7651, + 0.7123, + 0.6608, + 0.6109, + 0.5631, + 0.5176, + 0.4746, + 0.4345, + 0.3972, + 0.363, + -0.153, + -0.1574, + -0.1595, + -0.1596, + -0.1576, + -0.1535, + -0.1477, + -0.14, + -0.1307, + -0.12, + -0.1081, + -0.0951, + -0.0812, + -0.0668, + -0.0519, + -0.0369, + -0.0219, + -0.0072, + 0.007, + 0.0205, + 0.033, + 0.0445, + 0.0548, + 0.0636, + 0.0709, + 0.0766, + 0.0806, + 0.0828, + 0.0832, + 0.08, + 0.0712, + 0.0615, + 0.0511, + 0.0406, + 0.0303, + 0.0207, + 0.012, + 0.0045, + -0.0014, + -0.0055, + -0.0077, + -0.0079, + -0.006, + -0.002, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0183, + 0.072, + 0.1331, + 0.2012, + 0.2762, + 0.3576, + 0.4449, + 0.5375, + 0.6345, + 0.7353, + 0.8389, + 0.9442, + 1.0502, + 1.1559, + 1.2599, + 1.2963, + 1.2996, + 1.2979, + 1.2912, + 1.2796, + 1.2632, + 1.2422, + 1.2167, + 1.187, + 1.1534, + 1.1163, + 1.0761, + 1.0332, + 0.9879, + 0.9409, + 0.8926, + 0.8433, + 0.7937, + 0.7442, + 0.6951, + 0.647, + 0.6002, + 0.5551, + 0.5119, + 0.4709, + 0.4324, + 0.3964, + 0.3631, + 0.3326, + -0.1445, + -0.1473, + -0.1479, + -0.1464, + -0.1428, + -0.1373, + -0.13, + -0.121, + -0.1104, + -0.0986, + -0.0857, + -0.0718, + -0.0573, + -0.0424, + -0.0273, + -0.0122, + 0.0025, + 0.0168, + 0.0303, + 0.0429, + 0.0544, + 0.0646, + 0.0733, + 0.0804, + 0.0859, + 0.0895, + 0.0914, + 0.0914, + 0.0895, + 0.0812, + 0.0701, + 0.0584, + 0.0466, + 0.0351, + 0.0242, + 0.0144, + 0.006, + -0.0008, + -0.0057, + -0.0086, + -0.0092, + -0.0076, + -0.0037, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0334, + 0.0907, + 0.1547, + 0.2249, + 0.3009, + 0.3822, + 0.4683, + 0.5583, + 0.6515, + 0.747, + 0.8439, + 0.9413, + 1.038, + 1.133, + 1.202, + 1.2027, + 1.1988, + 1.1905, + 1.1777, + 1.1607, + 1.1395, + 1.1144, + 1.0855, + 1.0534, + 1.0181, + 0.9802, + 0.9399, + 0.8978, + 0.8542, + 0.8096, + 0.7644, + 0.7189, + 0.6738, + 0.6292, + 0.5856, + 0.5434, + 0.5027, + 0.464, + 0.4273, + 0.393, + 0.361, + 0.3315, + 0.3045, + -0.1339, + -0.135, + -0.1339, + -0.1307, + -0.1255, + -0.1183, + -0.1094, + -0.0989, + -0.087, + -0.0739, + -0.0599, + -0.0451, + -0.0299, + -0.0145, + 0.0009, + 0.016, + 0.0306, + 0.0444, + 0.0572, + 0.0689, + 0.0792, + 0.0879, + 0.095, + 0.1004, + 0.1038, + 0.1054, + 0.1049, + 0.1026, + 0.0973, + 0.0844, + 0.0709, + 0.0572, + 0.0438, + 0.0312, + 0.0197, + 0.0097, + 0.0015, + -0.0047, + -0.0086, + -0.0101, + -0.0092, + -0.0057, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0533, + 0.1135, + 0.1794, + 0.2506, + 0.3265, + 0.4065, + 0.4899, + 0.5761, + 0.6641, + 0.7532, + 0.8423, + 0.9307, + 1.0172, + 1.101, + 1.1098, + 1.104, + 1.0942, + 1.0804, + 1.0628, + 1.0416, + 1.0169, + 0.9891, + 0.9583, + 0.9249, + 0.8893, + 0.8517, + 0.8126, + 0.7724, + 0.7314, + 0.69, + 0.6487, + 0.6077, + 0.5675, + 0.5282, + 0.4904, + 0.454, + 0.4195, + 0.387, + 0.3566, + 0.3284, + 0.3024, + 0.2787, + -0.1214, + -0.1206, + -0.1177, + -0.1126, + -0.1055, + -0.0966, + -0.086, + -0.0739, + -0.0605, + -0.0461, + -0.0309, + -0.0152, + 0.0008, + 0.0168, + 0.0325, + 0.0477, + 0.062, + 0.0754, + 0.0875, + 0.0982, + 0.1072, + 0.1145, + 0.1199, + 0.1233, + 0.1247, + 0.124, + 0.1212, + 0.1163, + 0.1054, + 0.0895, + 0.0733, + 0.0575, + 0.0425, + 0.0287, + 0.0165, + 0.0063, + -0.0017, + -0.0073, + -0.0102, + -0.0105, + -0.0079, + -0.0027, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0206, + 0.0775, + 0.1396, + 0.2063, + 0.2772, + 0.3517, + 0.4291, + 0.5087, + 0.5897, + 0.6714, + 0.7529, + 0.8334, + 0.9119, + 0.9877, + 1.0212, + 1.0137, + 1.0025, + 0.9879, + 0.9699, + 0.9488, + 0.9247, + 0.8978, + 0.8685, + 0.837, + 0.8036, + 0.7687, + 0.7326, + 0.6956, + 0.6582, + 0.6206, + 0.5832, + 0.5462, + 0.5101, + 0.4751, + 0.4413, + 0.4091, + 0.3786, + 0.35, + 0.3233, + 0.2986, + 0.2759, + 0.2553, + -0.1069, + -0.1041, + -0.0992, + -0.0921, + -0.0831, + -0.0723, + -0.0599, + -0.046, + -0.0311, + -0.0153, + 0.0012, + 0.018, + 0.0348, + 0.0513, + 0.0674, + 0.0826, + 0.0968, + 0.1097, + 0.121, + 0.1307, + 0.1384, + 0.1442, + 0.1478, + 0.1492, + 0.1484, + 0.1454, + 0.1401, + 0.1326, + 0.1154, + 0.0963, + 0.0774, + 0.0593, + 0.0425, + 0.0275, + 0.0145, + 0.004, + -0.0039, + -0.0088, + -0.0108, + -0.0098, + -0.0058, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0463, + 0.105, + 0.1677, + 0.2341, + 0.3035, + 0.3753, + 0.4488, + 0.5233, + 0.5982, + 0.6725, + 0.7456, + 0.8166, + 0.8849, + 0.9372, + 0.9281, + 0.9158, + 0.9005, + 0.8822, + 0.8613, + 0.8378, + 0.812, + 0.7842, + 0.7545, + 0.7234, + 0.6911, + 0.6579, + 0.6242, + 0.5901, + 0.5561, + 0.5225, + 0.4894, + 0.4572, + 0.4261, + 0.3964, + 0.368, + 0.3413, + 0.3163, + 0.2931, + 0.2717, + 0.2521, + 0.2344, + -0.0905, + -0.0857, + -0.0786, + -0.0695, + -0.0584, + -0.0455, + -0.0312, + -0.0156, + 0.0011, + 0.0184, + 0.0362, + 0.054, + 0.0717, + 0.0889, + 0.1053, + 0.1207, + 0.1347, + 0.1471, + 0.1576, + 0.1662, + 0.1727, + 0.1768, + 0.1786, + 0.1779, + 0.1749, + 0.1693, + 0.1615, + 0.1499, + 0.1271, + 0.1046, + 0.0829, + 0.0624, + 0.0438, + 0.0273, + 0.0135, + 0.0027, + -0.0051, + -0.0096, + -0.0107, + -0.0084, + -0.0029, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0196, + 0.0752, + 0.1343, + 0.1966, + 0.2613, + 0.3279, + 0.3958, + 0.4643, + 0.5327, + 0.6004, + 0.6666, + 0.7307, + 0.7919, + 0.8498, + 0.8473, + 0.8341, + 0.8182, + 0.7998, + 0.7792, + 0.7564, + 0.7317, + 0.7054, + 0.6777, + 0.6488, + 0.619, + 0.5887, + 0.558, + 0.5273, + 0.4967, + 0.4667, + 0.4373, + 0.4089, + 0.3815, + 0.3555, + 0.3308, + 0.3076, + 0.286, + 0.2661, + 0.2477, + 0.231, + 0.2158, + -0.0724, + -0.0653, + -0.056, + -0.0447, + -0.0314, + -0.0165, + -0.0001, + 0.0174, + 0.0358, + 0.0547, + 0.0739, + 0.0929, + 0.1115, + 0.1294, + 0.1462, + 0.1617, + 0.1755, + 0.1874, + 0.1972, + 0.2047, + 0.2097, + 0.2122, + 0.2121, + 0.2093, + 0.2039, + 0.1958, + 0.1853, + 0.1671, + 0.1404, + 0.1144, + 0.0896, + 0.0666, + 0.046, + 0.0282, + 0.0134, + 0.0021, + -0.0056, + -0.0096, + -0.0099, + -0.0065, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0499, + 0.1058, + 0.1642, + 0.2247, + 0.2865, + 0.3492, + 0.4121, + 0.4746, + 0.536, + 0.5958, + 0.6534, + 0.7081, + 0.7595, + 0.7715, + 0.7574, + 0.7411, + 0.7228, + 0.7025, + 0.6805, + 0.6571, + 0.6323, + 0.6064, + 0.5797, + 0.5525, + 0.5249, + 0.4971, + 0.4696, + 0.4424, + 0.4158, + 0.3899, + 0.365, + 0.3412, + 0.3186, + 0.2974, + 0.2775, + 0.2591, + 0.2421, + 0.2266, + 0.2124, + 0.1996, + -0.0525, + -0.0432, + -0.0315, + -0.0179, + -0.0023, + 0.0148, + 0.0333, + 0.0528, + 0.073, + 0.0935, + 0.1141, + 0.1344, + 0.154, + 0.1726, + 0.1898, + 0.2054, + 0.219, + 0.2304, + 0.2394, + 0.2458, + 0.2495, + 0.2503, + 0.2482, + 0.2432, + 0.2354, + 0.2248, + 0.2115, + 0.1861, + 0.1552, + 0.1255, + 0.0976, + 0.072, + 0.0493, + 0.0299, + 0.0141, + 0.0023, + -0.0055, + -0.0092, + -0.0087, + -0.0042, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0288, + 0.0817, + 0.1366, + 0.1931, + 0.2505, + 0.3084, + 0.3661, + 0.423, + 0.4787, + 0.5326, + 0.5841, + 0.6328, + 0.6782, + 0.7005, + 0.6858, + 0.6693, + 0.6511, + 0.6313, + 0.6102, + 0.5879, + 0.5647, + 0.5407, + 0.5162, + 0.4914, + 0.4664, + 0.4416, + 0.4171, + 0.393, + 0.3697, + 0.3471, + 0.3256, + 0.3051, + 0.2858, + 0.2677, + 0.2509, + 0.2354, + 0.2212, + 0.2082, + 0.1964, + 0.1856, + -0.0311, + -0.0193, + -0.0053, + 0.0108, + 0.0287, + 0.0481, + 0.0687, + 0.0903, + 0.1124, + 0.1347, + 0.1568, + 0.1783, + 0.199, + 0.2183, + 0.236, + 0.2517, + 0.2651, + 0.276, + 0.2842, + 0.2895, + 0.2917, + 0.2908, + 0.2868, + 0.2796, + 0.2693, + 0.256, + 0.2399, + 0.2066, + 0.1715, + 0.1379, + 0.1067, + 0.0783, + 0.0534, + 0.0323, + 0.0154, + 0.0029, + -0.005, + -0.0084, + -0.0073, + -0.0019, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0114, + 0.0616, + 0.1133, + 0.1661, + 0.2195, + 0.2728, + 0.3257, + 0.3775, + 0.4278, + 0.4762, + 0.5221, + 0.5652, + 0.6051, + 0.6343, + 0.6192, + 0.6026, + 0.5846, + 0.5654, + 0.5453, + 0.5243, + 0.5026, + 0.4805, + 0.4581, + 0.4357, + 0.4133, + 0.3912, + 0.3696, + 0.3486, + 0.3283, + 0.3089, + 0.2905, + 0.2731, + 0.2568, + 0.2417, + 0.2277, + 0.2149, + 0.2031, + 0.1924, + 0.1827, + 0.1739, + -0.0082, + 0.0061, + 0.0227, + 0.0412, + 0.0615, + 0.0833, + 0.1062, + 0.1298, + 0.1539, + 0.178, + 0.2016, + 0.2245, + 0.2462, + 0.2662, + 0.2844, + 0.3003, + 0.3136, + 0.324, + 0.3314, + 0.3355, + 0.3363, + 0.3337, + 0.3276, + 0.3181, + 0.3054, + 0.2894, + 0.2696, + 0.2287, + 0.1891, + 0.1516, + 0.1169, + 0.0857, + 0.0584, + 0.0355, + 0.0173, + 0.0041, + -0.0041, + -0.0074, + -0.0058, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0451, + 0.0939, + 0.1433, + 0.1928, + 0.242, + 0.2903, + 0.3374, + 0.3827, + 0.426, + 0.4667, + 0.5047, + 0.5395, + 0.571, + 0.5574, + 0.5408, + 0.5232, + 0.5048, + 0.4856, + 0.4659, + 0.4459, + 0.4256, + 0.4054, + 0.3852, + 0.3653, + 0.3459, + 0.327, + 0.3089, + 0.2915, + 0.2751, + 0.2595, + 0.245, + 0.2316, + 0.2191, + 0.2077, + 0.1973, + 0.1879, + 0.1793, + 0.1714, + 0.1642, + 0.0161, + 0.033, + 0.0521, + 0.0732, + 0.096, + 0.1202, + 0.1454, + 0.1712, + 0.1973, + 0.2232, + 0.2484, + 0.2726, + 0.2954, + 0.3163, + 0.335, + 0.351, + 0.3642, + 0.3742, + 0.3807, + 0.3838, + 0.3831, + 0.3787, + 0.3706, + 0.3589, + 0.3436, + 0.3249, + 0.2984, + 0.2525, + 0.2083, + 0.1666, + 0.1283, + 0.094, + 0.0642, + 0.0394, + 0.0198, + 0.0057, + -0.003, + -0.0063, + -0.0043, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0319, + 0.0779, + 0.1241, + 0.1701, + 0.2153, + 0.2595, + 0.3021, + 0.3428, + 0.3813, + 0.4173, + 0.4505, + 0.4807, + 0.5078, + 0.5003, + 0.484, + 0.4669, + 0.4492, + 0.4311, + 0.4128, + 0.3943, + 0.3759, + 0.3577, + 0.3398, + 0.3223, + 0.3054, + 0.2892, + 0.2737, + 0.2591, + 0.2454, + 0.2326, + 0.2208, + 0.2099, + 0.1999, + 0.1909, + 0.1827, + 0.1752, + 0.1685, + 0.1622, + 0.1565, + 0.0417, + 0.0613, + 0.083, + 0.1067, + 0.1321, + 0.1587, + 0.1862, + 0.2143, + 0.2424, + 0.2701, + 0.297, + 0.3226, + 0.3465, + 0.3683, + 0.3875, + 0.4037, + 0.4168, + 0.4263, + 0.4321, + 0.434, + 0.4319, + 0.4257, + 0.4156, + 0.4016, + 0.3838, + 0.3624, + 0.329, + 0.2778, + 0.2289, + 0.1829, + 0.1409, + 0.1034, + 0.0709, + 0.044, + 0.0228, + 0.0076, + -0.0017, + -0.0052, + -0.0031, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0217, + 0.065, + 0.1082, + 0.1508, + 0.1924, + 0.2326, + 0.2711, + 0.3076, + 0.3417, + 0.3733, + 0.4022, + 0.4282, + 0.4512, + 0.4478, + 0.4317, + 0.4152, + 0.3985, + 0.3815, + 0.3646, + 0.3477, + 0.3312, + 0.3149, + 0.2992, + 0.2841, + 0.2696, + 0.2559, + 0.2429, + 0.2309, + 0.2197, + 0.2095, + 0.2001, + 0.1916, + 0.1839, + 0.177, + 0.1707, + 0.1651, + 0.1599, + 0.1551, + 0.1505, + 0.0685, + 0.0907, + 0.1152, + 0.1415, + 0.1694, + 0.1986, + 0.2285, + 0.2588, + 0.289, + 0.3186, + 0.3472, + 0.3742, + 0.3993, + 0.4219, + 0.4416, + 0.4582, + 0.4711, + 0.4802, + 0.4852, + 0.486, + 0.4825, + 0.4746, + 0.4625, + 0.4462, + 0.4259, + 0.4018, + 0.3614, + 0.3049, + 0.251, + 0.2007, + 0.1547, + 0.1138, + 0.0786, + 0.0493, + 0.0264, + 0.0099, + -0.0002, + -0.0041, + -0.002, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.014, + 0.0549, + 0.0952, + 0.1346, + 0.1727, + 0.2093, + 0.2439, + 0.2764, + 0.3065, + 0.3341, + 0.359, + 0.3811, + 0.4005, + 0.3995, + 0.3839, + 0.3681, + 0.3523, + 0.3366, + 0.3211, + 0.3058, + 0.2911, + 0.2768, + 0.2632, + 0.2503, + 0.2381, + 0.2268, + 0.2162, + 0.2066, + 0.1978, + 0.1899, + 0.1828, + 0.1764, + 0.1708, + 0.1657, + 0.1612, + 0.1572, + 0.1534, + 0.1498, + 0.1463, + 0.0964, + 0.1213, + 0.1485, + 0.1775, + 0.208, + 0.2397, + 0.2721, + 0.3046, + 0.337, + 0.3685, + 0.3988, + 0.4273, + 0.4535, + 0.477, + 0.4974, + 0.5141, + 0.527, + 0.5357, + 0.54, + 0.5397, + 0.5348, + 0.5252, + 0.5111, + 0.4925, + 0.4697, + 0.443, + 0.3959, + 0.3339, + 0.2749, + 0.22, + 0.1699, + 0.1255, + 0.0872, + 0.0555, + 0.0306, + 0.0126, + 0.0015, + -0.003, + -0.0012, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0086, + 0.047, + 0.0846, + 0.121, + 0.1559, + 0.1889, + 0.22, + 0.2488, + 0.2751, + 0.299, + 0.3203, + 0.339, + 0.3551, + 0.3553, + 0.3403, + 0.3253, + 0.3105, + 0.2961, + 0.282, + 0.2684, + 0.2554, + 0.2431, + 0.2315, + 0.2207, + 0.2108, + 0.2017, + 0.1934, + 0.186, + 0.1794, + 0.1736, + 0.1686, + 0.1642, + 0.1604, + 0.157, + 0.1541, + 0.1514, + 0.1488, + 0.1462, + 0.1435, + 0.1252, + 0.1529, + 0.1827, + 0.2145, + 0.2477, + 0.2819, + 0.3167, + 0.3516, + 0.3861, + 0.4196, + 0.4516, + 0.4816, + 0.509, + 0.5335, + 0.5544, + 0.5715, + 0.5843, + 0.5927, + 0.5962, + 0.5949, + 0.5886, + 0.5774, + 0.5613, + 0.5405, + 0.5153, + 0.4859, + 0.4325, + 0.3649, + 0.3007, + 0.241, + 0.1867, + 0.1385, + 0.097, + 0.0626, + 0.0355, + 0.0158, + 0.0034, + -0.002, + -0.0007, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0053, + 0.0413, + 0.0762, + 0.1097, + 0.1414, + 0.1712, + 0.1989, + 0.2242, + 0.2472, + 0.2677, + 0.2857, + 0.3013, + 0.3145, + 0.3149, + 0.3006, + 0.2865, + 0.2729, + 0.2597, + 0.2471, + 0.2352, + 0.2239, + 0.2135, + 0.2039, + 0.1952, + 0.1873, + 0.1803, + 0.1741, + 0.1688, + 0.1643, + 0.1604, + 0.1573, + 0.1546, + 0.1525, + 0.1506, + 0.149, + 0.1475, + 0.1459, + 0.1441, + 0.142, + 0.1548, + 0.1853, + 0.2179, + 0.2524, + 0.2882, + 0.325, + 0.3623, + 0.3995, + 0.4362, + 0.4716, + 0.5054, + 0.5369, + 0.5656, + 0.591, + 0.6126, + 0.6301, + 0.6429, + 0.6509, + 0.6538, + 0.6515, + 0.6439, + 0.6311, + 0.6131, + 0.5902, + 0.5625, + 0.5306, + 0.4714, + 0.3981, + 0.3285, + 0.2639, + 0.2051, + 0.153, + 0.1081, + 0.0708, + 0.0412, + 0.0196, + 0.0057, + -0.0009, + -0.0004, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0036, + 0.0373, + 0.0696, + 0.1003, + 0.129, + 0.1557, + 0.1802, + 0.2024, + 0.2222, + 0.2396, + 0.2547, + 0.2675, + 0.2782, + 0.278, + 0.2645, + 0.2515, + 0.239, + 0.2272, + 0.2161, + 0.2058, + 0.1963, + 0.1877, + 0.18, + 0.1732, + 0.1674, + 0.1623, + 0.1582, + 0.1548, + 0.1521, + 0.1501, + 0.1486, + 0.1475, + 0.1468, + 0.1463, + 0.1458, + 0.1453, + 0.1445, + 0.1434, + 0.1417, + 0.1851, + 0.2184, + 0.2538, + 0.291, + 0.3295, + 0.3689, + 0.4087, + 0.4483, + 0.4871, + 0.5245, + 0.5601, + 0.5931, + 0.6231, + 0.6495, + 0.6719, + 0.6897, + 0.7026, + 0.7103, + 0.7126, + 0.7094, + 0.7005, + 0.6862, + 0.6663, + 0.6413, + 0.6114, + 0.5769, + 0.513, + 0.4337, + 0.3586, + 0.2889, + 0.2255, + 0.1692, + 0.1206, + 0.0802, + 0.048, + 0.0241, + 0.0083, + 0.0003, + -0.0003, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0034, + 0.0347, + 0.0645, + 0.0924, + 0.1184, + 0.1421, + 0.1636, + 0.1828, + 0.1997, + 0.2143, + 0.2267, + 0.237, + 0.2455, + 0.2445, + 0.2319, + 0.22, + 0.2087, + 0.1983, + 0.1887, + 0.18, + 0.1723, + 0.1655, + 0.1597, + 0.1547, + 0.1507, + 0.1476, + 0.1453, + 0.1437, + 0.1427, + 0.1423, + 0.1423, + 0.1427, + 0.1432, + 0.1438, + 0.1443, + 0.1445, + 0.1444, + 0.1438, + 0.1425, + 0.2161, + 0.2521, + 0.2903, + 0.3303, + 0.3715, + 0.4135, + 0.4557, + 0.4976, + 0.5386, + 0.5781, + 0.6155, + 0.6501, + 0.6814, + 0.7089, + 0.7319, + 0.7502, + 0.7632, + 0.7707, + 0.7725, + 0.7684, + 0.7584, + 0.7426, + 0.721, + 0.6939, + 0.6617, + 0.6248, + 0.5574, + 0.4721, + 0.3914, + 0.3164, + 0.2481, + 0.1874, + 0.1349, + 0.091, + 0.0558, + 0.0294, + 0.0115, + 0.0018, + -0.0003, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0043, + 0.0333, + 0.0606, + 0.0859, + 0.1091, + 0.13, + 0.1487, + 0.1652, + 0.1793, + 0.1914, + 0.2014, + 0.2096, + 0.2161, + 0.214, + 0.2025, + 0.1917, + 0.1818, + 0.1728, + 0.1647, + 0.1576, + 0.1516, + 0.1465, + 0.1425, + 0.1394, + 0.1371, + 0.1358, + 0.1351, + 0.1352, + 0.1358, + 0.1369, + 0.1382, + 0.1398, + 0.1414, + 0.143, + 0.1443, + 0.1452, + 0.1455, + 0.1452, + 0.144, + 0.2475, + 0.2864, + 0.3274, + 0.37, + 0.4139, + 0.4585, + 0.5032, + 0.5475, + 0.5907, + 0.6322, + 0.6714, + 0.7077, + 0.7403, + 0.7689, + 0.7927, + 0.8115, + 0.8247, + 0.8321, + 0.8334, + 0.8286, + 0.8175, + 0.8002, + 0.777, + 0.748, + 0.7137, + 0.6744, + 0.605, + 0.5135, + 0.427, + 0.3465, + 0.2732, + 0.2079, + 0.1512, + 0.1036, + 0.0651, + 0.0359, + 0.0155, + 0.0037, + -0.0001, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0062, + 0.0328, + 0.0576, + 0.0803, + 0.1009, + 0.1192, + 0.1352, + 0.1491, + 0.1608, + 0.1705, + 0.1784, + 0.1847, + 0.1897, + 0.1864, + 0.1759, + 0.1664, + 0.1578, + 0.1503, + 0.1438, + 0.1383, + 0.134, + 0.1306, + 0.1283, + 0.1268, + 0.1263, + 0.1266, + 0.1276, + 0.1291, + 0.1311, + 0.1335, + 0.1361, + 0.1387, + 0.1413, + 0.1436, + 0.1455, + 0.1469, + 0.1476, + 0.1474, + 0.1463, + 0.2794, + 0.321, + 0.3647, + 0.4101, + 0.4567, + 0.5038, + 0.5511, + 0.5977, + 0.6432, + 0.6867, + 0.7278, + 0.7657, + 0.7998, + 0.8294, + 0.8542, + 0.8735, + 0.887, + 0.8943, + 0.8953, + 0.8898, + 0.8777, + 0.8592, + 0.8344, + 0.8036, + 0.7672, + 0.7257, + 0.6561, + 0.5584, + 0.4658, + 0.3797, + 0.3011, + 0.2309, + 0.1698, + 0.1182, + 0.0761, + 0.0437, + 0.0205, + 0.0063, + 0.0003, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0087, + 0.0331, + 0.0554, + 0.0755, + 0.0935, + 0.1093, + 0.1228, + 0.1343, + 0.1438, + 0.1514, + 0.1575, + 0.1621, + 0.1657, + 0.1614, + 0.1521, + 0.1439, + 0.1367, + 0.1306, + 0.1257, + 0.1219, + 0.1191, + 0.1174, + 0.1167, + 0.117, + 0.118, + 0.1198, + 0.1223, + 0.1252, + 0.1285, + 0.132, + 0.1357, + 0.1392, + 0.1425, + 0.1455, + 0.1479, + 0.1496, + 0.1505, + 0.1504, + 0.1492, + 0.3116, + 0.3559, + 0.4024, + 0.4505, + 0.4997, + 0.5494, + 0.5991, + 0.6482, + 0.6959, + 0.7415, + 0.7845, + 0.8241, + 0.8596, + 0.8905, + 0.9162, + 0.9361, + 0.95, + 0.9574, + 0.9581, + 0.952, + 0.939, + 0.9194, + 0.8931, + 0.8607, + 0.8224, + 0.7787, + 0.7112, + 0.607, + 0.5083, + 0.4163, + 0.3322, + 0.2569, + 0.191, + 0.1351, + 0.0891, + 0.0531, + 0.0268, + 0.0098, + 0.0013, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0117, + 0.0337, + 0.0535, + 0.0712, + 0.0868, + 0.1001, + 0.1113, + 0.1205, + 0.128, + 0.1338, + 0.1382, + 0.1415, + 0.144, + 0.1388, + 0.1308, + 0.1239, + 0.1182, + 0.1137, + 0.1103, + 0.108, + 0.1069, + 0.1068, + 0.1077, + 0.1095, + 0.112, + 0.1153, + 0.119, + 0.1232, + 0.1277, + 0.1322, + 0.1367, + 0.1411, + 0.145, + 0.1484, + 0.1512, + 0.1531, + 0.154, + 0.1539, + 0.1525, + 0.3439, + 0.391, + 0.4402, + 0.491, + 0.5428, + 0.5952, + 0.6474, + 0.6988, + 0.7487, + 0.7965, + 0.8414, + 0.8827, + 0.9198, + 0.9519, + 0.9786, + 0.9993, + 1.0136, + 1.0212, + 1.0217, + 1.0152, + 1.0015, + 0.9808, + 0.9533, + 0.9193, + 0.8792, + 0.8335, + 0.7707, + 0.66, + 0.5549, + 0.4568, + 0.3669, + 0.2862, + 0.2153, + 0.1547, + 0.1044, + 0.0646, + 0.0347, + 0.0145, + 0.0031, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0149, + 0.0345, + 0.0519, + 0.0672, + 0.0803, + 0.0914, + 0.1004, + 0.1076, + 0.1132, + 0.1174, + 0.1204, + 0.1226, + 0.1243, + 0.1185, + 0.1118, + 0.1064, + 0.1021, + 0.0991, + 0.0973, + 0.0966, + 0.0971, + 0.0985, + 0.1009, + 0.1042, + 0.1082, + 0.1127, + 0.1177, + 0.123, + 0.1285, + 0.1339, + 0.1392, + 0.1441, + 0.1486, + 0.1523, + 0.1553, + 0.1573, + 0.1582, + 0.1578, + 0.1561, + 0.3764, + 0.4262, + 0.4781, + 0.5315, + 0.586, + 0.6409, + 0.6956, + 0.7494, + 0.8017, + 0.8516, + 0.8984, + 0.9415, + 0.9802, + 1.0137, + 1.0415, + 1.063, + 1.0779, + 1.0857, + 1.0863, + 1.0795, + 1.0652, + 1.0436, + 1.0149, + 0.9795, + 0.9378, + 0.8903, + 0.835, + 0.7176, + 0.606, + 0.5016, + 0.4057, + 0.3193, + 0.2431, + 0.1774, + 0.1225, + 0.0784, + 0.0447, + 0.0208, + 0.0062, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0181, + 0.0353, + 0.0503, + 0.0633, + 0.0741, + 0.0829, + 0.0899, + 0.0953, + 0.0992, + 0.102, + 0.1039, + 0.1053, + 0.1064, + 0.1003, + 0.095, + 0.091, + 0.0883, + 0.0868, + 0.0866, + 0.0875, + 0.0895, + 0.0924, + 0.0963, + 0.101, + 0.1062, + 0.112, + 0.1181, + 0.1244, + 0.1308, + 0.137, + 0.1429, + 0.1483, + 0.1531, + 0.157, + 0.1601, + 0.162, + 0.1627, + 0.162, + 0.1599, + 0.4089, + 0.4614, + 0.516, + 0.572, + 0.6291, + 0.6866, + 0.7438, + 0.8, + 0.8546, + 0.9067, + 0.9555, + 1.0005, + 1.0408, + 1.0757, + 1.1048, + 1.1273, + 1.1428, + 1.1511, + 1.1518, + 1.1448, + 1.1301, + 1.1078, + 1.0781, + 1.0415, + 0.9983, + 0.9491, + 0.8946, + 0.7805, + 0.6622, + 0.5513, + 0.4491, + 0.3567, + 0.2748, + 0.2038, + 0.1439, + 0.095, + 0.057, + 0.0291, + 0.0108, + 0.0011, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0042, + 0.0211, + 0.0358, + 0.0485, + 0.0592, + 0.0678, + 0.0746, + 0.0797, + 0.0834, + 0.0859, + 0.0875, + 0.0885, + 0.0893, + 0.0892, + 0.0841, + 0.0803, + 0.0778, + 0.0766, + 0.0767, + 0.078, + 0.0805, + 0.084, + 0.0884, + 0.0937, + 0.0996, + 0.1061, + 0.113, + 0.1201, + 0.1273, + 0.1344, + 0.1412, + 0.1476, + 0.1534, + 0.1584, + 0.1624, + 0.1654, + 0.1672, + 0.1676, + 0.1665, + 0.1639, + 0.4414, + 0.4966, + 0.5537, + 0.6124, + 0.6721, + 0.7322, + 0.7919, + 0.8505, + 0.9074, + 0.9617, + 1.0127, + 1.0595, + 1.1016, + 1.1381, + 1.1684, + 1.192, + 1.2084, + 1.2172, + 1.2182, + 1.2113, + 1.1963, + 1.1735, + 1.143, + 1.1053, + 1.0608, + 1.0101, + 0.9539, + 0.8492, + 0.724, + 0.6064, + 0.4977, + 0.399, + 0.311, + 0.2342, + 0.1689, + 0.115, + 0.0722, + 0.04, + 0.0175, + 0.0041, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0091, + 0.0235, + 0.036, + 0.0463, + 0.0548, + 0.0613, + 0.0662, + 0.0696, + 0.0718, + 0.073, + 0.0737, + 0.0741, + 0.0746, + 0.0734, + 0.0698, + 0.0675, + 0.0666, + 0.067, + 0.0687, + 0.0716, + 0.0755, + 0.0805, + 0.0864, + 0.0929, + 0.1001, + 0.1077, + 0.1156, + 0.1236, + 0.1316, + 0.1393, + 0.1466, + 0.1533, + 0.1593, + 0.1644, + 0.1684, + 0.1712, + 0.1727, + 0.1727, + 0.1712, + 0.168, + 0.4738, + 0.5315, + 0.5913, + 0.6526, + 0.7149, + 0.7775, + 0.8397, + 0.9008, + 0.9601, + 1.0166, + 1.0698, + 1.1186, + 1.1625, + 1.2007, + 1.2325, + 1.2573, + 1.2747, + 1.2842, + 1.2857, + 1.2789, + 1.2639, + 1.2407, + 1.2096, + 1.1711, + 1.1255, + 1.0735, + 1.0157, + 0.9243, + 0.792, + 0.6675, + 0.552, + 0.4466, + 0.3522, + 0.2694, + 0.1983, + 0.1389, + 0.0909, + 0.0538, + 0.0268, + 0.0091, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0132, + 0.0254, + 0.0355, + 0.0436, + 0.0499, + 0.0545, + 0.0576, + 0.0595, + 0.0604, + 0.0607, + 0.0606, + 0.0606, + 0.061, + 0.0594, + 0.0574, + 0.0567, + 0.0574, + 0.0594, + 0.0627, + 0.0671, + 0.0726, + 0.079, + 0.0862, + 0.0941, + 0.1024, + 0.1111, + 0.1199, + 0.1286, + 0.1372, + 0.1454, + 0.1531, + 0.16, + 0.1661, + 0.1711, + 0.1749, + 0.1774, + 0.1785, + 0.178, + 0.1759, + 0.1721, + 0.506, + 0.5663, + 0.6287, + 0.6926, + 0.7574, + 0.8226, + 0.8873, + 0.9509, + 1.0126, + 1.0715, + 1.1268, + 1.1778, + 1.2236, + 1.2636, + 1.2969, + 1.3231, + 1.3417, + 1.3521, + 1.3542, + 1.3479, + 1.3329, + 1.3096, + 1.2782, + 1.2389, + 1.1924, + 1.1393, + 1.0802, + 1.0064, + 0.867, + 0.7352, + 0.6126, + 0.5003, + 0.3992, + 0.3098, + 0.2325, + 0.1671, + 0.1135, + 0.0712, + 0.0393, + 0.017, + 0.0032, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.0049, + 0.0166, + 0.0263, + 0.0342, + 0.0402, + 0.0444, + 0.0472, + 0.0487, + 0.0493, + 0.0491, + 0.0487, + 0.0482, + 0.0481, + 0.0487, + 0.0473, + 0.0468, + 0.0478, + 0.0502, + 0.0538, + 0.0587, + 0.0647, + 0.0717, + 0.0795, + 0.088, + 0.0971, + 0.1065, + 0.116, + 0.1257, + 0.1351, + 0.1442, + 0.1527, + 0.1606, + 0.1676, + 0.1736, + 0.1785, + 0.182, + 0.1841, + 0.1846, + 0.1836, + 0.1808, + 0.1762, + 0.5273, + 0.5891, + 0.6532, + 0.7189, + 0.7856, + 0.8526, + 0.9192, + 0.9846, + 1.0481, + 1.1087, + 1.1658, + 1.2184, + 1.2658, + 1.3072, + 1.342, + 1.3694, + 1.3891, + 1.4005, + 1.4035, + 1.3977, + 1.3833, + 1.3603, + 1.329, + 1.2897, + 1.243, + 1.1895, + 1.1299, + 1.065, + 0.9339, + 0.7962, + 0.6675, + 0.5492, + 0.4421, + 0.3468, + 0.2637, + 0.1927, + 0.1337, + 0.0861, + 0.0492, + 0.0221, + 0.0038, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + -0.0057, + 0.0037, + 0.0129, + 0.0203, + 0.0259, + 0.0298, + 0.0322, + 0.0333, + 0.0334, + 0.0329, + 0.0319, + 0.031, + 0.0303, + 0.0304, + 0.0311, + 0.0308, + 0.0321, + 0.0348, + 0.0388, + 0.0441, + 0.0505, + 0.058, + 0.0664, + 0.0755, + 0.0851, + 0.0952, + 0.1055, + 0.1158, + 0.126, + 0.1358, + 0.1452, + 0.1539, + 0.1618, + 0.1687, + 0.1744, + 0.1789, + 0.1819, + 0.1835, + 0.1834, + 0.1816, + 0.178, + 0.1727, + 0.3105, + 0.3525, + 0.3981, + 0.4478, + 0.5006, + 0.5536, + 0.6064, + 0.6582, + 0.7086, + 0.7567, + 0.8021, + 0.8439, + 0.8818, + 0.9149, + 0.9429, + 0.9651, + 0.9813, + 0.991, + 0.994, + 0.9903, + 0.9797, + 0.9624, + 0.9385, + 0.9084, + 0.8723, + 0.831, + 0.7847, + 0.7343, + 0.6507, + 0.5398, + 0.4359, + 0.3399, + 0.2525, + 0.1743, + 0.1056, + 0.0463, + -0.0037, + -0.0447, + -0.0773, + -0.1021, + -0.1199, + -0.1316, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1347, + -0.1317, + -0.125, + -0.1197, + -0.1158, + -0.1131, + -0.1116, + -0.111, + -0.1113, + -0.1121, + -0.1132, + -0.1143, + -0.1152, + -0.1155, + -0.1151, + -0.1144, + -0.1132, + -0.1109, + -0.1075, + -0.1031, + -0.0977, + -0.0916, + -0.0847, + -0.0772, + -0.0693, + -0.061, + -0.0525, + -0.044, + -0.0356, + -0.0273, + -0.0195, + -0.0122, + -0.0055, + 0.0005, + 0.0056, + 0.0097, + 0.0127, + 0.0146, + 0.0153, + 0.0147, + 0.0127, + 0.0093, + 0.0045, + -0.0799, + -0.074, + -0.0618, + -0.0415, + -0.0145, + 0.0127, + 0.0398, + 0.0665, + 0.0923, + 0.1171, + 0.1405, + 0.1622, + 0.1817, + 0.199, + 0.2136, + 0.2253, + 0.234, + 0.2393, + 0.2413, + 0.2399, + 0.2349, + 0.2265, + 0.2148, + 0.1999, + 0.182, + 0.1613, + 0.1381, + 0.1128, + 0.0816, + 0.0238, + -0.0306, + -0.0811, + -0.1273, + -0.1688, + -0.2057, + -0.2378, + -0.2651, + -0.2879, + -0.3064, + -0.3209, + -0.3318, + -0.3395, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3444, + -0.3414, + -0.3389, + -0.3371, + -0.336, + -0.3354, + -0.3353, + -0.3356, + -0.3362, + -0.3369, + -0.3377, + -0.3383, + -0.3387, + -0.3387, + -0.3382, + -0.3375, + -0.3362, + -0.3343, + -0.3319, + -0.3291, + -0.3258, + -0.3221, + -0.3181, + -0.3139, + -0.3094, + -0.3049, + -0.3003, + -0.2958, + -0.2914, + -0.2872, + -0.2832, + -0.2795, + -0.2762, + -0.2733, + -0.271, + -0.2691, + -0.2678, + -0.2672, + -0.2672, + -0.2678, + -0.2691, + -0.2712, + -0.2739, + -0.4145, + -0.44, + -0.4569, + -0.462, + -0.4576, + -0.4528, + -0.4481, + -0.4435, + -0.439, + -0.4347, + -0.4306, + -0.4268, + -0.4233, + -0.4203, + -0.4177, + -0.4156, + -0.414, + -0.413, + -0.4126, + -0.4128, + -0.4135, + -0.4149, + -0.4168, + -0.4193, + -0.4223, + -0.4258, + -0.4297, + -0.434, + -0.4386, + -0.4473, + -0.457, + -0.466, + -0.4742, + -0.4817, + -0.4884, + -0.4943, + -0.4993, + -0.5036, + -0.5071, + -0.51, + -0.5122, + -0.5138, + -0.515, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5155, + -0.5152, + -0.5148, + -0.5146, + -0.5144, + -0.5143, + -0.5143, + -0.5144, + -0.5146, + -0.5147, + -0.5149, + -0.515, + -0.5151, + -0.5152, + -0.5151, + -0.515, + -0.5147, + -0.5144, + -0.5139, + -0.5134, + -0.5128, + -0.5122, + -0.5114, + -0.5107, + -0.5099, + -0.509, + -0.5082, + -0.5074, + -0.5066, + -0.5058, + -0.5051, + -0.5044, + -0.5038, + -0.5032, + -0.5028, + -0.5024, + -0.5022, + -0.502, + -0.5019, + -0.502, + -0.5022, + -0.5025, + -0.5029, + -0.5034, + -0.4829, + -0.5155, + -0.539, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4812, + -0.5146, + -0.5387, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4796, + -0.5138, + -0.5384, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.478, + -0.513, + -0.5382, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4765, + -0.5122, + -0.5379, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.475, + -0.5114, + -0.5377, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4736, + -0.5107, + -0.5374, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4723, + -0.5099, + -0.5372, + -0.5497, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.55, + -0.4119, + -0.4446, + -0.467, + -0.4749, + -0.4709, + -0.4665, + -0.4621, + -0.4577, + -0.4534, + -0.4492, + -0.4451, + -0.4411, + -0.4375, + -0.4341, + -0.431, + -0.4283, + -0.426, + -0.4242, + -0.4228, + -0.4219, + -0.4215, + -0.4217, + -0.4223, + -0.4235, + -0.4251, + -0.4272, + -0.4298, + -0.4327, + -0.436, + -0.4396, + -0.4435, + -0.4476, + -0.4518, + -0.4561, + -0.4625, + -0.4705, + -0.4778, + -0.4845, + -0.4906, + -0.496, + -0.5008, + -0.505, + -0.5087, + -0.5119, + -0.5146, + -0.5168, + -0.5188, + -0.5204, + -0.5217, + -0.5228, + -0.5237, + -0.5244, + -0.525, + -0.5255, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5259, + -0.5258, + -0.5257, + -0.5257, + -0.5257, + -0.5258, + -0.5259, + -0.5261, + -0.5264, + -0.5267, + -0.5271, + -0.5274, + -0.5278, + -0.5282, + -0.5286, + -0.529, + -0.5292, + -0.5294, + -0.5295, + -0.5294, + -0.5291, + -0.5285, + -0.5277, + -0.5268, + -0.5258, + -0.5247, + -0.5234, + -0.5221, + -0.5208, + -0.5194, + -0.518, + -0.5165, + -0.5151, + -0.5138, + -0.5125, + -0.5113, + -0.5103, + -0.5093, + -0.5085, + -0.5078, + -0.5073, + -0.507, + -0.5068, + -0.5067, + -0.5069, + -0.5071, + -0.5075, + -0.5081, + -0.5087, + -0.5095, + -0.5104, + -0.5113, + -0.5123, + -0.5134, + -0.5145, + -0.0102, + -0.0051, + 0.0083, + 0.0328, + 0.0664, + 0.1008, + 0.1354, + 0.17, + 0.2044, + 0.238, + 0.2706, + 0.3019, + 0.3314, + 0.3587, + 0.3836, + 0.4056, + 0.4245, + 0.4399, + 0.4518, + 0.4597, + 0.4638, + 0.4638, + 0.4598, + 0.4518, + 0.4399, + 0.4243, + 0.4053, + 0.3831, + 0.358, + 0.3305, + 0.3008, + 0.2693, + 0.2366, + 0.203, + 0.1688, + 0.1143, + 0.0541, + -0.0012, + -0.0514, + -0.0966, + -0.137, + -0.1727, + -0.204, + -0.2313, + -0.2547, + -0.2748, + -0.2918, + -0.3061, + -0.3181, + -0.3282, + -0.3365, + -0.3434, + -0.3491, + -0.3538, + -0.3577, + -0.3609, + -0.3635, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3652, + -0.3645, + -0.3638, + -0.3633, + -0.3631, + -0.3632, + -0.3637, + -0.3646, + -0.366, + -0.3678, + -0.37, + -0.3727, + -0.3756, + -0.3788, + -0.3822, + -0.3855, + -0.3888, + -0.3917, + -0.3941, + -0.3958, + -0.3965, + -0.3961, + -0.3944, + -0.3905, + -0.3843, + -0.3771, + -0.3688, + -0.3596, + -0.3495, + -0.3387, + -0.3273, + -0.3155, + -0.3035, + -0.2914, + -0.2793, + -0.2676, + -0.2564, + -0.2459, + -0.2362, + -0.2275, + -0.2199, + -0.2135, + -0.2085, + -0.2048, + -0.2026, + -0.2017, + -0.2021, + -0.2039, + -0.207, + -0.2112, + -0.2164, + -0.2226, + -0.2297, + -0.2374, + -0.2458, + -0.2546, + -0.2638, + -0.2733, + 0.53, + 0.5866, + 0.6488, + 0.7175, + 0.7915, + 0.867, + 0.9432, + 1.0196, + 1.0954, + 1.17, + 1.2425, + 1.3121, + 1.3781, + 1.4396, + 1.4957, + 1.5459, + 1.5893, + 1.6253, + 1.6535, + 1.6733, + 1.6846, + 1.687, + 1.6806, + 1.6655, + 1.6418, + 1.61, + 1.5704, + 1.5238, + 1.4706, + 1.4118, + 1.3481, + 1.2804, + 1.2096, + 1.1366, + 1.0623, + 0.9875, + 0.8628, + 0.736, + 0.6201, + 0.515, + 0.4206, + 0.3365, + 0.2622, + 0.1971, + 0.1405, + 0.0917, + 0.0498, + 0.0143, + -0.0158, + -0.0412, + -0.0624, + -0.0801, + -0.0949, + -0.1071, + -0.1173, + -0.1257, + -0.1326, + -0.1382, + -0.1427, + -0.1463, + -0.1489, + -0.1508, + -0.1521, + -0.1527, + -0.1527, + -0.1524, + -0.1517, + -0.1507, + -0.1496, + -0.1486, + -0.1477, + -0.1471, + -0.1469, + -0.1472, + -0.1483, + -0.1501, + -0.1528, + -0.1564, + -0.1609, + -0.1663, + -0.1726, + -0.1795, + -0.187, + -0.1948, + -0.2026, + -0.2102, + -0.2172, + -0.2231, + -0.2276, + -0.23, + -0.23, + -0.227, + -0.2198, + -0.2064, + -0.1904, + -0.172, + -0.1513, + -0.1285, + -0.1038, + -0.0775, + -0.05, + -0.0216, + 0.0072, + 0.036, + 0.0644, + 0.0919, + 0.1181, + 0.1425, + 0.1647, + 0.1844, + 0.2012, + 0.215, + 0.2256, + 0.2328, + 0.2367, + 0.2371, + 0.2343, + 0.2284, + 0.2196, + 0.2081, + 0.1942, + 0.1781, + 0.1603, + 0.1409, + 0.1203, + 0.0987, + 0.0765, + 0.0538, + 0.9072, + 1, + 1.0966, + 1.1967, + 1.2997, + 1.4048, + 1.511, + 1.6177, + 1.7239, + 1.8285, + 1.9306, + 2.0289, + 2.1224, + 2.2099, + 2.2903, + 2.3625, + 2.4255, + 2.4786, + 2.5208, + 2.5516, + 2.5706, + 2.5774, + 2.5719, + 2.5542, + 2.5246, + 2.4835, + 2.4316, + 2.3695, + 2.2983, + 2.2188, + 2.1324, + 2.04, + 1.943, + 1.8426, + 1.7399, + 1.6363, + 1.5328, + 1.3597, + 1.1905, + 1.0362, + 0.8968, + 0.7717, + 0.6605, + 0.5624, + 0.4765, + 0.4017, + 0.3371, + 0.2817, + 0.2343, + 0.1941, + 0.1602, + 0.1316, + 0.1075, + 0.0874, + 0.0707, + 0.0567, + 0.0451, + 0.0356, + 0.0279, + 0.0216, + 0.0166, + 0.0128, + 0.01, + 0.008, + 0.0067, + 0.0059, + 0.0054, + 0.0052, + 0.0051, + 0.0048, + 0.0041, + 0.003, + 0.0012, + -0.0015, + -0.0051, + -0.0099, + -0.0158, + -0.0229, + -0.0311, + -0.0405, + -0.0508, + -0.0618, + -0.0733, + -0.0849, + -0.0962, + -0.1067, + -0.1159, + -0.1231, + -0.1277, + -0.1289, + -0.1261, + -0.1177, + -0.0996, + -0.0777, + -0.0522, + -0.023, + 0.0094, + 0.0449, + 0.083, + 0.1233, + 0.1653, + 0.2083, + 0.2519, + 0.2952, + 0.3376, + 0.3785, + 0.4171, + 0.4528, + 0.485, + 0.5132, + 0.537, + 0.556, + 0.5699, + 0.5787, + 0.5823, + 0.5808, + 0.5744, + 0.5632, + 0.5478, + 0.5284, + 0.5056, + 0.4797, + 0.4512, + 0.4208, + 0.3887, + 0.3555, + 0.3216, + 0.2874, + 0.9532, + 1.0503, + 1.1514, + 1.2558, + 1.3632, + 1.4728, + 1.5839, + 1.6957, + 1.8072, + 1.9174, + 2.0251, + 2.1292, + 2.2285, + 2.3218, + 2.408, + 2.4859, + 2.5546, + 2.6129, + 2.6602, + 2.6957, + 2.7189, + 2.7295, + 2.7273, + 2.7123, + 2.6848, + 2.6453, + 2.5943, + 2.5325, + 2.4609, + 2.3805, + 2.2924, + 2.1979, + 2.0982, + 1.9945, + 1.8883, + 1.7806, + 1.6726, + 1.5656, + 1.3919, + 1.2225, + 1.0684, + 0.9295, + 0.8052, + 0.6947, + 0.5973, + 0.5119, + 0.4376, + 0.3732, + 0.3179, + 0.2705, + 0.23, + 0.1957, + 0.1666, + 0.1421, + 0.1214, + 0.104, + 0.0895, + 0.0773, + 0.0673, + 0.0589, + 0.052, + 0.0464, + 0.0419, + 0.0382, + 0.0352, + 0.0326, + 0.0304, + 0.0284, + 0.0262, + 0.0239, + 0.0211, + 0.0176, + 0.0135, + 0.0084, + 0.0023, + -0.0049, + -0.0132, + -0.0227, + -0.0332, + -0.0447, + -0.0569, + -0.0696, + -0.0825, + -0.0951, + -0.107, + -0.1176, + -0.1262, + -0.1323, + -0.135, + -0.1335, + -0.1262, + -0.1082, + -0.0861, + -0.0598, + -0.0295, + 0.0047, + 0.0425, + 0.0835, + 0.1273, + 0.1734, + 0.2212, + 0.2701, + 0.3192, + 0.3679, + 0.4154, + 0.4609, + 0.5036, + 0.5428, + 0.5778, + 0.6081, + 0.6333, + 0.6528, + 0.6665, + 0.6743, + 0.6762, + 0.6722, + 0.6627, + 0.6479, + 0.6283, + 0.6044, + 0.5766, + 0.5457, + 0.5121, + 0.4765, + 0.4393, + 0.4012, + 0.3626, + 0.3239, + 0.9675, + 1.066, + 1.1685, + 1.2747, + 1.3841, + 1.4959, + 1.6094, + 1.7239, + 1.8383, + 1.9516, + 2.0626, + 2.1703, + 2.2734, + 2.3707, + 2.4609, + 2.543, + 2.6158, + 2.6783, + 2.7298, + 2.7693, + 2.7964, + 2.8108, + 2.8121, + 2.8004, + 2.7758, + 2.7388, + 2.69, + 2.63, + 2.5597, + 2.4802, + 2.3926, + 2.2981, + 2.1979, + 2.0934, + 1.9858, + 1.8764, + 1.7664, + 1.657, + 1.5491, + 1.3851, + 1.2193, + 1.0689, + 0.9335, + 0.8125, + 0.705, + 0.6102, + 0.5271, + 0.4546, + 0.3917, + 0.3375, + 0.2908, + 0.2509, + 0.2167, + 0.1877, + 0.163, + 0.142, + 0.1242, + 0.1092, + 0.0964, + 0.0856, + 0.0765, + 0.0687, + 0.062, + 0.0563, + 0.0512, + 0.0466, + 0.0423, + 0.038, + 0.0336, + 0.0289, + 0.0237, + 0.0179, + 0.0112, + 0.0037, + -0.0048, + -0.0144, + -0.0251, + -0.0367, + -0.0493, + -0.0626, + -0.0763, + -0.0903, + -0.104, + -0.1171, + -0.1289, + -0.139, + -0.1465, + -0.1507, + -0.1509, + -0.1445, + -0.1274, + -0.1058, + -0.0798, + -0.0494, + -0.0147, + 0.0242, + 0.0668, + 0.1128, + 0.1618, + 0.2131, + 0.2661, + 0.32, + 0.374, + 0.4274, + 0.4792, + 0.5286, + 0.5747, + 0.6167, + 0.654, + 0.6859, + 0.7118, + 0.7315, + 0.7446, + 0.7511, + 0.7509, + 0.7443, + 0.7316, + 0.7131, + 0.6894, + 0.661, + 0.6286, + 0.5929, + 0.5544, + 0.514, + 0.4721, + 0.4295, + 0.3866, + 0.344, + 0.9794, + 1.0791, + 1.183, + 1.2908, + 1.4019, + 1.5157, + 1.6315, + 1.7484, + 1.8656, + 1.9819, + 2.0962, + 2.2073, + 2.314, + 2.4151, + 2.5093, + 2.5955, + 2.6724, + 2.7392, + 2.7947, + 2.8384, + 2.8695, + 2.8876, + 2.8925, + 2.8841, + 2.8626, + 2.8284, + 2.7818, + 2.7237, + 2.655, + 2.5765, + 2.4895, + 2.3952, + 2.2948, + 2.1895, + 2.0808, + 1.9699, + 1.858, + 1.7463, + 1.6358, + 1.5277, + 1.3797, + 1.2176, + 1.0709, + 0.939, + 0.8212, + 0.7166, + 0.6242, + 0.5432, + 0.4724, + 0.4108, + 0.3575, + 0.3114, + 0.2718, + 0.2377, + 0.2084, + 0.1834, + 0.1618, + 0.1434, + 0.1275, + 0.1138, + 0.1019, + 0.0915, + 0.0823, + 0.0741, + 0.0665, + 0.0595, + 0.0527, + 0.0459, + 0.039, + 0.0317, + 0.0239, + 0.0155, + 0.0063, + -0.0038, + -0.0149, + -0.0269, + -0.0398, + -0.0536, + -0.068, + -0.083, + -0.0981, + -0.113, + -0.1274, + -0.1406, + -0.1521, + -0.1611, + -0.167, + -0.169, + -0.1629, + -0.147, + -0.1265, + -0.1013, + -0.0712, + -0.0365, + 0.0028, + 0.0465, + 0.0941, + 0.1454, + 0.1997, + 0.2564, + 0.3148, + 0.374, + 0.4332, + 0.4914, + 0.5477, + 0.6011, + 0.6507, + 0.6957, + 0.7353, + 0.7687, + 0.7955, + 0.8152, + 0.8277, + 0.8327, + 0.8304, + 0.821, + 0.8048, + 0.7824, + 0.7543, + 0.7212, + 0.6838, + 0.643, + 0.5994, + 0.5538, + 0.507, + 0.4596, + 0.4123, + 0.3655, + 0.9889, + 1.0895, + 1.1946, + 1.3036, + 1.4163, + 1.5319, + 1.6498, + 1.769, + 1.8887, + 2.0078, + 2.1252, + 2.2396, + 2.3498, + 2.4546, + 2.5526, + 2.6427, + 2.7237, + 2.7946, + 2.8542, + 2.902, + 2.937, + 2.959, + 2.9675, + 2.9626, + 2.9442, + 2.9127, + 2.8687, + 2.8127, + 2.7456, + 2.6684, + 2.5822, + 2.4882, + 2.3877, + 2.2819, + 2.1723, + 2.06, + 1.9464, + 1.8326, + 1.7198, + 1.609, + 1.501, + 1.3748, + 1.2166, + 1.0736, + 0.9451, + 0.8304, + 0.7285, + 0.6385, + 0.5594, + 0.4901, + 0.4296, + 0.377, + 0.3313, + 0.2917, + 0.2575, + 0.2278, + 0.202, + 0.1797, + 0.1602, + 0.1431, + 0.128, + 0.1146, + 0.1024, + 0.0913, + 0.081, + 0.0711, + 0.0615, + 0.052, + 0.0423, + 0.0323, + 0.0217, + 0.0105, + -0.0014, + -0.0141, + -0.0277, + -0.0421, + -0.0572, + -0.073, + -0.0893, + -0.1057, + -0.122, + -0.1377, + -0.1524, + -0.1654, + -0.1761, + -0.1838, + -0.1876, + -0.181, + -0.1668, + -0.1477, + -0.1237, + -0.0947, + -0.0605, + -0.0213, + 0.0227, + 0.0714, + 0.1243, + 0.181, + 0.2408, + 0.3031, + 0.367, + 0.4317, + 0.4961, + 0.5593, + 0.6202, + 0.6778, + 0.7311, + 0.7791, + 0.8209, + 0.856, + 0.8836, + 0.9033, + 0.9149, + 0.9184, + 0.9138, + 0.9014, + 0.8816, + 0.855, + 0.8224, + 0.7843, + 0.7418, + 0.6956, + 0.6466, + 0.5957, + 0.5437, + 0.4914, + 0.4394, + 0.3883, + 0.9956, + 1.097, + 1.2029, + 1.3131, + 1.4271, + 1.5443, + 1.6639, + 1.7852, + 1.9072, + 2.0289, + 2.1491, + 2.2665, + 2.3801, + 2.4883, + 2.59, + 2.684, + 2.7689, + 2.8437, + 2.9074, + 2.9591, + 2.9982, + 3.024, + 3.0362, + 3.0347, + 3.0195, + 2.9909, + 2.9495, + 2.8957, + 2.8304, + 2.7547, + 2.6695, + 2.576, + 2.4757, + 2.3696, + 2.2593, + 2.1459, + 2.0307, + 1.9151, + 1.8001, + 1.6868, + 1.576, + 1.4687, + 1.3654, + 1.2153, + 1.076, + 0.9509, + 0.8392, + 0.7399, + 0.6521, + 0.5746, + 0.5066, + 0.447, + 0.3949, + 0.3493, + 0.3096, + 0.2748, + 0.2444, + 0.2177, + 0.1941, + 0.1732, + 0.1545, + 0.1376, + 0.1222, + 0.1079, + 0.0944, + 0.0814, + 0.0687, + 0.0562, + 0.0435, + 0.0305, + 0.017, + 0.003, + -0.0117, + -0.0271, + -0.0432, + -0.06, + -0.0773, + -0.095, + -0.1129, + -0.1306, + -0.1478, + -0.1641, + -0.1787, + -0.1912, + -0.2008, + -0.2061, + -0.1985, + -0.1862, + -0.169, + -0.1467, + -0.1191, + -0.0862, + -0.0478, + -0.004, + 0.0449, + 0.0986, + 0.1569, + 0.219, + 0.2845, + 0.3525, + 0.4221, + 0.4923, + 0.5621, + 0.6304, + 0.696, + 0.7579, + 0.8148, + 0.8658, + 0.91, + 0.9466, + 0.975, + 0.9947, + 1.0055, + 1.0073, + 1.0003, + 0.9848, + 0.9612, + 0.9303, + 0.8929, + 0.8497, + 0.8018, + 0.75, + 0.6955, + 0.6391, + 0.5818, + 0.5243, + 0.4675, + 0.412, + 0.9995, + 1.1013, + 1.2079, + 1.319, + 1.434, + 1.5525, + 1.6736, + 1.7967, + 1.9207, + 2.0447, + 2.1674, + 2.2877, + 2.4042, + 2.5157, + 2.6209, + 2.7185, + 2.8071, + 2.8858, + 2.9534, + 3.009, + 3.0519, + 3.0815, + 3.0974, + 3.0993, + 3.0874, + 3.0619, + 3.0231, + 2.9716, + 2.9084, + 2.8342, + 2.7502, + 2.6576, + 2.5576, + 2.4515, + 2.3407, + 2.2264, + 2.1101, + 1.9929, + 1.8759, + 1.7603, + 1.6471, + 1.537, + 1.4307, + 1.3289, + 1.2127, + 1.0771, + 0.9553, + 0.8465, + 0.7497, + 0.6638, + 0.5878, + 0.5209, + 0.4619, + 0.41, + 0.3643, + 0.3241, + 0.2886, + 0.2571, + 0.229, + 0.2039, + 0.1812, + 0.1605, + 0.1413, + 0.1234, + 0.1064, + 0.0901, + 0.0741, + 0.0583, + 0.0424, + 0.0262, + 0.0098, + -0.0072, + -0.0247, + -0.0428, + -0.0614, + -0.0805, + -0.0999, + -0.1194, + -0.1387, + -0.1575, + -0.1754, + -0.1919, + -0.2062, + -0.2179, + -0.2203, + -0.2149, + -0.2049, + -0.19, + -0.1698, + -0.1442, + -0.1129, + -0.076, + -0.0333, + 0.0151, + 0.0688, + 0.1278, + 0.1914, + 0.2591, + 0.3303, + 0.404, + 0.4793, + 0.5551, + 0.6304, + 0.7038, + 0.7742, + 0.8403, + 0.9009, + 0.955, + 1.0015, + 1.0396, + 1.0687, + 1.0884, + 1.0982, + 1.0983, + 1.0887, + 1.07, + 1.0425, + 1.0072, + 0.9648, + 0.9164, + 0.863, + 0.8056, + 0.7454, + 0.6834, + 0.6206, + 0.558, + 0.4963, + 0.4362, + 1.0003, + 1.1024, + 1.2093, + 1.3209, + 1.4367, + 1.5561, + 1.6785, + 1.8031, + 1.9288, + 2.0547, + 2.1797, + 2.3025, + 2.4218, + 2.5363, + 2.6446, + 2.7455, + 2.8377, + 2.92, + 2.9914, + 3.0507, + 3.0974, + 3.1307, + 3.1502, + 3.1556, + 3.147, + 3.1245, + 3.0885, + 3.0395, + 2.9784, + 2.906, + 2.8235, + 2.7319, + 2.6325, + 2.5266, + 2.4156, + 2.3008, + 2.1835, + 2.065, + 1.9464, + 1.8288, + 1.7133, + 1.6007, + 1.4917, + 1.387, + 1.287, + 1.1921, + 1.076, + 0.9574, + 0.8513, + 0.7567, + 0.6726, + 0.5979, + 0.5317, + 0.4731, + 0.4211, + 0.375, + 0.334, + 0.2974, + 0.2645, + 0.2347, + 0.2077, + 0.1827, + 0.1596, + 0.1378, + 0.1171, + 0.0971, + 0.0776, + 0.0583, + 0.039, + 0.0196, + 0, + -0.02, + -0.0403, + -0.061, + -0.0821, + -0.1034, + -0.1247, + -0.1458, + -0.1665, + -0.1862, + -0.2045, + -0.2209, + -0.2315, + -0.2329, + -0.23, + -0.2225, + -0.21, + -0.1923, + -0.1691, + -0.1401, + -0.1052, + -0.0643, + -0.0173, + 0.0356, + 0.0943, + 0.1583, + 0.2273, + 0.3006, + 0.3774, + 0.4568, + 0.5378, + 0.6193, + 0.6999, + 0.7784, + 0.8535, + 0.9238, + 0.9881, + 1.0451, + 1.0939, + 1.1336, + 1.1634, + 1.1828, + 1.1917, + 1.1899, + 1.1778, + 1.1557, + 1.1244, + 1.0845, + 1.0372, + 0.9835, + 0.9245, + 0.8614, + 0.7955, + 0.7279, + 0.6596, + 0.5917, + 0.5251, + 0.4606, + 0.998, + 1.1, + 1.207, + 1.3188, + 1.435, + 1.5551, + 1.6783, + 1.804, + 1.9311, + 2.0587, + 2.1855, + 2.3104, + 2.4321, + 2.5493, + 2.6605, + 2.7645, + 2.86, + 2.9457, + 3.0205, + 3.0835, + 3.1337, + 3.1706, + 3.1936, + 3.2025, + 3.1972, + 3.1778, + 3.1446, + 3.0983, + 3.0395, + 2.9691, + 2.8882, + 2.7978, + 2.6993, + 2.594, + 2.4831, + 2.368, + 2.2501, + 2.1306, + 2.0107, + 1.8915, + 1.7741, + 1.6593, + 1.5479, + 1.4405, + 1.3377, + 1.2398, + 1.1471, + 1.0596, + 0.9561, + 0.8525, + 0.7599, + 0.6773, + 0.6036, + 0.538, + 0.4794, + 0.4271, + 0.3802, + 0.3381, + 0.3, + 0.2653, + 0.2336, + 0.2042, + 0.1767, + 0.1508, + 0.1261, + 0.1022, + 0.0789, + 0.056, + 0.0333, + 0.0106, + -0.0122, + -0.0352, + -0.0584, + -0.0817, + -0.1052, + -0.1286, + -0.1517, + -0.1743, + -0.196, + -0.2163, + -0.2322, + -0.2398, + -0.2436, + -0.2432, + -0.2384, + -0.2287, + -0.2138, + -0.1933, + -0.1671, + -0.1348, + -0.0963, + -0.0514, + -0.0002, + 0.0572, + 0.1207, + 0.1898, + 0.264, + 0.3428, + 0.4251, + 0.5102, + 0.5968, + 0.6837, + 0.7696, + 0.8531, + 0.9327, + 1.0071, + 1.075, + 1.1349, + 1.1859, + 1.227, + 1.2573, + 1.2766, + 1.2844, + 1.2808, + 1.2661, + 1.2407, + 1.2053, + 1.161, + 1.1087, + 1.0497, + 0.9852, + 0.9165, + 0.8449, + 0.7717, + 0.698, + 0.625, + 0.5536, + 0.4846, + 0.9924, + 1.0939, + 1.2007, + 1.3124, + 1.4287, + 1.5491, + 1.6728, + 1.7992, + 1.9273, + 2.0561, + 2.1845, + 2.3112, + 2.4349, + 2.5543, + 2.6681, + 2.7748, + 2.8732, + 2.9621, + 3.0401, + 3.1065, + 3.1602, + 3.2005, + 3.2269, + 3.2392, + 3.2371, + 3.2208, + 3.1906, + 3.147, + 3.0907, + 3.0224, + 2.9434, + 2.8545, + 2.7572, + 2.6526, + 2.5422, + 2.4272, + 2.309, + 2.1889, + 2.068, + 1.9476, + 1.8286, + 1.712, + 1.5986, + 1.4889, + 1.3836, + 1.2831, + 1.1876, + 1.0972, + 1.0121, + 0.9321, + 0.8491, + 0.7583, + 0.6769, + 0.604, + 0.5385, + 0.4797, + 0.4267, + 0.3788, + 0.3352, + 0.2953, + 0.2586, + 0.2244, + 0.1924, + 0.1622, + 0.1332, + 0.1053, + 0.0782, + 0.0516, + 0.0253, + -0.0008, + -0.0268, + -0.0528, + -0.0788, + -0.1047, + -0.1304, + -0.1558, + -0.1805, + -0.2044, + -0.2226, + -0.2359, + -0.2458, + -0.2521, + -0.2544, + -0.2523, + -0.2455, + -0.2336, + -0.2163, + -0.1932, + -0.164, + -0.1284, + -0.0864, + -0.0377, + 0.0176, + 0.0795, + 0.1476, + 0.2216, + 0.3009, + 0.3849, + 0.4726, + 0.5631, + 0.6551, + 0.7472, + 0.8382, + 0.9265, + 1.0105, + 1.0889, + 1.1601, + 1.2228, + 1.2758, + 1.3181, + 1.349, + 1.368, + 1.3747, + 1.3692, + 1.3519, + 1.3232, + 1.284, + 1.2352, + 1.1781, + 1.1138, + 1.0439, + 0.9697, + 0.8926, + 0.8139, + 0.735, + 0.657, + 0.5809, + 0.5077, + 0.9834, + 1.0842, + 1.1904, + 1.3017, + 1.4177, + 1.5379, + 1.6618, + 1.7885, + 1.9172, + 2.0468, + 2.1763, + 2.3043, + 2.4296, + 2.551, + 2.6668, + 2.776, + 2.877, + 2.9686, + 3.0497, + 3.1191, + 3.176, + 3.2196, + 3.2493, + 3.2649, + 3.266, + 3.2529, + 3.2257, + 3.1849, + 3.1311, + 3.0652, + 2.9882, + 2.9012, + 2.8053, + 2.7019, + 2.5922, + 2.4777, + 2.3596, + 2.2392, + 2.1178, + 1.9965, + 1.8764, + 1.7583, + 1.6432, + 1.5316, + 1.4242, + 1.3214, + 1.2234, + 1.1305, + 1.0427, + 0.9599, + 0.8822, + 0.8092, + 0.7408, + 0.6702, + 0.5977, + 0.5322, + 0.4729, + 0.4189, + 0.3696, + 0.3243, + 0.2824, + 0.2433, + 0.2065, + 0.1717, + 0.1384, + 0.1064, + 0.0752, + 0.0448, + 0.0149, + -0.0146, + -0.0438, + -0.0728, + -0.1015, + -0.1298, + -0.1577, + -0.1824, + -0.2034, + -0.2217, + -0.2372, + -0.2495, + -0.2583, + -0.2633, + -0.2641, + -0.2602, + -0.2515, + -0.2374, + -0.2177, + -0.1919, + -0.1599, + -0.1212, + -0.0757, + -0.0234, + 0.0358, + 0.1019, + 0.1744, + 0.2531, + 0.3372, + 0.4262, + 0.519, + 0.6146, + 0.7116, + 0.8088, + 0.9045, + 0.9973, + 1.0854, + 1.1674, + 1.2418, + 1.307, + 1.3619, + 1.4054, + 1.4367, + 1.4553, + 1.4609, + 1.4535, + 1.4336, + 1.4017, + 1.3587, + 1.3056, + 1.2438, + 1.1746, + 1.0995, + 1.0199, + 0.9375, + 0.8537, + 0.7698, + 0.687, + 0.6065, + 0.5292, + 0.9709, + 1.0707, + 1.176, + 1.2864, + 1.4017, + 1.5215, + 1.6451, + 1.7717, + 1.9005, + 2.0305, + 2.1606, + 2.2895, + 2.4161, + 2.5388, + 2.6564, + 2.7675, + 2.8708, + 2.9648, + 3.0485, + 3.1208, + 3.1807, + 3.2273, + 3.2602, + 3.2789, + 3.2833, + 3.2732, + 3.249, + 3.2111, + 3.1601, + 3.0967, + 3.022, + 2.937, + 2.8429, + 2.7409, + 2.6324, + 2.5187, + 2.4011, + 2.2809, + 2.1594, + 2.0376, + 1.9167, + 1.7977, + 1.6812, + 1.5682, + 1.459, + 1.3543, + 1.2542, + 1.1591, + 1.0689, + 0.9838, + 0.9035, + 0.828, + 0.757, + 0.6903, + 0.6275, + 0.5683, + 0.5124, + 0.458, + 0.4028, + 0.3519, + 0.3046, + 0.2603, + 0.2187, + 0.1792, + 0.1415, + 0.1052, + 0.07, + 0.0357, + 0.0022, + -0.0307, + -0.0631, + -0.0939, + -0.1229, + -0.15, + -0.1751, + -0.198, + -0.2184, + -0.2361, + -0.2507, + -0.262, + -0.2697, + -0.2733, + -0.2725, + -0.267, + -0.2563, + -0.2401, + -0.2181, + -0.1898, + -0.155, + -0.1134, + -0.0647, + -0.0089, + 0.054, + 0.124, + 0.2006, + 0.2836, + 0.3723, + 0.4659, + 0.5634, + 0.6636, + 0.7654, + 0.8671, + 0.9672, + 1.064, + 1.156, + 1.2413, + 1.3185, + 1.386, + 1.4425, + 1.487, + 1.5185, + 1.5367, + 1.5411, + 1.532, + 1.5095, + 1.4745, + 1.4279, + 1.3708, + 1.3045, + 1.2306, + 1.1505, + 1.0661, + 0.9787, + 0.89, + 0.8014, + 0.7143, + 0.6297, + 0.5487, + 0.955, + 1.0534, + 1.1574, + 1.2666, + 1.3809, + 1.4997, + 1.6226, + 1.7487, + 1.8772, + 2.0071, + 2.1373, + 2.2667, + 2.394, + 2.5177, + 2.6366, + 2.7493, + 2.8543, + 2.9504, + 3.0364, + 3.1112, + 3.1737, + 3.2233, + 3.2591, + 3.2809, + 3.2883, + 3.2813, + 3.2602, + 3.2252, + 3.1771, + 3.1164, + 3.0442, + 2.9615, + 2.8694, + 2.7692, + 2.6622, + 2.5497, + 2.433, + 2.3134, + 2.1922, + 2.0704, + 1.9493, + 1.8296, + 1.7124, + 1.5982, + 1.4878, + 1.3815, + 1.2798, + 1.1828, + 1.0906, + 1.0034, + 0.921, + 0.8432, + 0.77, + 0.7009, + 0.6358, + 0.5744, + 0.5163, + 0.4612, + 0.4088, + 0.3589, + 0.3111, + 0.2653, + 0.2213, + 0.1788, + 0.1379, + 0.0983, + 0.0601, + 0.0233, + -0.0121, + -0.0461, + -0.0786, + -0.1094, + -0.1384, + -0.1655, + -0.1903, + -0.2128, + -0.2326, + -0.2495, + -0.2632, + -0.2734, + -0.2798, + -0.282, + -0.2797, + -0.2725, + -0.26, + -0.2418, + -0.2176, + -0.1869, + -0.1495, + -0.1051, + -0.0535, + 0.0055, + 0.0718, + 0.1453, + 0.2257, + 0.3126, + 0.4053, + 0.503, + 0.6048, + 0.7093, + 0.8152, + 0.9209, + 1.0249, + 1.1254, + 1.2207, + 1.3089, + 1.3886, + 1.458, + 1.5159, + 1.5611, + 1.5928, + 1.6104, + 1.6137, + 1.6028, + 1.578, + 1.5401, + 1.49, + 1.4291, + 1.3587, + 1.2804, + 1.1959, + 1.1069, + 1.015, + 0.9219, + 0.8291, + 0.738, + 0.6498, + 0.5655, + 0.9356, + 1.0323, + 1.1346, + 1.2423, + 1.3551, + 1.4726, + 1.5943, + 1.7194, + 1.8471, + 1.9765, + 2.1064, + 2.2358, + 2.3633, + 2.4875, + 2.6072, + 2.7209, + 2.8274, + 2.9251, + 3.0131, + 3.09, + 3.155, + 3.2071, + 3.2457, + 3.2703, + 3.2807, + 3.2768, + 3.2587, + 3.2268, + 3.1816, + 3.1238, + 3.0543, + 2.9741, + 2.8844, + 2.7864, + 2.6812, + 2.5703, + 2.455, + 2.3364, + 2.2159, + 2.0946, + 1.9736, + 1.8539, + 1.7362, + 1.6214, + 1.5101, + 1.4028, + 1.2998, + 1.2013, + 1.1076, + 1.0186, + 0.9343, + 0.8547, + 0.7794, + 0.7084, + 0.6413, + 0.5779, + 0.5178, + 0.4608, + 0.4065, + 0.3548, + 0.3054, + 0.258, + 0.2126, + 0.1688, + 0.1267, + 0.0861, + 0.047, + 0.0095, + -0.0265, + -0.0609, + -0.0936, + -0.1245, + -0.1534, + -0.1802, + -0.2046, + -0.2265, + -0.2457, + -0.2617, + -0.2745, + -0.2836, + -0.2888, + -0.2896, + -0.2858, + -0.277, + -0.2627, + -0.2426, + -0.2163, + -0.1835, + -0.1437, + -0.0968, + -0.0425, + 0.0194, + 0.0887, + 0.1653, + 0.2491, + 0.3394, + 0.4356, + 0.537, + 0.6424, + 0.7505, + 0.86, + 0.9692, + 1.0765, + 1.1801, + 1.2782, + 1.3689, + 1.4505, + 1.5215, + 1.5804, + 1.6262, + 1.6578, + 1.6748, + 1.6769, + 1.6643, + 1.6373, + 1.5967, + 1.5435, + 1.4792, + 1.4051, + 1.3229, + 1.2344, + 1.1414, + 1.0455, + 0.9486, + 0.8521, + 0.7575, + 0.6661, + 0.579, + 0.9128, + 1.0075, + 1.1077, + 1.2135, + 1.3244, + 1.4402, + 1.5602, + 1.6839, + 1.8104, + 1.9387, + 2.0679, + 2.1967, + 2.3239, + 2.4482, + 2.5682, + 2.6826, + 2.7899, + 2.889, + 2.9784, + 3.0572, + 3.1242, + 3.1786, + 3.2198, + 3.2471, + 3.2604, + 3.2594, + 3.2444, + 3.2155, + 3.1734, + 3.1186, + 3.052, + 2.9747, + 2.8876, + 2.792, + 2.6891, + 2.5802, + 2.4666, + 2.3495, + 2.2302, + 2.1099, + 1.9895, + 1.8701, + 1.7525, + 1.6376, + 1.5259, + 1.4179, + 1.314, + 1.2145, + 1.1196, + 1.0292, + 0.9435, + 0.8623, + 0.7854, + 0.7127, + 0.6439, + 0.5787, + 0.5169, + 0.4583, + 0.4024, + 0.3492, + 0.2983, + 0.2496, + 0.2028, + 0.158, + 0.1149, + 0.0734, + 0.0337, + -0.0044, + -0.0408, + -0.0754, + -0.1082, + -0.139, + -0.1677, + -0.1942, + -0.2181, + -0.2394, + -0.2577, + -0.2729, + -0.2846, + -0.2926, + -0.2965, + -0.296, + -0.2908, + -0.2803, + -0.2644, + -0.2425, + -0.2144, + -0.1795, + -0.1376, + -0.0885, + -0.0318, + 0.0325, + 0.1043, + 0.1837, + 0.2702, + 0.3634, + 0.4626, + 0.567, + 0.6753, + 0.7865, + 0.8989, + 1.0109, + 1.1209, + 1.2269, + 1.3271, + 1.4197, + 1.5029, + 1.575, + 1.6346, + 1.6806, + 1.712, + 1.7283, + 1.7293, + 1.715, + 1.6859, + 1.6429, + 1.5871, + 1.5197, + 1.4424, + 1.3569, + 1.265, + 1.1685, + 1.0693, + 0.9691, + 0.8695, + 0.7721, + 0.6781, + 0.5887, + 0.8867, + 0.979, + 1.0769, + 1.1803, + 1.289, + 1.4026, + 1.5206, + 1.6424, + 1.7672, + 1.894, + 2.0219, + 2.1497, + 2.2761, + 2.3999, + 2.5198, + 2.6343, + 2.7421, + 2.8419, + 2.9325, + 3.0127, + 3.0815, + 3.1379, + 3.1814, + 3.2113, + 3.2272, + 3.2292, + 3.2171, + 3.1914, + 3.1524, + 3.1008, + 3.0373, + 2.963, + 2.8789, + 2.786, + 2.6857, + 2.5792, + 2.4678, + 2.3526, + 2.235, + 2.116, + 1.9967, + 1.8782, + 1.7612, + 1.6466, + 1.5349, + 1.4267, + 1.3224, + 1.2223, + 1.1266, + 1.0353, + 0.9484, + 0.866, + 0.7878, + 0.7137, + 0.6435, + 0.5769, + 0.5137, + 0.4536, + 0.3964, + 0.3419, + 0.2898, + 0.2399, + 0.1922, + 0.1464, + 0.1025, + 0.0604, + 0.0202, + -0.0183, + -0.0549, + -0.0897, + -0.1224, + -0.153, + -0.1813, + -0.2073, + -0.2306, + -0.2511, + -0.2686, + -0.2829, + -0.2935, + -0.3004, + -0.303, + -0.3012, + -0.2945, + -0.2827, + -0.2652, + -0.2417, + -0.2118, + -0.1752, + -0.1315, + -0.0804, + -0.0218, + 0.0445, + 0.1185, + 0.2, + 0.2888, + 0.3842, + 0.4857, + 0.5924, + 0.703, + 0.8164, + 0.931, + 1.0451, + 1.157, + 1.2647, + 1.3665, + 1.4603, + 1.5444, + 1.6172, + 1.6772, + 1.7231, + 1.7541, + 1.7696, + 1.7694, + 1.7536, + 1.7228, + 1.6777, + 1.6195, + 1.5496, + 1.4696, + 1.3813, + 1.2866, + 1.1874, + 1.0855, + 0.9827, + 0.8808, + 0.7812, + 0.6853, + 0.5943, + 0.8574, + 0.947, + 1.0422, + 1.1429, + 1.249, + 1.36, + 1.4756, + 1.5951, + 1.7177, + 1.8425, + 1.9686, + 2.0949, + 2.22, + 2.3429, + 2.4621, + 2.5763, + 2.6841, + 2.7843, + 2.8756, + 2.9569, + 3.0271, + 3.0853, + 3.1308, + 3.163, + 3.1815, + 3.1862, + 3.1772, + 3.1545, + 3.1188, + 3.0704, + 3.0103, + 2.9392, + 2.8582, + 2.7685, + 2.6711, + 2.5674, + 2.4585, + 2.3457, + 2.2302, + 2.113, + 1.9954, + 1.8781, + 1.7622, + 1.6483, + 1.5371, + 1.4292, + 1.3249, + 1.2246, + 1.1285, + 1.0366, + 0.9491, + 0.8658, + 0.7867, + 0.7115, + 0.6402, + 0.5725, + 0.5081, + 0.4469, + 0.3886, + 0.333, + 0.2799, + 0.2292, + 0.1806, + 0.1341, + 0.0896, + 0.0471, + 0.0065, + -0.0322, + -0.0689, + -0.1035, + -0.136, + -0.1663, + -0.1941, + -0.2195, + -0.2421, + -0.2618, + -0.2784, + -0.2916, + -0.3012, + -0.3069, + -0.3083, + -0.3052, + -0.2972, + -0.284, + -0.2651, + -0.2401, + -0.2088, + -0.1707, + -0.1255, + -0.0729, + -0.0127, + 0.0552, + 0.1308, + 0.2139, + 0.3043, + 0.4014, + 0.5044, + 0.6126, + 0.7248, + 0.8396, + 0.9556, + 1.0709, + 1.184, + 1.2927, + 1.3952, + 1.4897, + 1.5742, + 1.6471, + 1.707, + 1.7525, + 1.7829, + 1.7976, + 1.7962, + 1.7791, + 1.7466, + 1.6998, + 1.6397, + 1.5678, + 1.4858, + 1.3954, + 1.2986, + 1.1973, + 1.0935, + 0.989, + 0.8854, + 0.7844, + 0.6873, + 0.5953, + 0.8251, + 0.9117, + 1.0038, + 1.1016, + 1.2046, + 1.3128, + 1.4255, + 1.5422, + 1.6621, + 1.7846, + 1.9084, + 2.0327, + 2.1561, + 2.2775, + 2.3956, + 2.509, + 2.6164, + 2.7165, + 2.8081, + 2.8901, + 2.9613, + 3.021, + 3.0682, + 3.1026, + 3.1235, + 3.1309, + 3.1248, + 3.1053, + 3.0727, + 3.0278, + 2.9711, + 2.9035, + 2.8259, + 2.7396, + 2.6455, + 2.5449, + 2.439, + 2.3289, + 2.2159, + 2.1011, + 1.9854, + 1.8699, + 1.7555, + 1.6428, + 1.5326, + 1.4254, + 1.3216, + 1.2215, + 1.1254, + 1.0334, + 0.9455, + 0.8617, + 0.782, + 0.7061, + 0.634, + 0.5655, + 0.5002, + 0.4382, + 0.379, + 0.3226, + 0.2688, + 0.2173, + 0.1682, + 0.1212, + 0.0763, + 0.0335, + -0.0072, + -0.0459, + -0.0825, + -0.1169, + -0.149, + -0.1788, + -0.2061, + -0.2307, + -0.2526, + -0.2714, + -0.287, + -0.2992, + -0.3076, + -0.3121, + -0.3124, + -0.308, + -0.2988, + -0.2843, + -0.2641, + -0.2379, + -0.2053, + -0.166, + -0.1196, + -0.0658, + -0.0045, + 0.0645, + 0.1411, + 0.2252, + 0.3165, + 0.4145, + 0.5184, + 0.6274, + 0.7402, + 0.8557, + 0.9721, + 1.0879, + 1.2013, + 1.3102, + 1.4128, + 1.5071, + 1.5914, + 1.664, + 1.7233, + 1.7682, + 1.7977, + 1.8114, + 1.8089, + 1.7906, + 1.7568, + 1.7086, + 1.6471, + 1.5737, + 1.4903, + 1.3985, + 1.3004, + 1.1979, + 1.0929, + 0.9874, + 0.8831, + 0.7814, + 0.6839, + 0.5915, + 0.79, + 0.8733, + 0.9622, + 1.0565, + 1.1563, + 1.2611, + 1.3706, + 1.4841, + 1.6011, + 1.7206, + 1.8418, + 1.9636, + 2.0848, + 2.2043, + 2.3208, + 2.4329, + 2.5395, + 2.6391, + 2.7306, + 2.8129, + 2.8849, + 2.9456, + 2.9944, + 3.0306, + 3.0538, + 3.0638, + 3.0605, + 3.044, + 3.0148, + 2.9733, + 2.9202, + 2.8562, + 2.7823, + 2.6996, + 2.6091, + 2.512, + 2.4094, + 2.3025, + 2.1924, + 2.0803, + 1.9671, + 1.8538, + 1.7413, + 1.6303, + 1.5215, + 1.4154, + 1.3125, + 1.213, + 1.1173, + 1.0255, + 0.9377, + 0.8538, + 0.7737, + 0.6975, + 0.625, + 0.5559, + 0.4901, + 0.4274, + 0.3677, + 0.3108, + 0.2564, + 0.2045, + 0.155, + 0.1077, + 0.0627, + 0.0198, + -0.0209, + -0.0594, + -0.0957, + -0.1298, + -0.1614, + -0.1906, + -0.2172, + -0.241, + -0.2619, + -0.2798, + -0.2944, + -0.3054, + -0.3128, + -0.3161, + -0.3152, + -0.3097, + -0.2993, + -0.2836, + -0.2624, + -0.2351, + -0.2015, + -0.1613, + -0.114, + -0.0595, + 0.0025, + 0.0721, + 0.1492, + 0.2337, + 0.3253, + 0.4234, + 0.5274, + 0.6363, + 0.7491, + 0.8642, + 0.9803, + 1.0957, + 1.2085, + 1.3168, + 1.4187, + 1.5122, + 1.5957, + 1.6673, + 1.7256, + 1.7695, + 1.798, + 1.8106, + 1.8071, + 1.7877, + 1.7529, + 1.7037, + 1.6412, + 1.567, + 1.4828, + 1.3904, + 1.2917, + 1.1888, + 1.0835, + 0.9778, + 0.8735, + 0.772, + 0.6747, + 0.5829, + 0.7524, + 0.8321, + 0.9174, + 1.0082, + 1.1043, + 1.2055, + 1.3113, + 1.4214, + 1.5349, + 1.6511, + 1.7692, + 1.8881, + 2.0067, + 2.1239, + 2.2383, + 2.3488, + 2.454, + 2.5527, + 2.6438, + 2.726, + 2.7984, + 2.86, + 2.91, + 2.9478, + 2.9731, + 2.9855, + 2.9849, + 2.9716, + 2.9456, + 2.9076, + 2.8582, + 2.798, + 2.728, + 2.6492, + 2.5625, + 2.4691, + 2.3702, + 2.2668, + 2.16, + 2.051, + 1.9407, + 1.83, + 1.7199, + 1.611, + 1.504, + 1.3994, + 1.2978, + 1.1994, + 1.1045, + 1.0133, + 0.9258, + 0.8421, + 0.7622, + 0.6859, + 0.6132, + 0.5438, + 0.4778, + 0.4148, + 0.3548, + 0.2975, + 0.2429, + 0.1908, + 0.1411, + 0.0938, + 0.0488, + 0.006, + -0.0345, + -0.0727, + -0.1086, + -0.1421, + -0.1731, + -0.2015, + -0.2273, + -0.2502, + -0.2702, + -0.287, + -0.3005, + -0.3104, + -0.3166, + -0.3188, + -0.3168, + -0.3101, + -0.2987, + -0.282, + -0.2598, + -0.2317, + -0.1974, + -0.1565, + -0.1087, + -0.0538, + 0.0084, + 0.078, + 0.1551, + 0.2393, + 0.3305, + 0.4281, + 0.5314, + 0.6394, + 0.7511, + 0.8652, + 0.9801, + 1.0941, + 1.2055, + 1.3124, + 1.4128, + 1.5048, + 1.5868, + 1.6569, + 1.7138, + 1.7564, + 1.7836, + 1.7951, + 1.7905, + 1.7702, + 1.7347, + 1.6849, + 1.622, + 1.5476, + 1.4632, + 1.3709, + 1.2724, + 1.1699, + 1.0652, + 0.9602, + 0.8567, + 0.7561, + 0.6599, + 0.5693, + 0.7125, + 0.7885, + 0.87, + 0.9568, + 1.049, + 1.1463, + 1.2483, + 1.3544, + 1.4642, + 1.5768, + 1.6914, + 1.807, + 1.9225, + 2.0369, + 2.1489, + 2.2573, + 2.3608, + 2.4583, + 2.5485, + 2.6303, + 2.7027, + 2.7648, + 2.8158, + 2.8551, + 2.8822, + 2.8969, + 2.899, + 2.8886, + 2.866, + 2.8316, + 2.7858, + 2.7296, + 2.6636, + 2.5888, + 2.5062, + 2.4169, + 2.3219, + 2.2224, + 2.1193, + 2.0137, + 1.9066, + 1.799, + 1.6916, + 1.5851, + 1.4803, + 1.3777, + 1.2777, + 1.1808, + 1.087, + 0.9967, + 0.91, + 0.8269, + 0.7473, + 0.6713, + 0.5987, + 0.5295, + 0.4634, + 0.4004, + 0.3403, + 0.283, + 0.2283, + 0.1762, + 0.1266, + 0.0794, + 0.0346, + -0.0078, + -0.0479, + -0.0857, + -0.121, + -0.1538, + -0.184, + -0.2116, + -0.2364, + -0.2583, + -0.2772, + -0.2929, + -0.3053, + -0.3141, + -0.3191, + -0.3202, + -0.3171, + -0.3094, + -0.297, + -0.2794, + -0.2565, + -0.2278, + -0.1929, + -0.1517, + -0.1038, + -0.0489, + 0.0131, + 0.0823, + 0.1587, + 0.2421, + 0.3322, + 0.4285, + 0.5303, + 0.6367, + 0.7466, + 0.8587, + 0.9715, + 1.0833, + 1.1925, + 1.297, + 1.3952, + 1.4851, + 1.5649, + 1.633, + 1.6881, + 1.729, + 1.7548, + 1.765, + 1.7595, + 1.7385, + 1.7025, + 1.6525, + 1.5897, + 1.5156, + 1.4318, + 1.3403, + 1.2428, + 1.1415, + 1.0381, + 0.9347, + 0.8328, + 0.734, + 0.6397, + 0.5509, + 0.6706, + 0.7427, + 0.8202, + 0.903, + 0.991, + 1.0841, + 1.1819, + 1.2839, + 1.3896, + 1.4982, + 1.6089, + 1.7209, + 1.8331, + 1.9443, + 2.0535, + 2.1594, + 2.2609, + 2.3567, + 2.4457, + 2.5267, + 2.5989, + 2.6612, + 2.713, + 2.7535, + 2.7823, + 2.7991, + 2.8037, + 2.7962, + 2.7769, + 2.746, + 2.7041, + 2.6518, + 2.59, + 2.5194, + 2.4411, + 2.356, + 2.2653, + 2.1698, + 2.0707, + 1.9689, + 1.8654, + 1.7611, + 1.6568, + 1.5532, + 1.4509, + 1.3506, + 1.2526, + 1.1574, + 1.0652, + 0.9762, + 0.8905, + 0.8083, + 0.7294, + 0.6539, + 0.5818, + 0.5129, + 0.4471, + 0.3843, + 0.3244, + 0.2672, + 0.2128, + 0.1609, + 0.1116, + 0.0648, + 0.0204, + -0.0216, + -0.0611, + -0.0982, + -0.1328, + -0.1647, + -0.1941, + -0.2207, + -0.2445, + -0.2653, + -0.2831, + -0.2976, + -0.3088, + -0.3164, + -0.3203, + -0.3203, + -0.3161, + -0.3075, + -0.2942, + -0.2759, + -0.2524, + -0.2232, + -0.1882, + -0.1469, + -0.0991, + -0.0447, + 0.0166, + 0.0849, + 0.1601, + 0.242, + 0.3304, + 0.4247, + 0.5243, + 0.6283, + 0.7356, + 0.8449, + 0.9547, + 1.0636, + 1.1697, + 1.2713, + 1.3664, + 1.4534, + 1.5306, + 1.5962, + 1.6491, + 1.688, + 1.7121, + 1.7211, + 1.7146, + 1.6931, + 1.6569, + 1.6071, + 1.5449, + 1.4716, + 1.3891, + 1.299, + 1.2033, + 1.1039, + 1.0028, + 0.9016, + 0.8022, + 0.7059, + 0.6141, + 0.528, + 0.6272, + 0.6952, + 0.7685, + 0.847, + 0.9307, + 1.0194, + 1.1127, + 1.2104, + 1.3117, + 1.4161, + 1.5227, + 1.6307, + 1.7391, + 1.8469, + 1.953, + 2.0561, + 2.1551, + 2.2489, + 2.3364, + 2.4164, + 2.488, + 2.5503, + 2.6025, + 2.644, + 2.6743, + 2.693, + 2.7001, + 2.6954, + 2.6792, + 2.6519, + 2.6138, + 2.5656, + 2.508, + 2.4418, + 2.3679, + 2.2873, + 2.2009, + 2.1098, + 2.0149, + 1.9172, + 1.8175, + 1.7169, + 1.616, + 1.5155, + 1.4162, + 1.3184, + 1.2228, + 1.1297, + 1.0393, + 0.9519, + 0.8676, + 0.7865, + 0.7086, + 0.634, + 0.5625, + 0.4942, + 0.4289, + 0.3666, + 0.3071, + 0.2504, + 0.1964, + 0.145, + 0.0962, + 0.0499, + 0.006, + -0.0353, + -0.074, + -0.1103, + -0.144, + -0.175, + -0.2033, + -0.2288, + -0.2514, + -0.2711, + -0.2876, + -0.301, + -0.3109, + -0.3174, + -0.3202, + -0.3191, + -0.3139, + -0.3044, + -0.2903, + -0.2714, + -0.2474, + -0.2181, + -0.183, + -0.142, + -0.0948, + -0.0411, + 0.0191, + 0.086, + 0.1595, + 0.2394, + 0.3255, + 0.4172, + 0.5138, + 0.6146, + 0.7185, + 0.8242, + 0.9304, + 1.0355, + 1.1378, + 1.2356, + 1.3272, + 1.4107, + 1.4845, + 1.5472, + 1.5975, + 1.6341, + 1.6565, + 1.6641, + 1.6568, + 1.6348, + 1.5988, + 1.5495, + 1.4883, + 1.4165, + 1.3358, + 1.2478, + 1.1546, + 1.058, + 0.9597, + 0.8616, + 0.7653, + 0.6723, + 0.5837, + 0.5008, + 0.5825, + 0.6464, + 0.7153, + 0.7894, + 0.8686, + 0.9528, + 1.0415, + 1.1346, + 1.2313, + 1.3312, + 1.4335, + 1.5373, + 1.6417, + 1.7457, + 1.8483, + 1.9483, + 2.0447, + 2.1362, + 2.2218, + 2.3005, + 2.3713, + 2.4333, + 2.4857, + 2.528, + 2.5595, + 2.58, + 2.5893, + 2.5874, + 2.5744, + 2.5505, + 2.5162, + 2.472, + 2.4187, + 2.357, + 2.2876, + 2.2116, + 2.1298, + 2.0432, + 1.9527, + 1.8592, + 1.7637, + 1.667, + 1.5697, + 1.4727, + 1.3765, + 1.2817, + 1.1887, + 1.0979, + 1.0096, + 0.9241, + 0.8414, + 0.7618, + 0.6852, + 0.6116, + 0.5411, + 0.4737, + 0.4092, + 0.3475, + 0.2887, + 0.2327, + 0.1793, + 0.1285, + 0.0804, + 0.0348, + -0.0082, + -0.0487, + -0.0866, + -0.1218, + -0.1545, + -0.1844, + -0.2116, + -0.2359, + -0.2573, + -0.2757, + -0.291, + -0.303, + -0.3118, + -0.317, + -0.3186, + -0.3165, + -0.3103, + -0.3, + -0.2853, + -0.266, + -0.2417, + -0.2123, + -0.1775, + -0.137, + -0.0905, + -0.038, + 0.0208, + 0.0858, + 0.1571, + 0.2345, + 0.3176, + 0.4061, + 0.4992, + 0.5961, + 0.6959, + 0.7974, + 0.8992, + 0.9998, + 1.0976, + 1.191, + 1.2783, + 1.3578, + 1.4279, + 1.4872, + 1.5345, + 1.5687, + 1.5891, + 1.5952, + 1.5871, + 1.5649, + 1.5292, + 1.4809, + 1.4211, + 1.3512, + 1.2729, + 1.1877, + 1.0976, + 1.0043, + 0.9097, + 0.8153, + 0.7228, + 0.6337, + 0.5491, + 0.47, + 0.537, + 0.5966, + 0.6612, + 0.7308, + 0.8054, + 0.8848, + 0.9689, + 1.0572, + 1.1492, + 1.2444, + 1.3421, + 1.4415, + 1.5417, + 1.6418, + 1.7407, + 1.8373, + 1.9307, + 2.0197, + 2.1032, + 2.1803, + 2.25, + 2.3115, + 2.3639, + 2.4067, + 2.4393, + 2.4614, + 2.4728, + 2.4734, + 2.4634, + 2.4429, + 2.4124, + 2.3723, + 2.3232, + 2.266, + 2.2012, + 2.1299, + 2.0527, + 1.9708, + 1.8849, + 1.7959, + 1.7046, + 1.612, + 1.5186, + 1.4252, + 1.3324, + 1.2407, + 1.1506, + 1.0624, + 0.9765, + 0.8931, + 0.8123, + 0.7344, + 0.6593, + 0.5871, + 0.5178, + 0.4514, + 0.3879, + 0.3272, + 0.2693, + 0.2141, + 0.1615, + 0.1117, + 0.0644, + 0.0197, + -0.0223, + -0.0618, + -0.0986, + -0.1328, + -0.1643, + -0.193, + -0.2189, + -0.2419, + -0.262, + -0.279, + -0.293, + -0.3038, + -0.3112, + -0.3153, + -0.3158, + -0.3126, + -0.3055, + -0.2945, + -0.2792, + -0.2595, + -0.2351, + -0.2059, + -0.1715, + -0.1317, + -0.0864, + -0.0353, + 0.0216, + 0.0844, + 0.1531, + 0.2275, + 0.3072, + 0.3919, + 0.4809, + 0.5734, + 0.6685, + 0.7651, + 0.8619, + 0.9574, + 1.0501, + 1.1385, + 1.221, + 1.2959, + 1.3618, + 1.4174, + 1.4614, + 1.4929, + 1.5112, + 1.516, + 1.5071, + 1.4848, + 1.4497, + 1.4026, + 1.3446, + 1.2771, + 1.2016, + 1.1198, + 1.0334, + 0.9441, + 0.8536, + 0.7636, + 0.6756, + 0.5909, + 0.5107, + 0.4359, + 0.491, + 0.5463, + 0.6065, + 0.6716, + 0.7415, + 0.8162, + 0.8954, + 0.9789, + 1.0661, + 1.1565, + 1.2495, + 1.3443, + 1.4401, + 1.536, + 1.631, + 1.7242, + 1.8143, + 1.9006, + 1.9818, + 2.0571, + 2.1254, + 2.1861, + 2.2383, + 2.2814, + 2.3149, + 2.3385, + 2.3518, + 2.3549, + 2.3477, + 2.3305, + 2.3036, + 2.2675, + 2.2227, + 2.1699, + 2.1098, + 2.0431, + 1.9707, + 1.8935, + 1.8123, + 1.7278, + 1.641, + 1.5526, + 1.4633, + 1.3737, + 1.2845, + 1.1962, + 1.1091, + 1.0238, + 0.9404, + 0.8593, + 0.7807, + 0.7046, + 0.6312, + 0.5606, + 0.4928, + 0.4277, + 0.3654, + 0.3058, + 0.249, + 0.1948, + 0.1433, + 0.0945, + 0.0483, + 0.0047, + -0.0363, + -0.0745, + -0.1102, + -0.1431, + -0.1732, + -0.2006, + -0.2252, + -0.2468, + -0.2655, + -0.2811, + -0.2937, + -0.3031, + -0.3093, + -0.3121, + -0.3115, + -0.3073, + -0.2995, + -0.2877, + -0.272, + -0.252, + -0.2277, + -0.1987, + -0.1649, + -0.1261, + -0.0821, + -0.0328, + 0.022, + 0.0822, + 0.1479, + 0.2188, + 0.2947, + 0.3751, + 0.4595, + 0.5471, + 0.637, + 0.7282, + 0.8193, + 0.9092, + 0.9964, + 1.0793, + 1.1565, + 1.2264, + 1.2878, + 1.3393, + 1.3798, + 1.4085, + 1.4246, + 1.4279, + 1.4183, + 1.3961, + 1.3617, + 1.3161, + 1.2603, + 1.1956, + 1.1234, + 1.0454, + 0.9631, + 0.8783, + 0.7925, + 0.7074, + 0.6243, + 0.5445, + 0.4692, + 0.3993, + 0.4449, + 0.496, + 0.5517, + 0.6123, + 0.6775, + 0.7475, + 0.8219, + 0.9004, + 0.9828, + 1.0683, + 1.1565, + 1.2467, + 1.338, + 1.4296, + 1.5206, + 1.61, + 1.6968, + 1.7801, + 1.8588, + 1.9321, + 1.9989, + 2.0586, + 2.1104, + 2.1536, + 2.1878, + 2.2126, + 2.2277, + 2.233, + 2.2286, + 2.2145, + 2.1912, + 2.159, + 2.1183, + 2.0699, + 2.0143, + 1.9524, + 1.8847, + 1.8123, + 1.7357, + 1.656, + 1.5737, + 1.4896, + 1.4044, + 1.3188, + 1.2333, + 1.1484, + 1.0646, + 0.9822, + 0.9016, + 0.8231, + 0.7467, + 0.6728, + 0.6013, + 0.5324, + 0.4662, + 0.4026, + 0.3417, + 0.2835, + 0.2279, + 0.175, + 0.1247, + 0.0771, + 0.0321, + -0.0102, + -0.0499, + -0.0868, + -0.1211, + -0.1526, + -0.1814, + -0.2073, + -0.2304, + -0.2506, + -0.2678, + -0.282, + -0.2931, + -0.3012, + -0.306, + -0.3076, + -0.3059, + -0.3008, + -0.2921, + -0.2797, + -0.2636, + -0.2435, + -0.2193, + -0.1908, + -0.1578, + -0.1202, + -0.0777, + -0.0304, + 0.022, + 0.0794, + 0.1417, + 0.2089, + 0.2806, + 0.3564, + 0.4357, + 0.518, + 0.6022, + 0.6875, + 0.7727, + 0.8565, + 0.9376, + 1.0146, + 1.0862, + 1.1509, + 1.2074, + 1.2546, + 1.2914, + 1.3171, + 1.331, + 1.3328, + 1.3226, + 1.3005, + 1.2671, + 1.2232, + 1.1698, + 1.1081, + 1.0396, + 0.9658, + 0.8881, + 0.8082, + 0.7276, + 0.6477, + 0.57, + 0.4956, + 0.4256, + 0.3607, + 0.3991, + 0.446, + 0.4974, + 0.5534, + 0.6141, + 0.6793, + 0.7489, + 0.8226, + 0.9, + 0.9807, + 1.0641, + 1.1495, + 1.2363, + 1.3235, + 1.4104, + 1.4959, + 1.5793, + 1.6595, + 1.7355, + 1.8066, + 1.8718, + 1.9303, + 1.9815, + 2.0246, + 2.0593, + 2.0851, + 2.1018, + 2.1092, + 2.1073, + 2.0963, + 2.0763, + 2.0478, + 2.0113, + 1.9671, + 1.916, + 1.8587, + 1.7957, + 1.728, + 1.6562, + 1.581, + 1.5033, + 1.4236, + 1.3426, + 1.261, + 1.1793, + 1.098, + 1.0176, + 0.9383, + 0.8606, + 0.7847, + 0.7108, + 0.6391, + 0.5698, + 0.5028, + 0.4384, + 0.3765, + 0.3171, + 0.2604, + 0.2063, + 0.1548, + 0.1059, + 0.0597, + 0.0161, + -0.0248, + -0.0631, + -0.0986, + -0.1314, + -0.1614, + -0.1886, + -0.213, + -0.2345, + -0.2532, + -0.2688, + -0.2815, + -0.2912, + -0.2978, + -0.3014, + -0.3018, + -0.2989, + -0.2929, + -0.2834, + -0.2705, + -0.2541, + -0.2339, + -0.21, + -0.182, + -0.15, + -0.1137, + -0.073, + -0.0278, + 0.0219, + 0.0762, + 0.135, + 0.1981, + 0.2653, + 0.3362, + 0.4102, + 0.4867, + 0.565, + 0.6441, + 0.7229, + 0.8003, + 0.8751, + 0.9459, + 1.0116, + 1.0708, + 1.1222, + 1.1649, + 1.1979, + 1.2205, + 1.2321, + 1.2325, + 1.2216, + 1.1998, + 1.1675, + 1.1255, + 1.0748, + 1.0165, + 0.9519, + 0.8825, + 0.8097, + 0.7351, + 0.6599, + 0.5857, + 0.5136, + 0.4449, + 0.3804, + 0.321, + 0.3539, + 0.3967, + 0.4439, + 0.4955, + 0.5517, + 0.6122, + 0.6771, + 0.746, + 0.8186, + 0.8944, + 0.9731, + 1.0538, + 1.1359, + 1.2188, + 1.3015, + 1.3831, + 1.4629, + 1.5399, + 1.6132, + 1.6819, + 1.7453, + 1.8025, + 1.8529, + 1.8958, + 1.9307, + 1.9574, + 1.9754, + 1.9847, + 1.9852, + 1.9769, + 1.9602, + 1.9353, + 1.9026, + 1.8626, + 1.8159, + 1.763, + 1.7047, + 1.6416, + 1.5744, + 1.5039, + 1.4306, + 1.3553, + 1.2786, + 1.2011, + 1.1232, + 1.0456, + 0.9685, + 0.8925, + 0.8178, + 0.7446, + 0.6733, + 0.604, + 0.5369, + 0.472, + 0.4095, + 0.3494, + 0.2918, + 0.2368, + 0.1843, + 0.1343, + 0.087, + 0.0423, + 0.0002, + -0.0391, + -0.0758, + -0.1098, + -0.1409, + -0.1694, + -0.1949, + -0.2177, + -0.2376, + -0.2546, + -0.2686, + -0.2798, + -0.288, + -0.2932, + -0.2954, + -0.2945, + -0.2906, + -0.2836, + -0.2735, + -0.2601, + -0.2434, + -0.2233, + -0.1997, + -0.1724, + -0.1414, + -0.1066, + -0.0678, + -0.0249, + 0.022, + 0.073, + 0.128, + 0.1869, + 0.2493, + 0.315, + 0.3835, + 0.4541, + 0.5262, + 0.5988, + 0.6711, + 0.7419, + 0.8101, + 0.8746, + 0.9341, + 0.9876, + 1.0339, + 1.072, + 1.1011, + 1.1205, + 1.1298, + 1.1288, + 1.1174, + 1.0959, + 1.0648, + 1.0248, + 0.9769, + 0.9221, + 0.8617, + 0.797, + 0.7294, + 0.6602, + 0.5907, + 0.5223, + 0.4561, + 0.3932, + 0.3345, + 0.2806, + 0.3098, + 0.3486, + 0.3917, + 0.4391, + 0.4908, + 0.5469, + 0.6071, + 0.6713, + 0.7392, + 0.8103, + 0.8842, + 0.9603, + 1.0379, + 1.1164, + 1.1949, + 1.2727, + 1.3488, + 1.4226, + 1.493, + 1.5593, + 1.6207, + 1.6764, + 1.7259, + 1.7683, + 1.8034, + 1.8307, + 1.8499, + 1.8608, + 1.8635, + 1.8578, + 1.8441, + 1.8226, + 1.7936, + 1.7575, + 1.715, + 1.6665, + 1.6126, + 1.554, + 1.4914, + 1.4253, + 1.3565, + 1.2855, + 1.213, + 1.1395, + 1.0655, + 0.9915, + 0.9179, + 0.8451, + 0.7734, + 0.7032, + 0.6345, + 0.5677, + 0.5029, + 0.4402, + 0.3798, + 0.3217, + 0.266, + 0.2127, + 0.1619, + 0.1137, + 0.0681, + 0.0251, + -0.0153, + -0.053, + -0.088, + -0.1202, + -0.1497, + -0.1764, + -0.2003, + -0.2213, + -0.2395, + -0.2548, + -0.2672, + -0.2767, + -0.2834, + -0.2871, + -0.288, + -0.286, + -0.281, + -0.2732, + -0.2623, + -0.2485, + -0.2316, + -0.2116, + -0.1884, + -0.1619, + -0.1321, + -0.0988, + -0.062, + -0.0216, + 0.0224, + 0.07, + 0.1211, + 0.1756, + 0.2332, + 0.2936, + 0.3564, + 0.4209, + 0.4866, + 0.5527, + 0.6182, + 0.6823, + 0.7439, + 0.8019, + 0.8553, + 0.9029, + 0.944, + 0.9775, + 1.0026, + 1.0189, + 1.0259, + 1.0235, + 1.0116, + 0.9905, + 0.9607, + 0.9229, + 0.8779, + 0.8268, + 0.7706, + 0.7107, + 0.6484, + 0.5847, + 0.5211, + 0.4586, + 0.3985, + 0.3415, + 0.2886, + 0.2403, + 0.2671, + 0.3021, + 0.3412, + 0.3845, + 0.432, + 0.4838, + 0.5396, + 0.5992, + 0.6625, + 0.729, + 0.7983, + 0.8699, + 0.943, + 1.0172, + 1.0916, + 1.1655, + 1.2381, + 1.3085, + 1.3761, + 1.4399, + 1.4992, + 1.5533, + 1.6017, + 1.6436, + 1.6786, + 1.7063, + 1.7264, + 1.7388, + 1.7434, + 1.7401, + 1.7291, + 1.7107, + 1.6852, + 1.6529, + 1.6143, + 1.5699, + 1.5203, + 1.466, + 1.4077, + 1.346, + 1.2815, + 1.2148, + 1.1463, + 1.0768, + 1.0066, + 0.9363, + 0.8661, + 0.7966, + 0.728, + 0.6607, + 0.5947, + 0.5305, + 0.4681, + 0.4077, + 0.3495, + 0.2934, + 0.2397, + 0.1884, + 0.1395, + 0.0931, + 0.0493, + 0.0081, + -0.0305, + -0.0664, + -0.0996, + -0.13, + -0.1577, + -0.1825, + -0.2046, + -0.2238, + -0.2402, + -0.2538, + -0.2645, + -0.2724, + -0.2775, + -0.2798, + -0.2793, + -0.2761, + -0.2701, + -0.2614, + -0.2499, + -0.2357, + -0.2186, + -0.1988, + -0.1761, + -0.1505, + -0.1219, + -0.0902, + -0.0555, + -0.0176, + 0.0234, + 0.0675, + 0.1147, + 0.1647, + 0.2173, + 0.2724, + 0.3294, + 0.3878, + 0.4471, + 0.5065, + 0.5653, + 0.6227, + 0.6776, + 0.7291, + 0.7763, + 0.8182, + 0.854, + 0.8829, + 0.9042, + 0.9174, + 0.9221, + 0.9183, + 0.9059, + 0.8853, + 0.8569, + 0.8212, + 0.7792, + 0.7318, + 0.68, + 0.625, + 0.5679, + 0.5099, + 0.4521, + 0.3957, + 0.3415, + 0.2905, + 0.2434, + 0.2008, + 0.226, + 0.2575, + 0.2929, + 0.3323, + 0.3758, + 0.4234, + 0.4749, + 0.5303, + 0.5892, + 0.6513, + 0.7161, + 0.7833, + 0.8522, + 0.9221, + 0.9925, + 1.0626, + 1.1316, + 1.1988, + 1.2634, + 1.3246, + 1.3818, + 1.4343, + 1.4814, + 1.5225, + 1.5573, + 1.5853, + 1.6061, + 1.6197, + 1.6259, + 1.6248, + 1.6163, + 1.6008, + 1.5784, + 1.5496, + 1.5147, + 1.4742, + 1.4286, + 1.3784, + 1.3243, + 1.2668, + 1.2064, + 1.1438, + 1.0793, + 1.0136, + 0.9472, + 0.8804, + 0.8137, + 0.7474, + 0.6819, + 0.6175, + 0.5543, + 0.4927, + 0.4328, + 0.3748, + 0.3188, + 0.2649, + 0.2133, + 0.164, + 0.1171, + 0.0727, + 0.0308, + -0.0085, + -0.0452, + -0.0791, + -0.1104, + -0.139, + -0.1647, + -0.1877, + -0.2079, + -0.2252, + -0.2398, + -0.2516, + -0.2606, + -0.2668, + -0.2704, + -0.2712, + -0.2694, + -0.265, + -0.258, + -0.2484, + -0.2363, + -0.2217, + -0.2046, + -0.185, + -0.1628, + -0.1381, + -0.1107, + -0.0808, + -0.0482, + -0.0129, + 0.0251, + 0.0657, + 0.1088, + 0.1544, + 0.2021, + 0.2518, + 0.303, + 0.3554, + 0.4083, + 0.4612, + 0.5133, + 0.564, + 0.6123, + 0.6574, + 0.6985, + 0.7347, + 0.7654, + 0.7897, + 0.8072, + 0.8174, + 0.8199, + 0.8148, + 0.802, + 0.7819, + 0.7548, + 0.7214, + 0.6824, + 0.6387, + 0.5912, + 0.541, + 0.4892, + 0.4368, + 0.3848, + 0.3343, + 0.286, + 0.2409, + 0.1996, + 0.1625, + 0.187, + 0.2151, + 0.2469, + 0.2827, + 0.3225, + 0.3662, + 0.4138, + 0.465, + 0.5198, + 0.5776, + 0.6383, + 0.7013, + 0.766, + 0.8319, + 0.8984, + 0.9647, + 1.0303, + 1.0942, + 1.1559, + 1.2146, + 1.2696, + 1.3203, + 1.366, + 1.4063, + 1.4406, + 1.4686, + 1.49, + 1.5046, + 1.5122, + 1.5129, + 1.5066, + 1.4937, + 1.4742, + 1.4485, + 1.417, + 1.3801, + 1.3383, + 1.292, + 1.2419, + 1.1883, + 1.1318, + 1.073, + 1.0124, + 0.9505, + 0.8876, + 0.8243, + 0.7609, + 0.6979, + 0.6354, + 0.5739, + 0.5135, + 0.4545, + 0.3972, + 0.3416, + 0.2879, + 0.2363, + 0.1869, + 0.1397, + 0.0949, + 0.0525, + 0.0127, + -0.0246, + -0.0593, + -0.0913, + -0.1205, + -0.1471, + -0.1709, + -0.1919, + -0.2101, + -0.2255, + -0.2382, + -0.2482, + -0.2554, + -0.26, + -0.2619, + -0.2613, + -0.2582, + -0.2526, + -0.2446, + -0.2343, + -0.2216, + -0.2067, + -0.1895, + -0.1701, + -0.1485, + -0.1247, + -0.0987, + -0.0705, + -0.04, + -0.0073, + 0.0277, + 0.0648, + 0.1039, + 0.145, + 0.1879, + 0.2323, + 0.2779, + 0.3243, + 0.3709, + 0.4174, + 0.463, + 0.5071, + 0.5489, + 0.5878, + 0.6229, + 0.6537, + 0.6793, + 0.6992, + 0.713, + 0.7202, + 0.7207, + 0.7143, + 0.7012, + 0.6816, + 0.6559, + 0.6247, + 0.5886, + 0.5485, + 0.5053, + 0.4599, + 0.4132, + 0.3663, + 0.32, + 0.2752, + 0.2328, + 0.1934, + 0.1577, + 0.126, + 0.1501, + 0.1751, + 0.2038, + 0.2362, + 0.2725, + 0.3126, + 0.3564, + 0.4039, + 0.4547, + 0.5087, + 0.5654, + 0.6244, + 0.6852, + 0.7472, + 0.81, + 0.8727, + 0.9349, + 0.9957, + 1.0545, + 1.1106, + 1.1634, + 1.2122, + 1.2565, + 1.2957, + 1.3295, + 1.3573, + 1.379, + 1.3943, + 1.4031, + 1.4053, + 1.4009, + 1.3902, + 1.3733, + 1.3505, + 1.3221, + 1.2885, + 1.2502, + 1.2075, + 1.1609, + 1.111, + 1.0583, + 1.0032, + 0.9462, + 0.8878, + 0.8284, + 0.7684, + 0.7083, + 0.6483, + 0.5889, + 0.5302, + 0.4726, + 0.4163, + 0.3615, + 0.3083, + 0.257, + 0.2077, + 0.1605, + 0.1156, + 0.0729, + 0.0327, + -0.005, + -0.0402, + -0.0727, + -0.1026, + -0.1298, + -0.1543, + -0.176, + -0.195, + -0.2112, + -0.2247, + -0.2355, + -0.2436, + -0.249, + -0.2519, + -0.2523, + -0.2502, + -0.2458, + -0.239, + -0.2301, + -0.219, + -0.2058, + -0.1906, + -0.1734, + -0.1543, + -0.1333, + -0.1105, + -0.0858, + -0.0592, + -0.0309, + -0.0007, + 0.0312, + 0.0648, + 0.1001, + 0.1369, + 0.175, + 0.2143, + 0.2543, + 0.2949, + 0.3355, + 0.3757, + 0.415, + 0.4527, + 0.4883, + 0.5212, + 0.5506, + 0.576, + 0.5968, + 0.6125, + 0.6227, + 0.6272, + 0.6257, + 0.6181, + 0.6047, + 0.5856, + 0.5613, + 0.5322, + 0.499, + 0.4625, + 0.4234, + 0.3825, + 0.3409, + 0.2992, + 0.2584, + 0.2193, + 0.1825, + 0.1486, + 0.1182, + 0.0918, + 0.1158, + 0.138, + 0.1637, + 0.1931, + 0.2262, + 0.263, + 0.3034, + 0.3473, + 0.3946, + 0.4449, + 0.4978, + 0.5531, + 0.6102, + 0.6687, + 0.7278, + 0.7872, + 0.846, + 0.9038, + 0.9598, + 1.0133, + 1.0639, + 1.1108, + 1.1536, + 1.1917, + 1.2246, + 1.2521, + 1.2739, + 1.2896, + 1.2992, + 1.3027, + 1.3, + 1.2912, + 1.2765, + 1.2562, + 1.2306, + 1.2, + 1.1647, + 1.1253, + 1.0821, + 1.0356, + 0.9862, + 0.9346, + 0.881, + 0.8259, + 0.7698, + 0.7131, + 0.6561, + 0.5991, + 0.5426, + 0.4867, + 0.4318, + 0.3782, + 0.3259, + 0.2752, + 0.2263, + 0.1794, + 0.1345, + 0.0918, + 0.0514, + 0.0134, + -0.0221, + -0.0551, + -0.0855, + -0.1132, + -0.1382, + -0.1606, + -0.1802, + -0.1971, + -0.2113, + -0.2227, + -0.2316, + -0.2378, + -0.2415, + -0.2427, + -0.2415, + -0.238, + -0.2322, + -0.2244, + -0.2145, + -0.2026, + -0.1889, + -0.1735, + -0.1563, + -0.1375, + -0.1172, + -0.0953, + -0.0719, + -0.0471, + -0.0208, + 0.0068, + 0.0358, + 0.0661, + 0.0975, + 0.1301, + 0.1636, + 0.1979, + 0.2326, + 0.2676, + 0.3024, + 0.3366, + 0.3698, + 0.4015, + 0.4312, + 0.4582, + 0.4822, + 0.5025, + 0.5187, + 0.5305, + 0.5373, + 0.5391, + 0.5357, + 0.5271, + 0.5134, + 0.4949, + 0.4719, + 0.4449, + 0.4145, + 0.3813, + 0.3462, + 0.3098, + 0.2729, + 0.2363, + 0.2007, + 0.1669, + 0.1354, + 0.1069, + 0.0816, + 0.0601, + 0.0841, + 0.1038, + 0.1269, + 0.1535, + 0.1837, + 0.2176, + 0.2549, + 0.2957, + 0.3396, + 0.3866, + 0.4361, + 0.488, + 0.5417, + 0.5967, + 0.6525, + 0.7086, + 0.7643, + 0.8191, + 0.8724, + 0.9234, + 0.9717, + 1.0167, + 1.0579, + 1.0947, + 1.1267, + 1.1537, + 1.1753, + 1.1912, + 1.2014, + 1.2058, + 1.2043, + 1.1972, + 1.1844, + 1.1663, + 1.143, + 1.115, + 1.0825, + 1.046, + 1.0058, + 0.9624, + 0.9162, + 0.8677, + 0.8172, + 0.7653, + 0.7123, + 0.6586, + 0.6045, + 0.5505, + 0.4968, + 0.4437, + 0.3915, + 0.3404, + 0.2906, + 0.2425, + 0.196, + 0.1514, + 0.1089, + 0.0685, + 0.0304, + -0.0053, + -0.0385, + -0.0693, + -0.0974, + -0.1229, + -0.1458, + -0.1659, + -0.1834, + -0.1981, + -0.2102, + -0.2197, + -0.2265, + -0.2309, + -0.2328, + -0.2323, + -0.2295, + -0.2246, + -0.2176, + -0.2086, + -0.1978, + -0.1853, + -0.1711, + -0.1554, + -0.1383, + -0.1199, + -0.1002, + -0.0793, + -0.0572, + -0.0341, + -0.0099, + 0.0153, + 0.0415, + 0.0685, + 0.0963, + 0.1248, + 0.1539, + 0.1834, + 0.2131, + 0.2427, + 0.272, + 0.3005, + 0.3279, + 0.3539, + 0.3779, + 0.3995, + 0.4183, + 0.4339, + 0.4458, + 0.4538, + 0.4575, + 0.4568, + 0.4517, + 0.4421, + 0.4282, + 0.4102, + 0.3884, + 0.3634, + 0.3357, + 0.3058, + 0.2744, + 0.2421, + 0.2098, + 0.178, + 0.1474, + 0.1186, + 0.0921, + 0.0685, + 0.0481, + 0.0312, + 0.0553, + 0.0728, + 0.0935, + 0.1177, + 0.1455, + 0.1766, + 0.2112, + 0.2492, + 0.2902, + 0.3341, + 0.3806, + 0.4293, + 0.4798, + 0.5317, + 0.5844, + 0.6374, + 0.6902, + 0.7422, + 0.7928, + 0.8414, + 0.8875, + 0.9305, + 0.9699, + 1.0053, + 1.0363, + 1.0625, + 1.0837, + 1.0996, + 1.1101, + 1.1151, + 1.1146, + 1.1086, + 1.0974, + 1.081, + 1.0598, + 1.034, + 1.0039, + 0.97, + 0.9325, + 0.8918, + 0.8485, + 0.8028, + 0.7553, + 0.7062, + 0.6561, + 0.6052, + 0.554, + 0.5027, + 0.4517, + 0.4013, + 0.3516, + 0.3031, + 0.2559, + 0.2102, + 0.1662, + 0.124, + 0.0839, + 0.0458, + 0.0101, + -0.0233, + -0.0542, + -0.0827, + -0.1085, + -0.1317, + -0.1523, + -0.1702, + -0.1855, + -0.1981, + -0.2081, + -0.2155, + -0.2204, + -0.2228, + -0.2229, + -0.2208, + -0.2165, + -0.2101, + -0.2019, + -0.1919, + -0.1802, + -0.167, + -0.1524, + -0.1365, + -0.1195, + -0.1014, + -0.0824, + -0.0624, + -0.0417, + -0.0202, + 0.002, + 0.0248, + 0.0482, + 0.0721, + 0.0964, + 0.1211, + 0.146, + 0.1709, + 0.1958, + 0.2204, + 0.2444, + 0.2676, + 0.2896, + 0.3102, + 0.3289, + 0.3455, + 0.3594, + 0.3705, + 0.3784, + 0.3829, + 0.3837, + 0.3808, + 0.374, + 0.3635, + 0.3494, + 0.332, + 0.3115, + 0.2884, + 0.2631, + 0.2363, + 0.2084, + 0.1801, + 0.152, + 0.1247, + 0.0987, + 0.0746, + 0.0529, + 0.0339, + 0.0179, + 0.0053, + 0.0295, + 0.045, + 0.0638, + 0.086, + 0.1115, + 0.1404, + 0.1726, + 0.208, + 0.2465, + 0.2877, + 0.3314, + 0.3773, + 0.425, + 0.4739, + 0.5238, + 0.574, + 0.624, + 0.6733, + 0.7213, + 0.7675, + 0.8114, + 0.8524, + 0.8901, + 0.924, + 0.9537, + 0.979, + 0.9996, + 1.0152, + 1.0256, + 1.0309, + 1.031, + 1.026, + 1.0159, + 1.001, + 0.9814, + 0.9574, + 0.9294, + 0.8976, + 0.8624, + 0.8242, + 0.7834, + 0.7403, + 0.6954, + 0.649, + 0.6015, + 0.5533, + 0.5046, + 0.456, + 0.4075, + 0.3597, + 0.3126, + 0.2666, + 0.2218, + 0.1785, + 0.137, + 0.0972, + 0.0595, + 0.0238, + -0.0095, + -0.0405, + -0.0691, + -0.0952, + -0.1187, + -0.1396, + -0.1579, + -0.1735, + -0.1866, + -0.197, + -0.2048, + -0.2102, + -0.2131, + -0.2137, + -0.212, + -0.2082, + -0.2024, + -0.1947, + -0.1852, + -0.1742, + -0.1617, + -0.1479, + -0.1329, + -0.1169, + -0.1, + -0.0823, + -0.0639, + -0.0449, + -0.0254, + -0.0055, + 0.0147, + 0.0353, + 0.056, + 0.0769, + 0.0979, + 0.1189, + 0.1398, + 0.1605, + 0.1809, + 0.2007, + 0.2199, + 0.2381, + 0.2551, + 0.2706, + 0.2844, + 0.2962, + 0.3058, + 0.3127, + 0.3169, + 0.3182, + 0.3163, + 0.3113, + 0.3031, + 0.2918, + 0.2776, + 0.2607, + 0.2414, + 0.2201, + 0.1971, + 0.1731, + 0.1485, + 0.1239, + 0.0997, + 0.0766, + 0.0549, + 0.0351, + 0.0177, + 0.003, + -0.0088, + -0.0174 + ], + "layers": [] + }, "entities": [ - { "id": "spawn_1", "name": "player_spawn", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 1, 20], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "player_spawn", "primary": "1", "yaw": "0" } }, - - { "id": "wall_boundary_n", "name": "wall_boundary_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 3, -40], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "40, 4, 0.5", "static": "1" } }, - { "id": "wall_boundary_s", "name": "wall_boundary_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 3, 40], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "40, 4, 0.5", "static": "1" } }, - { "id": "wall_boundary_e", "name": "wall_boundary_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [40, 3, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "0.5, 4, 40", "static": "1" } }, - { "id": "wall_boundary_w", "name": "wall_boundary_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-40, 3, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["static"], - "userData": { "kind": "collider_box", "halfExtents": "0.5, 4, 40", "static": "1" } }, - - { "id": "terrain_ground", "name": "terrain_ground", - "modelRef": "assets/models/terrain_hills.glb", "prefabRef": null, - "transform": { "position": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["terrain"], - "userData": { "kind": "static_mesh" } }, - - { "id": "bldg_floor_ground", "name": "bldg_floor_ground", - "modelRef": "assets/models/building_floor.glb", "prefabRef": null, - "transform": { "position": [-21, 0.01, -14], "rotation": [0, 0, 0], "scale": [1.75, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh" } }, - - { "id": "furniture_table", "name": "furniture_table", - "modelRef": "assets/models/prop_table.glb", "prefabRef": null, - "transform": { "position": [-24, 0, -14], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.8, 0.4, 0.5" } }, - { "id": "furniture_chair_1", "name": "furniture_chair_1", - "modelRef": "assets/models/prop_chair.glb", "prefabRef": null, - "transform": { "position": [-22.5, 0, -14], "rotation": [0, -1.57, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.25, 0.5, 0.25" } }, - { "id": "furniture_chair_2", "name": "furniture_chair_2", - "modelRef": "assets/models/prop_chair.glb", "prefabRef": null, - "transform": { "position": [-25.5, 0, -14], "rotation": [0, 1.57, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.25, 0.5, 0.25" } }, - { "id": "furniture_bed_g", "name": "furniture_bed_g", - "modelRef": "assets/models/prop_bed.glb", "prefabRef": null, - "transform": { "position": [-19, 0, -15], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "1.0, 0.3, 0.5" } }, - { "id": "furniture_crate_g_1", "name": "furniture_crate_g_1", - "modelRef": "assets/models/prop_crate.glb", "prefabRef": null, - "transform": { "position": [-17.5, 0, -17], "rotation": [0, 0.5, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.5, 0.5, 0.5" } }, - { "id": "furniture_bed_up", "name": "furniture_bed_up", - "modelRef": "assets/models/prop_bed.glb", "prefabRef": null, - "transform": { "position": [-23, 3.11, -15], "rotation": [0, 1.57, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.5, 0.3, 1.0" } }, - { "id": "furniture_table_up", "name": "furniture_table_up", - "modelRef": "assets/models/prop_table.glb", "prefabRef": null, - "transform": { "position": [-26, 3.11, -13], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.8, 0.4, 0.5" } }, - { "id": "furniture_chair_up", "name": "furniture_chair_up", - "modelRef": "assets/models/prop_chair.glb", "prefabRef": null, - "transform": { "position": [-24.5, 3.11, -13], "rotation": [0, -1.57, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.25, 0.5, 0.25" } }, - { "id": "furniture_crate_up_1", "name": "furniture_crate_up_1", - "modelRef": "assets/models/prop_crate.glb", "prefabRef": null, - "transform": { "position": [-20, 3.11, -17], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.5, 0.5, 0.5" } }, - { "id": "furniture_crate_up_2", "name": "furniture_crate_up_2", - "modelRef": "assets/models/prop_crate.glb", "prefabRef": null, - "transform": { "position": [-20, 4.11, -17], "rotation": [0, 0.4, 0], "scale": [0.8, 0.8, 0.8] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.4, 0.4, 0.4" } }, - { "id": "furniture_barrel_1", "name": "furniture_barrel_1", - "modelRef": "assets/models/prop_barrel.glb", "prefabRef": null, - "transform": { "position": [-14, 0, -1], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.4, 0.55, 0.4" } }, - { "id": "furniture_barrel_2", "name": "furniture_barrel_2", - "modelRef": "assets/models/prop_barrel.glb", "prefabRef": null, - "transform": { "position": [-13, 0, -2.2], "rotation": [0, 0.7, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.4, 0.55, 0.4" } }, - { "id": "furniture_crate_outdoor", "name": "furniture_crate_outdoor", - "modelRef": "assets/models/prop_crate.glb", "prefabRef": null, - "transform": { "position": [12, 0, -6], "rotation": [0, 0.25, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.5, 0.5, 0.5" } }, - - { "id": "tree_1", "name": "tree_1", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ 12, 0, 5], "rotation": [0, 0, 0], "scale": [1.0, 1.0, 1.0] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_2", "name": "tree_2", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ 18, 0, 0], "rotation": [0, 1.2, 0], "scale": [1.2, 1.2, 1.2] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_3", "name": "tree_3", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ 5, 0, -8], "rotation": [0, 2.0, 0], "scale": [0.9, 0.9, 0.9] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_4", "name": "tree_4", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [-10, 0, 25], "rotation": [0, 0.4, 0], "scale": [1.1, 1.1, 1.1] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_5", "name": "tree_5", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ -8, 0, 28], "rotation": [0, 1.8, 0], "scale": [1.3, 1.3, 1.3] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_6", "name": "tree_6", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [-18, 0, 25], "rotation": [0, 2.3, 0], "scale": [1.0, 1.0, 1.0] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_7", "name": "tree_7", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ 30, 0, -6], "rotation": [0, 0.9, 0], "scale": [1.0, 1.0, 1.0] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - { "id": "tree_8", "name": "tree_8", "modelRef": "assets/models/prop_tree.glb", "prefabRef": null, - "transform": { "position": [ 22, 0, 22], "rotation": [0, 3.0, 0], "scale": [0.9, 0.9, 0.9] }, - "tint": null, "tags": ["prop"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.18, 1.0, 0.18" } }, - - { "id": "light_plaza_n", "name": "light_plaza_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 5, -20], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["light"], - "userData": { "kind": "point_light", "range": "22", "color": "1.0, 0.85, 0.55", "intensity": "1.0" } }, - { "id": "light_plaza_s", "name": "light_plaza_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 5, 20], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["light"], - "userData": { "kind": "point_light", "range": "22", "color": "1.0, 0.85, 0.55", "intensity": "1.0" } }, - { "id": "light_house_g", "name": "light_house_g", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21, 2.6, -14], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["light"], - "userData": { "kind": "point_light", "range": "12", "color": "0.95, 0.85, 0.65", "intensity": "1.1" } }, - { "id": "light_house_up", "name": "light_house_up", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21, 5.6, -14], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["light"], - "userData": { "kind": "point_light", "range": "12", "color": "0.85, 0.9, 1.0", "intensity": "0.9" } }, - { "id": "light_hill_ne", "name": "light_hill_ne", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [26, 5, -24], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["light"], - "userData": { "kind": "point_light", "range": "18", "color": "0.95, 0.75, 0.45", "intensity": "0.8" } }, - - { "id": "spawner_ne", "name": "spawner_ne", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [ 30, 2.5, -30], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "enemy_spawner" } }, - { "id": "spawner_nw", "name": "spawner_nw", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-30, 1.5, -30], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "enemy_spawner" } }, - { "id": "spawner_se", "name": "spawner_se", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [ 30, 0.8, 30], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "enemy_spawner" } }, - { "id": "spawner_sw", "name": "spawner_sw", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-30, 1.5, 30], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "enemy_spawner" } }, - - { "id": "pickup_rifle_n", "name": "pickup_rifle_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [ 0, 0.8, -15], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "weapon_pickup", "weapon": "rifle" } }, - { "id": "pickup_blaster_up", "name": "pickup_blaster_up", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-25, 3.9, -17], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "weapon_pickup", "weapon": "blaster" } }, - { "id": "pickup_rifle_hill", "name": "pickup_rifle_hill", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [26, 3.5, -24], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "weapon_pickup", "weapon": "rifle" } }, - { "id": "pickup_blaster_hill", "name": "pickup_blaster_hill", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-24, 3.0, 26], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "weapon_pickup", "weapon": "blaster" } }, - - { "id": "waves", "name": "waves", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["logic"], - "userData": { "kind": "wave_config", "waves": "[{\"count\":4,\"enemy\":\"dretch,dretch,mantis,dretch\"},{\"count\":7,\"enemy\":\"mantis,dretch,marauder,mantis,dretch,marauder,mantis\"},{\"count\":11,\"enemy\":\"marauder,dragoon,mantis,marauder,dragoon,dretch,marauder,mantis,dragoon,marauder,tyrant\"}]" } }, - { "id": "h_f0_wall_n", "name": "h_f0_wall_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 1.500, -19.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 1.500, 0.200" } }, - { "id": "h_f0_wall_e", "name": "h_f0_wall_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-12.000, 1.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f0_wall_w", "name": "h_f0_wall_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-30.000, 1.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f0_wall_s_left", "name": "h_f0_wall_s_left", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-26.000, 1.500, -7.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "4.000, 1.500, 0.200" } }, - { "id": "h_f0_wall_s_right", "name": "h_f0_wall_s_right", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-16.000, 1.500, -7.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "4.000, 1.500, 0.200" } }, - { "id": "h_f0_wall_s_top", "name": "h_f0_wall_s_top", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 2.700, -7.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "1.000, 0.300, 0.200" } }, - { "id": "h_f1_wall_n", "name": "h_f1_wall_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 4.500, -19.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 1.500, 0.200" } }, - { "id": "h_f1_wall_e", "name": "h_f1_wall_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-12.000, 4.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f1_wall_w", "name": "h_f1_wall_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-30.000, 4.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f1_wall_s", "name": "h_f1_wall_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 4.500, -7.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 1.500, 0.200" } }, - { "id": "h_f2_wall_n", "name": "h_f2_wall_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 7.500, -19.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 1.500, 0.200" } }, - { "id": "h_f2_wall_e", "name": "h_f2_wall_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-12.000, 7.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f2_wall_w", "name": "h_f2_wall_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-30.000, 7.500, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.200, 1.500, 6.000" } }, - { "id": "h_f2_wall_s", "name": "h_f2_wall_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 7.500, -7.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 1.500, 0.200" } }, - { "id": "h_slab_f1_n", "name": "h_slab_f1_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 2.900, -7.750], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 0.100, 0.750" } }, - { "id": "h_slab_f1_s", "name": "h_slab_f1_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 2.900, -15.250], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 0.100, 3.750" } }, - { "id": "h_slab_f1_w", "name": "h_slab_f1_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-23.000, 2.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "7.000, 0.100, 1.500" } }, - { "id": "h_slab_f1_e", "name": "h_slab_f1_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-13.000, 2.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "1.000, 0.100, 1.500" } }, - { "id": "h_slab_f2_n", "name": "h_slab_f2_n", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 5.900, -7.750], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 0.100, 0.750" } }, - { "id": "h_slab_f2_s", "name": "h_slab_f2_s", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 5.900, -15.250], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 0.100, 3.750" } }, - { "id": "h_slab_f2_w", "name": "h_slab_f2_w", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-23.000, 5.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "7.000, 0.100, 1.500" } }, - { "id": "h_slab_f2_e", "name": "h_slab_f2_e", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-13.000, 5.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "1.000, 0.100, 1.500" } }, - { "id": "h_roof", "name": "h_roof", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-21.000, 9.000, -13.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "9.000, 0.100, 6.000" } }, - { "id": "h_step_f0_0", "name": "h_step_f0_0", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.850, 0.150, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.150, 1.500" } }, - { "id": "h_step_f0_1", "name": "h_step_f0_1", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.550, 0.300, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.300, 1.500" } }, - { "id": "h_step_f0_2", "name": "h_step_f0_2", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.250, 0.450, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.450, 1.500" } }, - { "id": "h_step_f0_3", "name": "h_step_f0_3", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.950, 0.600, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.600, 1.500" } }, - { "id": "h_step_f0_4", "name": "h_step_f0_4", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.650, 0.750, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.750, 1.500" } }, - { "id": "h_step_f0_5", "name": "h_step_f0_5", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.350, 0.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.900, 1.500" } }, - { "id": "h_step_f0_6", "name": "h_step_f0_6", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.050, 1.050, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.050, 1.500" } }, - { "id": "h_step_f0_7", "name": "h_step_f0_7", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-13.750, 1.200, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.200, 1.500" } }, - { "id": "h_step_f0_8", "name": "h_step_f0_8", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-13.450, 1.350, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.350, 1.500" } }, - { "id": "h_step_f0_9", "name": "h_step_f0_9", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-13.150, 1.500, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.500, 1.500" } }, - { "id": "h_step_f1_0", "name": "h_step_f1_0", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.150, 3.150, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.150, 1.500" } }, - { "id": "h_step_f1_1", "name": "h_step_f1_1", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.450, 3.300, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.300, 1.500" } }, - { "id": "h_step_f1_2", "name": "h_step_f1_2", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-14.750, 3.450, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.450, 1.500" } }, - { "id": "h_step_f1_3", "name": "h_step_f1_3", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.050, 3.600, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.600, 1.500" } }, - { "id": "h_step_f1_4", "name": "h_step_f1_4", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.350, 3.750, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.750, 1.500" } }, - { "id": "h_step_f1_5", "name": "h_step_f1_5", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.650, 3.900, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 0.900, 1.500" } }, - { "id": "h_step_f1_6", "name": "h_step_f1_6", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-15.950, 4.050, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.050, 1.500" } }, - { "id": "h_step_f1_7", "name": "h_step_f1_7", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-16.250, 4.200, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.200, 1.500" } }, - { "id": "h_step_f1_8", "name": "h_step_f1_8", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-16.550, 4.350, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.350, 1.500" } }, - { "id": "h_step_f1_9", "name": "h_step_f1_9", - "modelRef": "assets/models/_gizmo_box.glb", "prefabRef": null, - "transform": { "position": [-16.850, 4.500, -10.000], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, - "tint": null, "tags": ["building"], - "userData": { "kind": "static_mesh", "collider": "box", "halfExtents": "0.150, 1.500, 1.500" } } + { + "id": "spawn_1", + "name": "player_spawn", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 1, + 20 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "player_spawn", + "primary": "1", + "yaw": "0" + } + }, + { + "id": "wall_boundary_n", + "name": "wall_boundary_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 3, + -40 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "40, 4, 0.5", + "static": "1" + } + }, + { + "id": "wall_boundary_s", + "name": "wall_boundary_s", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 3, + 40 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "40, 4, 0.5", + "static": "1" + } + }, + { + "id": "wall_boundary_e", + "name": "wall_boundary_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 40, + 3, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "0.5, 4, 40", + "static": "1" + } + }, + { + "id": "wall_boundary_w", + "name": "wall_boundary_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -40, + 3, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "static" + ], + "userData": { + "kind": "collider_box", + "halfExtents": "0.5, 4, 40", + "static": "1" + } + }, + { + "id": "terrain_ground", + "name": "terrain_ground", + "modelRef": "assets/models/terrain_hills.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 0, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "terrain" + ], + "userData": { + "kind": "static_mesh" + } + }, + { + "id": "bldg_floor_ground", + "name": "bldg_floor_ground", + "modelRef": "assets/models/building_floor.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 0.01, + -14 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1.75, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh" + } + }, + { + "id": "furniture_table", + "name": "furniture_table", + "modelRef": "assets/models/prop_table.glb", + "prefabRef": null, + "transform": { + "position": [ + -24, + 0, + -14 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.8, 0.4, 0.5" + } + }, + { + "id": "furniture_chair_1", + "name": "furniture_chair_1", + "modelRef": "assets/models/prop_chair.glb", + "prefabRef": null, + "transform": { + "position": [ + -22.5, + 0, + -14 + ], + "rotation": [ + 0, + -1.57, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.25, 0.5, 0.25" + } + }, + { + "id": "furniture_chair_2", + "name": "furniture_chair_2", + "modelRef": "assets/models/prop_chair.glb", + "prefabRef": null, + "transform": { + "position": [ + -25.5, + 0, + -14 + ], + "rotation": [ + 0, + 1.57, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.25, 0.5, 0.25" + } + }, + { + "id": "furniture_bed_g", + "name": "furniture_bed_g", + "modelRef": "assets/models/prop_bed.glb", + "prefabRef": null, + "transform": { + "position": [ + -19, + 0, + -15 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "1.0, 0.3, 0.5" + } + }, + { + "id": "furniture_crate_g_1", + "name": "furniture_crate_g_1", + "modelRef": "assets/models/prop_crate.glb", + "prefabRef": null, + "transform": { + "position": [ + -17.5, + 0, + -17 + ], + "rotation": [ + 0, + 0.5, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.5, 0.5, 0.5" + } + }, + { + "id": "furniture_bed_up", + "name": "furniture_bed_up", + "modelRef": "assets/models/prop_bed.glb", + "prefabRef": null, + "transform": { + "position": [ + -23, + 3.11, + -15 + ], + "rotation": [ + 0, + 1.57, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.5, 0.3, 1.0" + } + }, + { + "id": "furniture_table_up", + "name": "furniture_table_up", + "modelRef": "assets/models/prop_table.glb", + "prefabRef": null, + "transform": { + "position": [ + -26, + 3.11, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.8, 0.4, 0.5" + } + }, + { + "id": "furniture_chair_up", + "name": "furniture_chair_up", + "modelRef": "assets/models/prop_chair.glb", + "prefabRef": null, + "transform": { + "position": [ + -24.5, + 3.11, + -13 + ], + "rotation": [ + 0, + -1.57, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.25, 0.5, 0.25" + } + }, + { + "id": "furniture_crate_up_1", + "name": "furniture_crate_up_1", + "modelRef": "assets/models/prop_crate.glb", + "prefabRef": null, + "transform": { + "position": [ + -20, + 3.11, + -17 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.5, 0.5, 0.5" + } + }, + { + "id": "furniture_crate_up_2", + "name": "furniture_crate_up_2", + "modelRef": "assets/models/prop_crate.glb", + "prefabRef": null, + "transform": { + "position": [ + -20, + 4.11, + -17 + ], + "rotation": [ + 0, + 0.4, + 0 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.4, 0.4, 0.4" + } + }, + { + "id": "furniture_barrel_1", + "name": "furniture_barrel_1", + "modelRef": "assets/models/prop_barrel.glb", + "prefabRef": null, + "transform": { + "position": [ + -14, + 0, + -1 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.4, 0.55, 0.4" + } + }, + { + "id": "furniture_barrel_2", + "name": "furniture_barrel_2", + "modelRef": "assets/models/prop_barrel.glb", + "prefabRef": null, + "transform": { + "position": [ + -13, + 0, + -2.2 + ], + "rotation": [ + 0, + 0.7, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.4, 0.55, 0.4" + } + }, + { + "id": "furniture_crate_outdoor", + "name": "furniture_crate_outdoor", + "modelRef": "assets/models/prop_crate.glb", + "prefabRef": null, + "transform": { + "position": [ + 12, + 0, + -6 + ], + "rotation": [ + 0, + 0.25, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.5, 0.5, 0.5" + } + }, + { + "id": "tree_1", + "name": "tree_1", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 12, + 0, + 5 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_2", + "name": "tree_2", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 18, + 0, + 0 + ], + "rotation": [ + 0, + 1.2, + 0 + ], + "scale": [ + 1.2, + 1.2, + 1.2 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_3", + "name": "tree_3", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 5, + 0, + -8 + ], + "rotation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.9, + 0.9, + 0.9 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_4", + "name": "tree_4", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -10, + 0, + 25 + ], + "rotation": [ + 0, + 0.4, + 0 + ], + "scale": [ + 1.1, + 1.1, + 1.1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_5", + "name": "tree_5", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -8, + 0, + 28 + ], + "rotation": [ + 0, + 1.8, + 0 + ], + "scale": [ + 1.3, + 1.3, + 1.3 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_6", + "name": "tree_6", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -18, + 0, + 25 + ], + "rotation": [ + 0, + 2.3, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_7", + "name": "tree_7", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 30, + 0, + -6 + ], + "rotation": [ + 0, + 0.9, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "tree_8", + "name": "tree_8", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 22, + 0, + 22 + ], + "rotation": [ + 0, + 3, + 0 + ], + "scale": [ + 0.9, + 0.9, + 0.9 + ] + }, + "tint": null, + "tags": [ + "prop" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.18, 1.0, 0.18" + } + }, + { + "id": "spawner_ne", + "name": "spawner_ne", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 30, + 2.5, + -30 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "enemy_spawner" + } + }, + { + "id": "spawner_nw", + "name": "spawner_nw", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -30, + 1.5, + -30 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "enemy_spawner" + } + }, + { + "id": "spawner_se", + "name": "spawner_se", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 30, + 0.8, + 30 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "enemy_spawner" + } + }, + { + "id": "spawner_sw", + "name": "spawner_sw", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -30, + 1.5, + 30 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "enemy_spawner" + } + }, + { + "id": "pickup_rifle_n", + "name": "pickup_rifle_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 0.8, + -15 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "weapon_pickup", + "weapon": "rifle" + } + }, + { + "id": "pickup_blaster_up", + "name": "pickup_blaster_up", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -25, + 3.9, + -17 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "weapon_pickup", + "weapon": "blaster" + } + }, + { + "id": "pickup_rifle_hill", + "name": "pickup_rifle_hill", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 26, + 3.5, + -24 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "weapon_pickup", + "weapon": "rifle" + } + }, + { + "id": "pickup_blaster_hill", + "name": "pickup_blaster_hill", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -24, + 3, + 26 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "weapon_pickup", + "weapon": "blaster" + } + }, + { + "id": "waves", + "name": "waves", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + 0, + 0, + 0 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "logic" + ], + "userData": { + "kind": "wave_config", + "waves": "[{\"count\":4,\"enemy\":\"dretch,dretch,mantis,dretch\"},{\"count\":7,\"enemy\":\"mantis,dretch,marauder,mantis,dretch,marauder,mantis\"},{\"count\":11,\"enemy\":\"marauder,dragoon,mantis,marauder,dragoon,dretch,marauder,mantis,dragoon,marauder,tyrant\"}]" + } + }, + { + "id": "h_f0_wall_n", + "name": "h_f0_wall_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 1.5, + -19 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 1.500, 0.200" + } + }, + { + "id": "h_f0_wall_e", + "name": "h_f0_wall_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -12, + 1.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f0_wall_w", + "name": "h_f0_wall_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -30, + 1.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f0_wall_s_left", + "name": "h_f0_wall_s_left", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -26, + 1.5, + -7 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "4.000, 1.500, 0.200" + } + }, + { + "id": "h_f0_wall_s_right", + "name": "h_f0_wall_s_right", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -16, + 1.5, + -7 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "4.000, 1.500, 0.200" + } + }, + { + "id": "h_f0_wall_s_top", + "name": "h_f0_wall_s_top", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 2.7, + -7 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "1.000, 0.300, 0.200" + } + }, + { + "id": "h_f1_wall_n", + "name": "h_f1_wall_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 4.5, + -19 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 1.500, 0.200" + } + }, + { + "id": "h_f1_wall_e", + "name": "h_f1_wall_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -12, + 4.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f1_wall_w", + "name": "h_f1_wall_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -30, + 4.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f1_wall_s", + "name": "h_f1_wall_s", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 4.5, + -7 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 1.500, 0.200" + } + }, + { + "id": "h_f2_wall_n", + "name": "h_f2_wall_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 7.5, + -19 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 1.500, 0.200" + } + }, + { + "id": "h_f2_wall_e", + "name": "h_f2_wall_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -12, + 7.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f2_wall_w", + "name": "h_f2_wall_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -30, + 7.5, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.200, 1.500, 6.000" + } + }, + { + "id": "h_f2_wall_s", + "name": "h_f2_wall_s", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 7.5, + -7 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 1.500, 0.200" + } + }, + { + "id": "h_slab_f1_n", + "name": "h_slab_f1_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 2.9, + -7.75 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 0.100, 0.750" + } + }, + { + "id": "h_slab_f1_s", + "name": "h_slab_f1_s", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 2.9, + -15.25 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 0.100, 3.750" + } + }, + { + "id": "h_slab_f1_w", + "name": "h_slab_f1_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -23, + 2.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "7.000, 0.100, 1.500" + } + }, + { + "id": "h_slab_f1_e", + "name": "h_slab_f1_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -13, + 2.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "1.000, 0.100, 1.500" + } + }, + { + "id": "h_slab_f2_n", + "name": "h_slab_f2_n", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 5.9, + -7.75 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 0.100, 0.750" + } + }, + { + "id": "h_slab_f2_s", + "name": "h_slab_f2_s", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 5.9, + -15.25 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 0.100, 3.750" + } + }, + { + "id": "h_slab_f2_w", + "name": "h_slab_f2_w", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -23, + 5.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "7.000, 0.100, 1.500" + } + }, + { + "id": "h_slab_f2_e", + "name": "h_slab_f2_e", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -13, + 5.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "1.000, 0.100, 1.500" + } + }, + { + "id": "h_roof", + "name": "h_roof", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -21, + 9, + -13 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "9.000, 0.100, 6.000" + } + }, + { + "id": "h_step_f0_0", + "name": "h_step_f0_0", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.85, + 0.15, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.150, 1.500" + } + }, + { + "id": "h_step_f0_1", + "name": "h_step_f0_1", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.55, + 0.3, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.300, 1.500" + } + }, + { + "id": "h_step_f0_2", + "name": "h_step_f0_2", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.25, + 0.45, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.450, 1.500" + } + }, + { + "id": "h_step_f0_3", + "name": "h_step_f0_3", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.95, + 0.6, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.600, 1.500" + } + }, + { + "id": "h_step_f0_4", + "name": "h_step_f0_4", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.65, + 0.75, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.750, 1.500" + } + }, + { + "id": "h_step_f0_5", + "name": "h_step_f0_5", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.35, + 0.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.900, 1.500" + } + }, + { + "id": "h_step_f0_6", + "name": "h_step_f0_6", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.05, + 1.05, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.050, 1.500" + } + }, + { + "id": "h_step_f0_7", + "name": "h_step_f0_7", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -13.75, + 1.2, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.200, 1.500" + } + }, + { + "id": "h_step_f0_8", + "name": "h_step_f0_8", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -13.45, + 1.35, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.350, 1.500" + } + }, + { + "id": "h_step_f0_9", + "name": "h_step_f0_9", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -13.15, + 1.5, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.500, 1.500" + } + }, + { + "id": "h_step_f1_0", + "name": "h_step_f1_0", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.15, + 3.15, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.150, 1.500" + } + }, + { + "id": "h_step_f1_1", + "name": "h_step_f1_1", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.45, + 3.3, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.300, 1.500" + } + }, + { + "id": "h_step_f1_2", + "name": "h_step_f1_2", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -14.75, + 3.45, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.450, 1.500" + } + }, + { + "id": "h_step_f1_3", + "name": "h_step_f1_3", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.05, + 3.6, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.600, 1.500" + } + }, + { + "id": "h_step_f1_4", + "name": "h_step_f1_4", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.35, + 3.75, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.750, 1.500" + } + }, + { + "id": "h_step_f1_5", + "name": "h_step_f1_5", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.65, + 3.9, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 0.900, 1.500" + } + }, + { + "id": "h_step_f1_6", + "name": "h_step_f1_6", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.95, + 4.05, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.050, 1.500" + } + }, + { + "id": "h_step_f1_7", + "name": "h_step_f1_7", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -16.25, + 4.2, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.200, 1.500" + } + }, + { + "id": "h_step_f1_8", + "name": "h_step_f1_8", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -16.55, + 4.35, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.350, 1.500" + } + }, + { + "id": "h_step_f1_9", + "name": "h_step_f1_9", + "modelRef": "assets/models/_gizmo_box.glb", + "prefabRef": null, + "transform": { + "position": [ + -16.85, + 4.5, + -10 + ], + "rotation": [ + 0, + 0, + 0 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "tint": null, + "tags": [ + "building" + ], + "userData": { + "kind": "static_mesh", + "collider": "box", + "halfExtents": "0.150, 1.500, 1.500" + } + }, + { + "id": "tree_0001", + "name": "tree_0001", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -25.2119, + 1.0818, + 7.555 + ], + "rotation": [ + 0, + 1.1964, + 0 + ], + "scale": [ + 1.1171, + 1.1171, + 1.1171 + ] + }, + "tint": [ + 0.9693, + 1.0154, + 0.9754, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0002", + "name": "tree_0002", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 5.7869, + 0, + -13.2819 + ], + "rotation": [ + 0, + 1.0602, + 0 + ], + "scale": [ + 1.1666, + 1.1666, + 1.1666 + ] + }, + "tint": [ + 0.9987, + 1.0006, + 0.999, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0003", + "name": "tree_0003", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -31.2563, + 1.1085, + 35.4324 + ], + "rotation": [ + 0, + 2.6274, + 0 + ], + "scale": [ + 0.9733, + 0.9733, + 0.9733 + ] + }, + "tint": [ + 1.0394, + 0.9803, + 1.0315, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0004", + "name": "tree_0004", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -34.6153, + 1.0411, + -34.9499 + ], + "rotation": [ + 0, + 5.7552, + 0 + ], + "scale": [ + 0.9467, + 0.9467, + 0.9467 + ] + }, + "tint": [ + 0.9962, + 1.0019, + 0.9969, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0005", + "name": "tree_0005", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 33.3923, + 1.574, + -33.716 + ], + "rotation": [ + 0, + 5.4109, + 0 + ], + "scale": [ + 1.0047, + 1.0047, + 1.0047 + ] + }, + "tint": [ + 1.0053, + 0.9973, + 1.0043, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0006", + "name": "tree_0006", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 20.1898, + 0.2069, + -0.7627 + ], + "rotation": [ + 0, + 4.4622, + 0 + ], + "scale": [ + 1.3183, + 1.3183, + 1.3183 + ] + }, + "tint": [ + 0.9615, + 1.0192, + 0.9692, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0007", + "name": "tree_0007", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -4.9644, + 0, + -12.5605 + ], + "rotation": [ + 0, + 3.9303, + 0 + ], + "scale": [ + 0.9106, + 0.9106, + 0.9106 + ] + }, + "tint": [ + 0.9502, + 1.0249, + 0.9602, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0008", + "name": "tree_0008", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -8.5366, + 0.3856, + -34.9198 + ], + "rotation": [ + 0, + 2.0432, + 0 + ], + "scale": [ + 1.1742, + 1.1742, + 1.1742 + ] + }, + "tint": [ + 1.054, + 0.973, + 1.0432, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0009", + "name": "tree_0009", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 11.8142, + -0.1044, + 16.5356 + ], + "rotation": [ + 0, + 2.6796, + 0 + ], + "scale": [ + 0.8921, + 0.8921, + 0.8921 + ] + }, + "tint": [ + 1.0414, + 0.9793, + 1.0331, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0010", + "name": "tree_0010", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -32.4468, + 2.4242, + 23.1912 + ], + "rotation": [ + 0, + 5.2413, + 0 + ], + "scale": [ + 1.0198, + 1.0198, + 1.0198 + ] + }, + "tint": [ + 0.9514, + 1.0243, + 0.9611, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0011", + "name": "tree_0011", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 35.192, + 0.2989, + -5.3711 + ], + "rotation": [ + 0, + 3.391, + 0 + ], + "scale": [ + 1.0409, + 1.0409, + 1.0409 + ] + }, + "tint": [ + 0.9608, + 1.0196, + 0.9686, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0012", + "name": "tree_0012", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -26.3522, + 1.2703, + -35.493 + ], + "rotation": [ + 0, + 1.685, + 0 + ], + "scale": [ + 1.3416, + 1.3416, + 1.3416 + ] + }, + "tint": [ + 1.0809, + 0.9595, + 1.0647, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0013", + "name": "tree_0013", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 27.899, + 0.099, + 3.346 + ], + "rotation": [ + 0, + 1.7554, + 0 + ], + "scale": [ + 0.927, + 0.927, + 0.927 + ] + }, + "tint": [ + 1.0983, + 0.9508, + 1.0786, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0014", + "name": "tree_0014", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -11.8528, + 0, + 4.6423 + ], + "rotation": [ + 0, + 0.5244, + 0 + ], + "scale": [ + 0.8967, + 0.8967, + 0.8967 + ] + }, + "tint": [ + 0.907, + 1.0465, + 0.9256, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0015", + "name": "tree_0015", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 10.0181, + 0.5628, + -25.8208 + ], + "rotation": [ + 0, + 1.9481, + 0 + ], + "scale": [ + 1.0818, + 1.0818, + 1.0818 + ] + }, + "tint": [ + 0.9726, + 1.0137, + 0.9781, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0016", + "name": "tree_0016", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -24.2974, + 0.5636, + 0.1012 + ], + "rotation": [ + 0, + 5.0932, + 0 + ], + "scale": [ + 1.3548, + 1.3548, + 1.3548 + ] + }, + "tint": [ + 1.0359, + 0.982, + 1.0287, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0017", + "name": "tree_0017", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -22.652, + 0.8484, + -29.3878 + ], + "rotation": [ + 0, + 2.1917, + 0 + ], + "scale": [ + 1.1507, + 1.1507, + 1.1507 + ] + }, + "tint": [ + 0.977, + 1.0115, + 0.9816, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0018", + "name": "tree_0018", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 0.98, + 0.0662, + -27.5737 + ], + "rotation": [ + 0, + 0.4823, + 0 + ], + "scale": [ + 1.0345, + 1.0345, + 1.0345 + ] + }, + "tint": [ + 0.9416, + 1.0292, + 0.9533, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0019", + "name": "tree_0019", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 30.0245, + 0.8214, + 18.6124 + ], + "rotation": [ + 0, + 4.7264, + 0 + ], + "scale": [ + 0.8823, + 0.8823, + 0.8823 + ] + }, + "tint": [ + 0.9345, + 1.0328, + 0.9476, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0020", + "name": "tree_0020", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -33.5049, + 2.1524, + 19.0379 + ], + "rotation": [ + 0, + 0.081, + 0 + ], + "scale": [ + 1.2188, + 1.2188, + 1.2188 + ] + }, + "tint": [ + 0.9054, + 1.0473, + 0.9243, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0021", + "name": "tree_0021", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -29.0914, + 1.3958, + 7.1714 + ], + "rotation": [ + 0, + 2.4327, + 0 + ], + "scale": [ + 0.8947, + 0.8947, + 0.8947 + ] + }, + "tint": [ + 0.9353, + 1.0324, + 0.9482, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0022", + "name": "tree_0022", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -7.6165, + 0, + 2.9723 + ], + "rotation": [ + 0, + 5.8917, + 0 + ], + "scale": [ + 1.1885, + 1.1885, + 1.1885 + ] + }, + "tint": [ + 0.9388, + 1.0306, + 0.951, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0023", + "name": "tree_0023", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -2.1655, + 0, + -15.2198 + ], + "rotation": [ + 0, + 5.4326, + 0 + ], + "scale": [ + 0.9015, + 0.9015, + 0.9015 + ] + }, + "tint": [ + 1.0451, + 0.9774, + 1.0361, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0024", + "name": "tree_0024", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -31.8611, + -0.0212, + -18.1789 + ], + "rotation": [ + 0, + 5.2485, + 0 + ], + "scale": [ + 1.4182, + 1.4182, + 1.4182 + ] + }, + "tint": [ + 0.9082, + 1.0459, + 0.9265, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0025", + "name": "tree_0025", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 19.5378, + 0.3064, + 33.5428 + ], + "rotation": [ + 0, + 2.224, + 0 + ], + "scale": [ + 1.2602, + 1.2602, + 1.2602 + ] + }, + "tint": [ + 1.0177, + 0.9911, + 1.0142, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0026", + "name": "tree_0026", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 28.1631, + 0.4647, + 16.6417 + ], + "rotation": [ + 0, + 4.0031, + 0 + ], + "scale": [ + 0.9019, + 0.9019, + 0.9019 + ] + }, + "tint": [ + 0.9252, + 1.0374, + 0.9402, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0027", + "name": "tree_0027", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -19.7816, + 0.5423, + -24.1365 + ], + "rotation": [ + 0, + 5.4975, + 0 + ], + "scale": [ + 1.0475, + 1.0475, + 1.0475 + ] + }, + "tint": [ + 0.9337, + 1.0332, + 0.9469, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0028", + "name": "tree_0028", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -12.5785, + 0, + 1.0197 + ], + "rotation": [ + 0, + 3.6553, + 0 + ], + "scale": [ + 1.4063, + 1.4063, + 1.4063 + ] + }, + "tint": [ + 0.9758, + 1.0121, + 0.9806, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0029", + "name": "tree_0029", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -5.7408, + 0, + -3.4074 + ], + "rotation": [ + 0, + 2.2198, + 0 + ], + "scale": [ + 0.9398, + 0.9398, + 0.9398 + ] + }, + "tint": [ + 1.0778, + 0.9611, + 1.0622, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0030", + "name": "tree_0030", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -4.2822, + 0.3254, + 32.3875 + ], + "rotation": [ + 0, + 4.1674, + 0 + ], + "scale": [ + 1.0121, + 1.0121, + 1.0121 + ] + }, + "tint": [ + 1.0522, + 0.9739, + 1.0418, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0031", + "name": "tree_0031", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 23.5672, + 1.9041, + -32.9955 + ], + "rotation": [ + 0, + 0.8638, + 0 + ], + "scale": [ + 0.9395, + 0.9395, + 0.9395 + ] + }, + "tint": [ + 1.0886, + 0.9557, + 1.0708, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0032", + "name": "tree_0032", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -34.5624, + 0.0163, + -6.5394 + ], + "rotation": [ + 0, + 4.1004, + 0 + ], + "scale": [ + 0.8946, + 0.8946, + 0.8946 + ] + }, + "tint": [ + 1.0881, + 0.956, + 1.0704, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0033", + "name": "tree_0033", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -28.8637, + 0.4505, + -2.5951 + ], + "rotation": [ + 0, + 0.4329, + 0 + ], + "scale": [ + 1.046, + 1.046, + 1.046 + ] + }, + "tint": [ + 0.9315, + 1.0342, + 0.9452, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0034", + "name": "tree_0034", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 29.2522, + 1.423, + 22.9079 + ], + "rotation": [ + 0, + 1.5453, + 0 + ], + "scale": [ + 1.3492, + 1.3492, + 1.3492 + ] + }, + "tint": [ + 1.0333, + 0.9833, + 1.0267, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0035", + "name": "tree_0035", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -34.1745, + -0.0423, + -18.6673 + ], + "rotation": [ + 0, + 2.2271, + 0 + ], + "scale": [ + 0.8717, + 0.8717, + 0.8717 + ] + }, + "tint": [ + 0.9034, + 1.0483, + 0.9227, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0036", + "name": "tree_0036", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -10.8597, + 0.4677, + -29.1272 + ], + "rotation": [ + 0, + 5.3716, + 0 + ], + "scale": [ + 1.1254, + 1.1254, + 1.1254 + ] + }, + "tint": [ + 0.9199, + 1.04, + 0.9359, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0037", + "name": "tree_0037", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 27.3748, + 3.1742, + -23.1725 + ], + "rotation": [ + 0, + 3.2344, + 0 + ], + "scale": [ + 1.2499, + 1.2499, + 1.2499 + ] + }, + "tint": [ + 0.9166, + 1.0417, + 0.9333, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0038", + "name": "tree_0038", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 27.0408, + 0.2139, + -0.1241 + ], + "rotation": [ + 0, + 5.5441, + 0 + ], + "scale": [ + 1.2744, + 1.2744, + 1.2744 + ] + }, + "tint": [ + 0.9911, + 1.0045, + 0.9929, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0039", + "name": "tree_0039", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 29.1308, + 0.104, + 3.0387 + ], + "rotation": [ + 0, + 0.4886, + 0 + ], + "scale": [ + 1.3858, + 1.3858, + 1.3858 + ] + }, + "tint": [ + 0.9136, + 1.0432, + 0.9309, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0040", + "name": "tree_0040", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -24.7026, + 3.013, + 28.3747 + ], + "rotation": [ + 0, + 2.3829, + 0 + ], + "scale": [ + 1.1512, + 1.1512, + 1.1512 + ] + }, + "tint": [ + 1.0739, + 0.963, + 1.0591, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0041", + "name": "tree_0041", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -35.9278, + 1.4701, + 27.5095 + ], + "rotation": [ + 0, + 2.0094, + 0 + ], + "scale": [ + 1.2911, + 1.2911, + 1.2911 + ] + }, + "tint": [ + 0.9522, + 1.0239, + 0.9617, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0042", + "name": "tree_0042", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 16.8928, + 0.152, + -5.2889 + ], + "rotation": [ + 0, + 1.4766, + 0 + ], + "scale": [ + 1.1661, + 1.1661, + 1.1661 + ] + }, + "tint": [ + 1.0343, + 0.9828, + 1.0275, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0043", + "name": "tree_0043", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -2.0751, + 0, + -11.6529 + ], + "rotation": [ + 0, + 1.0298, + 0 + ], + "scale": [ + 0.861, + 0.861, + 0.861 + ] + }, + "tint": [ + 1.0331, + 0.9835, + 1.0265, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0044", + "name": "tree_0044", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 31.93, + 0.9802, + 34.799 + ], + "rotation": [ + 0, + 2.6827, + 0 + ], + "scale": [ + 1.388, + 1.388, + 1.388 + ] + }, + "tint": [ + 1.0274, + 0.9863, + 1.022, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0045", + "name": "tree_0045", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 13.8247, + 0.7178, + -32.0141 + ], + "rotation": [ + 0, + 0.1985, + 0 + ], + "scale": [ + 1.3166, + 1.3166, + 1.3166 + ] + }, + "tint": [ + 0.9667, + 1.0166, + 0.9734, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0046", + "name": "tree_0046", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 25.2256, + 1.0965, + -8.6697 + ], + "rotation": [ + 0, + 0.4642, + 0 + ], + "scale": [ + 1.1532, + 1.1532, + 1.1532 + ] + }, + "tint": [ + 0.9234, + 1.0383, + 0.9387, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0047", + "name": "tree_0047", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -32.6471, + -0.1375, + -14.9321 + ], + "rotation": [ + 0, + 2.0487, + 0 + ], + "scale": [ + 1.3063, + 1.3063, + 1.3063 + ] + }, + "tint": [ + 0.984, + 1.008, + 0.9872, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0048", + "name": "tree_0048", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -16.4692, + 2.1632, + 29.5698 + ], + "rotation": [ + 0, + 0.4386, + 0 + ], + "scale": [ + 1.1839, + 1.1839, + 1.1839 + ] + }, + "tint": [ + 0.9927, + 1.0037, + 0.9941, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0049", + "name": "tree_0049", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -7.069, + -0.0043, + -15.416 + ], + "rotation": [ + 0, + 1.4929, + 0 + ], + "scale": [ + 1.4427, + 1.4427, + 1.4427 + ] + }, + "tint": [ + 1.0516, + 0.9742, + 1.0413, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0050", + "name": "tree_0050", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 3.2128, + 0, + -5.5341 + ], + "rotation": [ + 0, + 2.4138, + 0 + ], + "scale": [ + 1.0564, + 1.0564, + 1.0564 + ] + }, + "tint": [ + 1.0138, + 0.9931, + 1.0111, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0051", + "name": "tree_0051", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -15.2387, + 0.5879, + -34.3091 + ], + "rotation": [ + 0, + 3.8593, + 0 + ], + "scale": [ + 1.4057, + 1.4057, + 1.4057 + ] + }, + "tint": [ + 1.0455, + 0.9772, + 1.0364, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0052", + "name": "tree_0052", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -30.3728, + 2.5849, + 26.9765 + ], + "rotation": [ + 0, + 0.0838, + 0 + ], + "scale": [ + 1.0287, + 1.0287, + 1.0287 + ] + }, + "tint": [ + 0.9457, + 1.0271, + 0.9566, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0053", + "name": "tree_0053", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -33.6044, + 0.7769, + 35.8362 + ], + "rotation": [ + 0, + 2.8449, + 0 + ], + "scale": [ + 0.9385, + 0.9385, + 0.9385 + ] + }, + "tint": [ + 0.9022, + 1.0489, + 0.9218, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0054", + "name": "tree_0054", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -10.038, + 0, + 4.034 + ], + "rotation": [ + 0, + 1.4914, + 0 + ], + "scale": [ + 0.9685, + 0.9685, + 0.9685 + ] + }, + "tint": [ + 0.9162, + 1.0419, + 0.9329, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0055", + "name": "tree_0055", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 28.7937, + 0.3136, + -2.6095 + ], + "rotation": [ + 0, + 1.7838, + 0 + ], + "scale": [ + 0.9286, + 0.9286, + 0.9286 + ] + }, + "tint": [ + 0.9905, + 1.0048, + 0.9924, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0056", + "name": "tree_0056", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 15.7455, + -0.046, + 34.4062 + ], + "rotation": [ + 0, + 5.6963, + 0 + ], + "scale": [ + 1.0092, + 1.0092, + 1.0092 + ] + }, + "tint": [ + 1.0327, + 0.9836, + 1.0262, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0057", + "name": "tree_0057", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 31.1733, + 1.8447, + -15.3219 + ], + "rotation": [ + 0, + 2.6135, + 0 + ], + "scale": [ + 1.4291, + 1.4291, + 1.4291 + ] + }, + "tint": [ + 0.9948, + 1.0026, + 0.9958, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0058", + "name": "tree_0058", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 4.8675, + 0, + -4.7072 + ], + "rotation": [ + 0, + 6.2642, + 0 + ], + "scale": [ + 0.9537, + 0.9537, + 0.9537 + ] + }, + "tint": [ + 0.9427, + 1.0287, + 0.9541, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0059", + "name": "tree_0059", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -31.0816, + 1.0671, + 35.8193 + ], + "rotation": [ + 0, + 5.9273, + 0 + ], + "scale": [ + 1.0325, + 1.0325, + 1.0325 + ] + }, + "tint": [ + 0.9945, + 1.0028, + 0.9956, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0060", + "name": "tree_0060", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 4.2309, + 0, + 3.7579 + ], + "rotation": [ + 0, + 1.722, + 0 + ], + "scale": [ + 1.1194, + 1.1194, + 1.1194 + ] + }, + "tint": [ + 0.9494, + 1.0253, + 0.9595, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0061", + "name": "tree_0061", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 12.0198, + -0.1143, + 7.7744 + ], + "rotation": [ + 0, + 5.643, + 0 + ], + "scale": [ + 1.1238, + 1.1238, + 1.1238 + ] + }, + "tint": [ + 0.9267, + 1.0367, + 0.9413, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0062", + "name": "tree_0062", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 30.8185, + 2.8044, + -22.9827 + ], + "rotation": [ + 0, + 3.0544, + 0 + ], + "scale": [ + 1.2301, + 1.2301, + 1.2301 + ] + }, + "tint": [ + 0.9021, + 1.049, + 0.9216, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0063", + "name": "tree_0063", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -33.3646, + 0.2919, + -3.0742 + ], + "rotation": [ + 0, + 0.8428, + 0 + ], + "scale": [ + 1.2658, + 1.2658, + 1.2658 + ] + }, + "tint": [ + 0.9927, + 1.0036, + 0.9942, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0064", + "name": "tree_0064", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -16.0414, + 2.1612, + 28.5646 + ], + "rotation": [ + 0, + 2.5554, + 0 + ], + "scale": [ + 1.1331, + 1.1331, + 1.1331 + ] + }, + "tint": [ + 1.0768, + 0.9616, + 1.0614, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0065", + "name": "tree_0065", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 35.0229, + 2.0214, + -23.2803 + ], + "rotation": [ + 0, + 0.9729, + 0 + ], + "scale": [ + 1.4264, + 1.4264, + 1.4264 + ] + }, + "tint": [ + 0.9495, + 1.0253, + 0.9596, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0066", + "name": "tree_0066", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 20.1574, + 0.1008, + 3.6431 + ], + "rotation": [ + 0, + 2.8745, + 0 + ], + "scale": [ + 1.1498, + 1.1498, + 1.1498 + ] + }, + "tint": [ + 1.0697, + 0.9651, + 1.0558, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0067", + "name": "tree_0067", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -35.9244, + 0.6679, + 3.4179 + ], + "rotation": [ + 0, + 3.0221, + 0 + ], + "scale": [ + 1.3649, + 1.3649, + 1.3649 + ] + }, + "tint": [ + 1.0036, + 0.9982, + 1.0029, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0068", + "name": "tree_0068", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 27.45, + 2.3833, + -31.3455 + ], + "rotation": [ + 0, + 1.8276, + 0 + ], + "scale": [ + 1.2674, + 1.2674, + 1.2674 + ] + }, + "tint": [ + 0.9369, + 1.0316, + 0.9495, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0069", + "name": "tree_0069", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -22.686, + 0.9609, + 6.8375 + ], + "rotation": [ + 0, + 4.0885, + 0 + ], + "scale": [ + 1.3751, + 1.3751, + 1.3751 + ] + }, + "tint": [ + 0.9815, + 1.0093, + 0.9852, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0070", + "name": "tree_0070", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 1.726, + 0, + 1.6783 + ], + "rotation": [ + 0, + 4.9529, + 0 + ], + "scale": [ + 1.3268, + 1.3268, + 1.3268 + ] + }, + "tint": [ + 1.0966, + 0.9517, + 1.0773, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0071", + "name": "tree_0071", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -33.4992, + 0.3751, + -24.7338 + ], + "rotation": [ + 0, + 1.5075, + 0 + ], + "scale": [ + 1.2232, + 1.2232, + 1.2232 + ] + }, + "tint": [ + 0.9349, + 1.0326, + 0.9479, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0072", + "name": "tree_0072", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 16.9386, + 0.4767, + -9.7217 + ], + "rotation": [ + 0, + 1.8369, + 0 + ], + "scale": [ + 0.9973, + 0.9973, + 0.9973 + ] + }, + "tint": [ + 0.9661, + 1.017, + 0.9729, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0073", + "name": "tree_0073", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + -1.8706, + 0.2123, + -32.3212 + ], + "rotation": [ + 0, + 0.6972, + 0 + ], + "scale": [ + 1.1927, + 1.1927, + 1.1927 + ] + }, + "tint": [ + 1.0515, + 0.9743, + 1.0412, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0074", + "name": "tree_0074", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -5.1799, + 0.0928, + -21.8228 + ], + "rotation": [ + 0, + 2.8767, + 0 + ], + "scale": [ + 1.389, + 1.389, + 1.389 + ] + }, + "tint": [ + 0.9445, + 1.0277, + 0.9556, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0075", + "name": "tree_0075", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -17.6801, + 2.1142, + 19.9855 + ], + "rotation": [ + 0, + 4.4312, + 0 + ], + "scale": [ + 1.2117, + 1.2117, + 1.2117 + ] + }, + "tint": [ + 0.9795, + 1.0102, + 0.9836, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0076", + "name": "tree_0076", + "modelRef": "assets/models/prop_tree.glb", + "prefabRef": null, + "transform": { + "position": [ + 5.3077, + -0.1741, + 25.9049 + ], + "rotation": [ + 0, + 2.0286, + 0 + ], + "scale": [ + 1.1225, + 1.1225, + 1.1225 + ] + }, + "tint": [ + 1.0409, + 0.9796, + 1.0327, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0077", + "name": "tree_0077", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 30.5631, + 2.3599, + -18.0096 + ], + "rotation": [ + 0, + 5.4812, + 0 + ], + "scale": [ + 1.3035, + 1.3035, + 1.3035 + ] + }, + "tint": [ + 1.0076, + 0.9962, + 1.0061, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0078", + "name": "tree_0078", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 14.1407, + -0.1877, + 30.2028 + ], + "rotation": [ + 0, + 4.8182, + 0 + ], + "scale": [ + 0.8706, + 0.8706, + 0.8706 + ] + }, + "tint": [ + 0.905, + 1.0475, + 0.924, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0079", + "name": "tree_0079", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 3.2634, + 0.0557, + -27.3141 + ], + "rotation": [ + 0, + 2.5312, + 0 + ], + "scale": [ + 0.8709, + 0.8709, + 0.8709 + ] + }, + "tint": [ + 1.0132, + 0.9934, + 1.0106, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0080", + "name": "tree_0080", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 27.4921, + 3.0362, + -26.8244 + ], + "rotation": [ + 0, + 4.7393, + 0 + ], + "scale": [ + 0.8605, + 0.8605, + 0.8605 + ] + }, + "tint": [ + 0.9687, + 1.0156, + 0.975, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0081", + "name": "tree_0081", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 23.3894, + 0.2699, + -0.229 + ], + "rotation": [ + 0, + 2.3388, + 0 + ], + "scale": [ + 1.124, + 1.124, + 1.124 + ] + }, + "tint": [ + 0.9881, + 1.006, + 0.9905, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0082", + "name": "tree_0082", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 18.4775, + 0.4726, + -7.6303 + ], + "rotation": [ + 0, + 5.4476, + 0 + ], + "scale": [ + 1.1535, + 1.1535, + 1.1535 + ] + }, + "tint": [ + 0.9052, + 1.0474, + 0.9242, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0083", + "name": "tree_0083", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -18.249, + 0.7206, + -30.7241 + ], + "rotation": [ + 0, + 4.2267, + 0 + ], + "scale": [ + 1.0299, + 1.0299, + 1.0299 + ] + }, + "tint": [ + 0.9127, + 1.0437, + 0.9301, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0084", + "name": "tree_0084", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + 2.3334, + 0.0979, + -32.5137 + ], + "rotation": [ + 0, + 2.9674, + 0 + ], + "scale": [ + 1.2321, + 1.2321, + 1.2321 + ] + }, + "tint": [ + 1.0966, + 0.9517, + 1.0773, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0085", + "name": "tree_0085", + "modelRef": "assets/models/prop_tree2.glb", + "prefabRef": null, + "transform": { + "position": [ + -12.3554, + 1.1604, + 34.0158 + ], + "rotation": [ + 0, + 2.7333, + 0 + ], + "scale": [ + 1.1065, + 1.1065, + 1.1065 + ] + }, + "tint": [ + 1.0644, + 0.9678, + 1.0515, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0086", + "name": "tree_0086", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -25.99, + 3.0921, + 27.2436 + ], + "rotation": [ + 0, + 5.3452, + 0 + ], + "scale": [ + 0.8677, + 0.8677, + 0.8677 + ] + }, + "tint": [ + 0.9044, + 1.0478, + 0.9235, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0087", + "name": "tree_0087", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + -2.2233, + 0, + 5.1861 + ], + "rotation": [ + 0, + 6.162, + 0 + ], + "scale": [ + 1.0256, + 1.0256, + 1.0256 + ] + }, + "tint": [ + 1.0001, + 0.9999, + 1.0001, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + }, + { + "id": "tree_0088", + "name": "tree_0088", + "modelRef": "assets/models/prop_tree3.glb", + "prefabRef": null, + "transform": { + "position": [ + 7.5562, + 0.2826, + -21.5524 + ], + "rotation": [ + 0, + 5.4165, + 0 + ], + "scale": [ + 1.0004, + 1.0004, + 1.0004 + ] + }, + "tint": [ + 0.9163, + 1.0419, + 0.933, + 1 + ], + "tags": [ + "prop", + "tree" + ], + "userData": { + "kind": "prop_tree" + } + } + ], + "lights": [ + { + "id": "light_plaza_n", + "name": "light_plaza_n", + "kind": "point", + "position": [ + 0, + 5, + -20 + ], + "color": [ + 1, + 0.85, + 0.55 + ], + "intensity": 1, + "range": 22 + }, + { + "id": "light_plaza_s", + "name": "light_plaza_s", + "kind": "point", + "position": [ + 0, + 5, + 20 + ], + "color": [ + 1, + 0.85, + 0.55 + ], + "intensity": 1, + "range": 22 + }, + { + "id": "light_house_g", + "name": "light_house_g", + "kind": "point", + "position": [ + -21, + 2.6, + -14 + ], + "color": [ + 0.95, + 0.85, + 0.65 + ], + "intensity": 1.1, + "range": 12 + }, + { + "id": "light_house_up", + "name": "light_house_up", + "kind": "point", + "position": [ + -21, + 5.6, + -14 + ], + "color": [ + 0.85, + 0.9, + 1 + ], + "intensity": 0.9, + "range": 12 + }, + { + "id": "light_hill_ne", + "name": "light_hill_ne", + "kind": "point", + "position": [ + 26, + 5, + -24 + ], + "color": [ + 0.95, + 0.75, + 0.45 + ], + "intensity": 0.8, + "range": 18 + } ], "water": [ - { "id": "river", "kind": "box", - "center": [0, 0, 12], "size": [80, 1, 5], + { + "id": "river", + "kind": "box", + "center": [ + 0, + 0, + 12 + ], + "size": [ + 80, + 1, + 5 + ], "surfaceHeight": 0.05, - "color": [0.20, 0.42, 0.62, 0.75], - "waveAmplitude": 0.05, "waveSpeed": 1.4 } + "color": [ + 0.2, + 0.42, + 0.62, + 0.75 + ], + "waveAmplitude": 0.05, + "waveSpeed": 1.4 + } ], "rivers": [], - "metadata": { "gameId": "shooter" } + "metadata": { + "gameId": "shooter" + } } diff --git a/editor.project.json b/editor.project.json index 6405981..e3e72ad 100644 --- a/editor.project.json +++ b/editor.project.json @@ -4,5 +4,5 @@ "modelsDir": "assets/models", "prefabsDir": "assets/prefabs", "worldsDir": "assets/worlds", - "defaultWorld": "arena_01.world.json" + "defaultWorld": "arena_02.world.json" } diff --git a/package.json b/package.json index c3813a5..7abc3af 100644 --- a/package.json +++ b/package.json @@ -5,17 +5,16 @@ "scripts": { "convert": "bun tools/convert-assets.ts", "props": "bun tools/build-props.ts && bun tools/build-terrain.ts", - "world": "bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts", - "assets": "bun tools/build-props.ts && bun tools/build-terrain.ts && bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts", - "build": "bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts && perry compile src/main.ts -o main", - "dev": "bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts && perry compile src/main.ts -o main && ./main" + "assets": "bun tools/build-props.ts && bun tools/build-terrain.ts", + "build": "perry compile src/main.ts -o main", + "dev": "perry compile src/main.ts -o main && ./main" }, "dependencies": { "bloom": "file:../engine/" }, "perry": { "allow": { - "nativeLibrary": ["bloom", "bloom/core", "bloom/scene", "bloom/physics"] + "nativeLibrary": ["bloom", "bloom/core", "bloom/scene", "bloom/physics", "bloom/world"] } } } diff --git a/src/generated/terrain.ts b/src/generated/terrain.ts deleted file mode 100644 index 7aab14e..0000000 --- a/src/generated/terrain.ts +++ /dev/null @@ -1,273 +0,0 @@ -// GENERATED — do not edit by hand. Regenerate with: bun tools/build-terrain.ts -// -// Heightfield samples for the Jolt heightfieldShape collider in main.ts. -// Grid is 64 × 64, row-major (z * width + x). Cell size -// 1.2698 m. Origin (world position of sample [0, 0]) is -// (-40, 0, -40). Covers the gameplay arena only — the -// visual mesh extends further (skirt hills) but has no collision. - -export const TERRAIN_SAMPLE_COUNT = 64; -export const TERRAIN_CELL_SIZE = 1.2698412698412698; -export const TERRAIN_ORIGIN_X = -40; -export const TERRAIN_ORIGIN_Y = 0; -export const TERRAIN_ORIGIN_Z = -40; - -// Row-major height samples. One number per cell, ~4 KB total. -export const TERRAIN_HEIGHTS: number[] = [ - 0.6377, 0.7659, 0.8941, 1.0184, 1.1338, 1.2352, 1.3174, 1.3757, 1.4065, 1.4078, 1.3792, 1.3224, 1.2412, 1.1407, 1.0273, 0.9075, - 0.7883, 0.6753, 0.5735, 0.4860, 0.4146, 0.3596, 0.3197, 0.2929, 0.2764, 0.2672, 0.2621, 0.2582, 0.2532, 0.2452, 0.2331, 0.2164, - 0.1955, 0.1710, 0.1445, 0.1177, 0.0929, 0.0723, 0.0582, 0.0527, 0.0577, 0.0744, 0.1036, 0.1451, 0.1983, 0.2615, 0.3326, 0.4089, - 0.4870, 0.5636, 0.6353, 0.6990, 0.7518, 0.7916, 0.8168, 0.8267, 0.8213, 0.8011, 0.7674, 0.7218, 0.6666, 0.6038, 0.5358, 0.4650, - 0.6402, 0.7653, 0.8907, 1.0123, 1.1256, 1.2256, 1.3072, 1.3659, 1.3980, 1.4016, 1.3762, 1.3236, 1.2472, 1.1519, 1.0440, 0.9299, - 0.8161, 0.7081, 0.6106, 0.5265, 0.4575, 0.4036, 0.3636, 0.3354, 0.3163, 0.3031, 0.2931, 0.2834, 0.2721, 0.2575, 0.2390, 0.2163, - 0.1902, 0.1618, 0.1329, 0.1058, 0.0829, 0.0666, 0.0594, 0.0636, 0.0807, 0.1120, 0.1578, 0.2175, 0.2899, 0.3727, 0.4630, 0.5571, - 0.6513, 0.7413, 0.8232, 0.8934, 0.9488, 0.9871, 1.0069, 1.0078, 0.9902, 0.9553, 0.9051, 0.8420, 0.7688, 0.6886, 0.6042, 0.5186, - 0.6339, 0.7545, 0.8754, 0.9931, 1.1031, 1.2007, 1.2810, 1.3395, 1.3729, 1.3790, 1.3574, 1.3097, 1.2390, 1.1503, 1.0493, 0.9421, - 0.8349, 0.7331, 0.6409, 0.5610, 0.4950, 0.4426, 0.4027, 0.3732, 0.3513, 0.3343, 0.3193, 0.3040, 0.2865, 0.2658, 0.2412, 0.2132, - 0.1828, 0.1516, 0.1217, 0.0957, 0.0762, 0.0660, 0.0677, 0.0834, 0.1148, 0.1626, 0.2269, 0.3067, 0.4000, 0.5039, 0.6146, 0.7278, - 0.8387, 0.9425, 1.0345, 1.1108, 1.1680, 1.2038, 1.2169, 1.2072, 1.1757, 1.1243, 1.0557, 0.9733, 0.8806, 0.7813, 0.6792, 0.5777, - 0.6189, 0.7336, 0.8487, 0.9612, 1.0668, 1.1610, 1.2393, 1.2973, 1.3318, 1.3405, 1.3231, 1.2810, 1.2171, 1.1360, 1.0430, 0.9440, - 0.8446, 0.7500, 0.6639, 0.5890, 0.5263, 0.4759, 0.4363, 0.4055, 0.3810, 0.3601, 0.3403, 0.3195, 0.2963, 0.2697, 0.2398, 0.2073, - 0.1736, 0.1407, 0.1111, 0.0876, 0.0731, 0.0707, 0.0829, 0.1119, 0.1592, 0.2253, 0.3099, 0.4113, 0.5269, 0.6530, 0.7851, 0.9180, - 1.0460, 1.1637, 1.2657, 1.3477, 1.4059, 1.4381, 1.4433, 1.4216, 1.3747, 1.3053, 1.2169, 1.1136, 1.0000, 0.8805, 0.7597, 0.6413, - 0.5956, 0.7030, 0.8112, 0.9173, 1.0174, 1.1075, 1.1831, 1.2402, 1.2755, 1.2870, 1.2743, 1.2383, 1.1820, 1.1094, 1.0255, 0.9356, - 0.8451, 0.7585, 0.6793, 0.6098, 0.5511, 0.5028, 0.4637, 0.4319, 0.4048, 0.3802, 0.3557, 0.3298, 0.3011, 0.2693, 0.2348, 0.1986, - 0.1627, 0.1292, 0.1011, 0.0816, 0.0736, 0.0804, 0.1047, 0.1485, 0.2131, 0.2988, 0.4047, 0.5287, 0.6675, 0.8167, 0.9707, 1.1235, - 1.2687, 1.4001, 1.5117, 1.5987, 1.6572, 1.6850, 1.6811, 1.6463, 1.5829, 1.4943, 1.3849, 1.2598, 1.1244, 0.9840, 0.8437, 0.7080, - 0.5645, 0.6636, 0.7637, 0.8624, 0.9562, 1.0413, 1.1136, 1.1693, 1.2054, 1.2198, 1.2119, 1.1827, 1.1346, 1.0713, 0.9972, 0.9174, - 0.8365, 0.7586, 0.6868, 0.6233, 0.5688, 0.5230, 0.4846, 0.4517, 0.4223, 0.3941, 0.3653, 0.3345, 0.3009, 0.2645, 0.2262, 0.1873, - 0.1501, 0.1173, 0.0920, 0.0776, 0.0774, 0.0947, 0.1321, 0.1917, 0.2746, 0.3808, 0.5088, 0.6559, 0.8182, 0.9904, 1.1663, 1.3388, - 1.5009, 1.6454, 1.7660, 1.8573, 1.9153, 1.9377, 1.9239, 1.8753, 1.7946, 1.6862, 1.5553, 1.4079, 1.2503, 1.0888, 0.9289, 0.7759, - 0.5263, 0.6160, 0.7072, 0.7977, 0.8844, 0.9639, 1.0324, 1.0865, 1.1231, 1.1403, 1.1375, 1.1154, 1.0760, 1.0225, 0.9590, 0.8898, - 0.8190, 0.7504, 0.6866, 0.6293, 0.5793, 0.5361, 0.4985, 0.4648, 0.4331, 0.4016, 0.3688, 0.3336, 0.2957, 0.2555, 0.2141, 0.1735, - 0.1361, 0.1050, 0.0836, 0.0754, 0.0840, 0.1127, 0.1641, 0.2402, 0.3418, 0.4686, 0.6187, 0.7888, 0.9743, 1.1690, 1.3660, 1.5575, - 1.7354, 1.8922, 2.0208, 2.1155, 2.1721, 2.1885, 2.1643, 2.1014, 2.0032, 1.8748, 1.7225, 1.5530, 1.3736, 1.1913, 1.0124, 0.8425, - 0.4818, 0.5614, 0.6430, 0.7245, 0.8036, 0.8770, 0.9413, 0.9934, 1.0304, 1.0505, 1.0529, 1.0380, 1.0076, 0.9643, 0.9117, 0.8535, - 0.7933, 0.7342, 0.6786, 0.6278, 0.5824, 0.5419, 0.5052, 0.4708, 0.4371, 0.4026, 0.3662, 0.3271, 0.2855, 0.2423, 0.1988, 0.1574, - 0.1208, 0.0924, 0.0758, 0.0747, 0.0928, 0.1335, 0.1992, 0.2919, 0.4121, 0.5591, 0.7307, 0.9228, 1.1303, 1.3463, 1.5630, 1.7720, - 1.9644, 2.1321, 2.2674, 2.3645, 2.4190, 2.4288, 2.3939, 2.3167, 2.2012, 2.0534, 1.8804, 1.6898, 1.4896, 1.2876, 1.0908, 0.9052, - 0.4320, 0.5010, 0.5724, 0.6446, 0.7156, 0.7825, 0.8424, 0.8922, 0.9295, 0.9523, 0.9598, 0.9523, 0.9310, 0.8981, 0.8566, 0.8095, - 0.7600, 0.7105, 0.6631, 0.6189, 0.5781, 0.5403, 0.5046, 0.4697, 0.4343, 0.3971, 0.3575, 0.3151, 0.2706, 0.2251, 0.1804, 0.1391, - 0.1042, 0.0794, 0.0684, 0.0751, 0.1031, 0.1559, 0.2359, 0.3447, 0.4828, 0.6489, 0.8405, 1.0530, 1.2806, 1.5159, 1.7502, 1.9745, - 2.1795, 2.3562, 2.4968, 2.5950, 2.6466, 2.6494, 2.6039, 2.5128, 2.3810, 2.2150, 2.0227, 1.8126, 1.5934, 1.3736, 1.1606, 0.9610, - 0.3779, 0.4360, 0.4970, 0.5597, 0.6223, 0.6826, 0.7378, 0.7852, 0.8225, 0.8480, 0.8605, 0.8602, 0.8479, 0.8254, 0.7949, 0.7589, - 0.7199, 0.6800, 0.6407, 0.6028, 0.5666, 0.5315, 0.4969, 0.4616, 0.4246, 0.3851, 0.3428, 0.2979, 0.2512, 0.2042, 0.1592, 0.1189, - 0.0866, 0.0661, 0.0613, 0.0760, 0.1141, 0.1788, 0.2724, 0.3964, 0.5509, 0.7345, 0.9439, 1.1745, 1.4196, 1.6713, 1.9205, 2.1574, - 2.3723, 2.5559, 2.7000, 2.7981, 2.8459, 2.8415, 2.7857, 2.6817, 2.5349, 2.3525, 2.1430, 1.9158, 1.6802, 1.4451, 1.2184, 1.0071, - 0.3207, 0.3679, 0.4185, 0.4716, 0.5259, 0.5794, 0.6298, 0.6747, 0.7120, 0.7399, 0.7573, 0.7640, 0.7605, 0.7479, 0.7281, 0.7028, - 0.6740, 0.6433, 0.6118, 0.5800, 0.5481, 0.5157, 0.4821, 0.4466, 0.4083, 0.3670, 0.3226, 0.2757, 0.2276, 0.1800, 0.1355, 0.0970, - 0.0681, 0.0525, 0.0542, 0.0772, 0.1250, 0.2009, 0.3071, 0.4448, 0.6138, 0.8124, 1.0370, 1.2825, 1.5418, 1.8065, 2.0671, 2.3135, - 2.5354, 2.7232, 2.8687, 2.9652, 3.0085, 2.9969, 2.9315, 2.8159, 2.6560, 2.4596, 2.2359, 1.9946, 1.7457, 1.4984, 1.2612, 1.0410, - 0.2618, 0.2982, 0.3385, 0.3822, 0.4283, 0.4752, 0.5209, 0.5633, 0.6003, 0.6304, 0.6524, 0.6657, 0.6705, 0.6675, 0.6577, 0.6426, - 0.6235, 0.6014, 0.5771, 0.5511, 0.5232, 0.4933, 0.4607, 0.4250, 0.3857, 0.3430, 0.2971, 0.2490, 0.2002, 0.1529, 0.1097, 0.0738, - 0.0488, 0.0386, 0.0470, 0.0780, 0.1352, 0.2213, 0.3387, 0.4881, 0.6691, 0.8798, 1.1163, 1.3729, 1.6425, 1.9163, 2.1844, 2.4365, - 2.6620, 2.8513, 2.9959, 3.0893, 3.1275, 3.1088, 3.0348, 2.9092, 2.7386, 2.5312, 2.2965, 2.0448, 1.7863, 1.5306, 1.2863, 1.0605, - 0.2023, 0.2284, 0.2589, 0.2936, 0.3319, 0.3724, 0.4135, 0.4533, 0.4901, 0.5221, 0.5482, 0.5676, 0.5801, 0.5858, 0.5854, 0.5797, - 0.5693, 0.5551, 0.5375, 0.5166, 0.4924, 0.4646, 0.4330, 0.3972, 0.3573, 0.3135, 0.2667, 0.2181, 0.1695, 0.1233, 0.0822, 0.0496, - 0.0291, 0.0245, 0.0397, 0.0784, 0.1440, 0.2392, 0.3658, 0.5246, 0.7149, 0.9343, 1.1789, 1.4427, 1.7183, 1.9968, 2.2681, 2.5218, - 2.7473, 2.9350, 3.0765, 3.1654, 3.1977, 3.1723, 3.0907, 2.9573, 2.7787, 2.5635, 2.3216, 2.0635, 1.7995, 1.5395, 1.2920, 1.0642, - 0.1436, 0.1600, 0.1813, 0.2076, 0.2386, 0.2731, 0.3099, 0.3473, 0.3837, 0.4174, 0.4472, 0.4720, 0.4913, 0.5049, 0.5128, 0.5154, - 0.5129, 0.5056, 0.4938, 0.4774, 0.4563, 0.4304, 0.3995, 0.3638, 0.3235, 0.2793, 0.2322, 0.1838, 0.1346, 0.0884, 0.0507, 0.0234, - 0.0088, 0.0100, 0.0311, 0.0773, 0.1511, 0.2538, 0.3877, 0.5533, 0.7497, 0.9743, 1.2229, 1.4896, 1.7667, 2.0452, 2.3153, 2.5665, - 2.7883, 2.9713, 3.1074, 3.1902, 3.2163, 3.1845, 3.0968, 2.9577, 2.7741, 2.5547, 2.3096, 2.0493, 1.7842, 1.5241, 1.2775, 1.0514, - 0.0869, 0.0945, 0.1075, 0.1262, 0.1505, 0.1797, 0.2125, 0.2476, 0.2835, 0.3186, 0.3515, 0.3809, 0.4061, 0.4265, 0.4415, 0.4512, - 0.4554, 0.4539, 0.4469, 0.4341, 0.4156, 0.3912, 0.3610, 0.3254, 0.2851, 0.2319, 0.1769, 0.1273, 0.0838, 0.0475, 0.0192, 0.0001, - -0.0079, -0.0024, 0.0201, 0.0643, 0.1359, 0.2416, 0.3891, 0.5737, 0.7730, 0.9990, 1.2476, 1.5127, 1.7867, 2.0607, 2.3251, 2.5696, - 2.7842, 2.9595, 3.0878, 3.1634, 3.1827, 3.1452, 3.0528, 2.9104, 2.7248, 2.5049, 2.2606, 2.0024, 1.7405, 1.4846, 1.2430, 1.0224, - 0.0335, 0.0333, 0.0390, 0.0511, 0.0696, 0.0940, 0.1234, 0.1565, 0.1918, 0.2279, 0.2633, 0.2965, 0.3265, 0.3523, 0.3732, 0.3885, - 0.3980, 0.4012, 0.3978, 0.3878, 0.3711, 0.3478, 0.3182, 0.2676, 0.2128, 0.1620, 0.1164, 0.0767, 0.0432, 0.0165, -0.0031, -0.0150, - -0.0180, -0.0101, 0.0117, 0.0514, 0.1145, 0.2075, 0.3379, 0.5137, 0.7424, 1.0086, 1.2531, 1.5123, 1.7788, 2.0440, 2.2984, 2.5323, - 2.7361, 2.9010, 3.0197, 3.0867, 3.0991, 3.0564, 2.9609, 2.8175, 2.6329, 2.4160, 2.1765, 1.9246, 1.6702, 1.4226, 1.1898, 0.9780, - -0.0154, -0.0223, -0.0227, -0.0160, -0.0023, 0.0182, 0.0446, 0.0759, 0.1106, 0.1474, 0.1845, 0.2206, 0.2542, 0.2841, 0.3092, 0.3288, - 0.3420, 0.3484, 0.3476, 0.3394, 0.3238, 0.2926, 0.2408, 0.1908, 0.1445, 0.1030, 0.0672, 0.0374, 0.0137, -0.0040, -0.0159, -0.0220, - -0.0215, -0.0132, 0.0057, 0.0388, 0.0913, 0.1694, 0.2806, 0.4326, 0.6331, 0.8890, 1.2054, 1.4899, 1.7448, 1.9971, 2.2378, 2.4576, - 2.6476, 2.7996, 2.9068, 2.9644, 2.9697, 2.9226, 2.8256, 2.6833, 2.5027, 2.2922, 2.0611, 1.8193, 1.5762, 1.3406, 1.1200, 0.9203, - -0.0589, -0.0710, -0.0761, -0.0738, -0.0638, -0.0463, -0.0222, 0.0076, 0.0417, 0.0787, 0.1170, 0.1548, 0.1907, 0.2232, 0.2510, 0.2731, - 0.2886, 0.2967, 0.2972, 0.2897, 0.2574, 0.2121, 0.1675, 0.1257, 0.0882, 0.0563, 0.0303, 0.0103, -0.0041, -0.0137, -0.0192, -0.0210, - -0.0190, -0.0120, 0.0021, 0.0269, 0.0672, 0.1291, 0.2199, 0.3472, 0.5187, 0.7412, 1.0200, 1.3575, 1.6877, 1.9236, 2.1472, 2.3499, - 2.5236, 2.6607, 2.7551, 2.8026, 2.8009, 2.7502, 2.6530, 2.5140, 2.3399, 2.1387, 1.9193, 1.6909, 1.4625, 1.2421, 1.0367, 0.8517, - -0.0960, -0.1118, -0.1202, -0.1208, -0.1134, -0.0980, -0.0755, -0.0469, -0.0134, 0.0235, 0.0621, 0.1006, 0.1375, 0.1710, 0.1999, 0.2228, - 0.2388, 0.2472, 0.2476, 0.2207, 0.1828, 0.1439, 0.1068, 0.0734, 0.0451, 0.0228, 0.0065, -0.0041, -0.0102, -0.0130, -0.0136, -0.0129, - -0.0110, -0.0073, 0.0005, 0.0155, 0.0427, 0.0879, 0.1583, 0.2613, 0.4043, 0.5942, 0.8360, 1.1324, 1.4830, 1.8280, 2.0318, 2.2151, - 2.3705, 2.4912, 2.5718, 2.6088, 2.6003, 2.5468, 2.4508, 2.3170, 2.1516, 1.9622, 1.7572, 1.5450, 1.3339, 1.1313, 0.9435, 0.7751, - -0.1258, -0.1438, -0.1541, -0.1562, -0.1500, -0.1358, -0.1142, -0.0864, -0.0534, -0.0171, 0.0211, 0.0592, 0.0956, 0.1286, 0.1568, 0.1788, - 0.1937, 0.2008, 0.1839, 0.1537, 0.1210, 0.0888, 0.0594, 0.0347, 0.0157, 0.0030, -0.0039, -0.0061, -0.0050, -0.0024, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0044, 0.0181, 0.0469, 0.0977, 0.1777, 0.2942, 0.4535, 0.6605, 0.9178, 1.2251, 1.5787, 1.8975, 2.0597, - 2.1954, 2.2988, 2.3652, 2.3916, 2.3767, 2.3211, 2.2276, 2.1004, 1.9456, 1.7700, 1.5814, 1.3876, 1.1958, 1.0128, 0.8441, 0.6939, - -0.1477, -0.1663, -0.1769, -0.1791, -0.1730, -0.1589, -0.1375, -0.1100, -0.0777, -0.0422, -0.0052, 0.0314, 0.0660, 0.0969, 0.1226, 0.1419, - 0.1540, 0.1484, 0.1260, 0.0996, 0.0723, 0.0469, 0.0255, 0.0097, 0.0001, -0.0033, -0.0016, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0065, 0.0394, 0.0988, 0.1914, 0.3233, 0.4988, 0.7202, 0.9873, 1.2966, 1.6411, 1.8906, - 2.0059, 2.0916, 2.1436, 2.1597, 2.1389, 2.0822, 1.9921, 1.8729, 1.7299, 1.5696, 1.3989, 1.2247, 1.0536, 0.8913, 0.7427, 0.6112, - -0.1613, -0.1789, -0.1882, -0.1891, -0.1818, -0.1667, -0.1448, -0.1172, -0.0855, -0.0513, -0.0163, 0.0178, 0.0492, 0.0764, 0.0980, 0.1130, - 0.1173, 0.1016, 0.0807, 0.0580, 0.0362, 0.0178, 0.0047, -0.0020, -0.0023, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0257, 0.0981, 0.2064, 0.3545, 0.5442, 0.7750, 1.0436, 1.3436, 1.6657, - 1.8093, 1.8774, 1.9154, 1.9217, 1.8957, 1.8386, 1.7528, 1.6424, 1.5123, 1.3682, 1.2161, 1.0623, 0.9123, 0.7712, 0.6428, 0.5301, - -0.1663, -0.1813, -0.1878, -0.1860, -0.1762, -0.1591, -0.1359, -0.1080, -0.0768, -0.0442, -0.0118, 0.0186, 0.0455, 0.0675, 0.0834, 0.0924, - 0.0834, 0.0665, 0.0469, 0.0277, 0.0116, 0.0006, -0.0039, -0.0014, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0152, 0.1043, 0.2295, 0.3921, 0.5912, 0.8234, 1.0829, 1.3612, - 1.6121, 1.6633, 1.6881, 1.6853, 1.6549, 1.5982, 1.5175, 1.4166, 1.2998, 1.1722, 1.0390, 0.9056, 0.7767, 0.6564, 0.5479, 0.4535, - -0.1625, -0.1734, -0.1757, -0.1698, -0.1564, -0.1364, -0.1112, -0.0825, -0.0519, -0.0211, 0.0080, 0.0338, 0.0550, 0.0704, 0.0791, 0.0763, - 0.0604, 0.0416, 0.0230, 0.0074, -0.0028, -0.0060, -0.0017, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0173, 0.1244, 0.2647, 0.4368, 0.6372, 0.8605, 1.0991, - 1.3436, 1.4555, 1.4681, 1.4573, 1.4234, 1.3678, 1.2928, 1.2016, 1.0983, 0.9871, 0.8726, 0.7591, 0.6505, 0.5502, 0.4606, 0.3834, - -0.1500, -0.1554, -0.1522, -0.1409, -0.1227, -0.0989, -0.0712, -0.0413, -0.0112, 0.0174, 0.0426, 0.0630, 0.0773, 0.0848, 0.0850, 0.0681, - 0.0464, 0.0251, 0.0073, -0.0045, -0.0086, -0.0040, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0385, 0.1610, 0.3107, 0.4840, 0.6756, 0.8788, - 1.0855, 1.2588, 1.2606, 1.2430, 1.2065, 1.1527, 1.0837, 1.0025, 0.9125, 0.8173, 0.7206, 0.6261, 0.5368, 0.4552, 0.3831, 0.3216, - -0.1292, -0.1277, -0.1176, -0.0999, -0.0760, -0.0476, -0.0166, 0.0147, 0.0444, 0.0705, 0.0913, 0.1055, 0.1120, 0.1105, 0.0972, 0.0682, - 0.0397, 0.0154, -0.0019, -0.0099, -0.0078, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0794, 0.2109, 0.3613, 0.5257, 0.6978, - 0.8708, 1.0372, 1.0693, 1.0461, 1.0081, 0.9568, 0.8942, 0.8228, 0.7457, 0.6657, 0.5859, 0.5090, 0.4374, 0.3729, 0.3166, 0.2691, - -0.1003, -0.0908, -0.0728, -0.0477, -0.0171, 0.0166, 0.0513, 0.0844, 0.1137, 0.1372, 0.1532, 0.1604, 0.1584, 0.1470, 0.1155, 0.0748, - 0.0387, 0.0109, -0.0061, -0.0107, -0.0025, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0175, 0.1345, 0.2658, 0.4068, 0.5519, - 0.6954, 0.8312, 0.8964, 0.8691, 0.8306, 0.7824, 0.7263, 0.6647, 0.5998, 0.5341, 0.4698, 0.4091, 0.3534, 0.3041, 0.2618, 0.2264, - -0.0641, -0.0456, -0.0187, 0.0148, 0.0527, 0.0924, 0.1312, 0.1664, 0.1954, 0.2161, 0.2269, 0.2268, 0.2156, 0.1935, 0.1404, 0.0869, - 0.0423, 0.0102, -0.0071, -0.0086, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0782, 0.1936, 0.3147, 0.4365, - 0.5544, 0.6635, 0.7431, 0.7130, 0.6750, 0.6305, 0.5812, 0.5290, 0.4756, 0.4231, 0.3729, 0.3266, 0.2851, 0.2491, 0.2186, 0.1933, - -0.0211, 0.0072, 0.0437, 0.0862, 0.1321, 0.1782, 0.2216, 0.2591, 0.2879, 0.3058, 0.3112, 0.3034, 0.2825, 0.2465, 0.1711, 0.1037, - 0.0496, 0.0123, -0.0061, -0.0053, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0389, 0.1408, 0.2447, 0.3466, - 0.4424, 0.5287, 0.6024, 0.5778, 0.5412, 0.5010, 0.4585, 0.4153, 0.3728, 0.3322, 0.2947, 0.2611, 0.2319, 0.2071, 0.1864, 0.1693, - 0.0278, 0.0665, 0.1132, 0.1653, 0.2196, 0.2726, 0.3208, 0.3608, 0.3896, 0.4047, 0.4047, 0.3891, 0.3583, 0.3022, 0.2076, 0.1250, - 0.0601, 0.0166, -0.0040, -0.0021, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0134, 0.1037, 0.1927, 0.2772, - 0.3541, 0.4209, 0.4760, 0.4625, 0.4283, 0.3928, 0.3572, 0.3226, 0.2901, 0.2604, 0.2341, 0.2115, 0.1926, 0.1771, 0.1643, 0.1535, - 0.0817, 0.1313, 0.1886, 0.2506, 0.3137, 0.3739, 0.4273, 0.4700, 0.4989, 0.5114, 0.5061, 0.4827, 0.4420, 0.3652, 0.2502, 0.1511, - 0.0742, 0.0230, -0.0012, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0788, 0.1547, 0.2240, - 0.2846, 0.3351, 0.3748, 0.3656, 0.3346, 0.3042, 0.2755, 0.2492, 0.2258, 0.2058, 0.1892, 0.1760, 0.1657, 0.1577, 0.1510, 0.1448, - 0.1396, 0.2005, 0.2686, 0.3408, 0.4128, 0.4805, 0.5393, 0.5851, 0.6143, 0.6245, 0.6141, 0.5831, 0.5328, 0.4366, 0.2999, 0.1830, - 0.0925, 0.0319, 0.0021, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0633, 0.1271, 0.1830, - 0.2297, 0.2666, 0.2939, 0.2850, 0.2580, 0.2332, 0.2113, 0.1928, 0.1778, 0.1663, 0.1582, 0.1528, 0.1495, 0.1472, 0.1450, 0.1417, - 0.2008, 0.2729, 0.3521, 0.4345, 0.5157, 0.5909, 0.6554, 0.7045, 0.7345, 0.7427, 0.7278, 0.6897, 0.6303, 0.5179, 0.3583, 0.2221, - 0.1162, 0.0442, 0.0066, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0544, 0.1071, 0.1510, - 0.1856, 0.2112, 0.2288, 0.2188, 0.1964, 0.1775, 0.1623, 0.1511, 0.1438, 0.1399, 0.1389, 0.1399, 0.1420, 0.1441, 0.1448, 0.1432, - 0.2642, 0.3476, 0.4377, 0.5304, 0.6209, 0.7040, 0.7744, 0.8272, 0.8585, 0.8654, 0.8465, 0.8021, 0.7342, 0.6114, 0.4278, 0.2705, - 0.1471, 0.0614, 0.0134, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0499, 0.0920, 0.1251, - 0.1494, 0.1658, 0.1760, 0.1649, 0.1477, 0.1348, 0.1263, 0.1220, 0.1216, 0.1243, 0.1293, 0.1355, 0.1416, 0.1466, 0.1490, 0.1478, - 0.3290, 0.4236, 0.5246, 0.6276, 0.7274, 0.8185, 0.8952, 0.9524, 0.9856, 0.9919, 0.9699, 0.9201, 0.8447, 0.7201, 0.5111, 0.3310, - 0.1879, 0.0858, 0.0246, 0.0007, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0068, 0.0476, 0.0796, 0.1030, - 0.1185, 0.1277, 0.1328, 0.1216, 0.1100, 0.1033, 0.1013, 0.1035, 0.1093, 0.1177, 0.1275, 0.1376, 0.1466, 0.1532, 0.1562, 0.1544, - 0.3945, 0.5000, 0.6118, 0.7251, 0.8344, 0.9338, 1.0173, 1.0794, 1.1153, 1.1220, 1.0981, 1.0440, 0.9624, 0.8476, 0.6119, 0.4070, - 0.2417, 0.1203, 0.0427, 0.0052, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0146, 0.0457, 0.0682, 0.0829, - 0.0911, 0.0949, 0.0970, 0.0873, 0.0818, 0.0814, 0.0857, 0.0940, 0.1053, 0.1184, 0.1321, 0.1450, 0.1557, 0.1629, 0.1654, 0.1621, - 0.4599, 0.5762, 0.6985, 0.8221, 0.9411, 1.0493, 1.1402, 1.2080, 1.2478, 1.2562, 1.2316, 1.1747, 1.0882, 0.9765, 0.7343, 0.5026, - 0.3124, 0.1686, 0.0714, 0.0168, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0209, 0.0425, 0.0562, 0.0633, - 0.0658, 0.0663, 0.0660, 0.0612, 0.0621, 0.0681, 0.0785, 0.0924, 0.1085, 0.1255, 0.1420, 0.1566, 0.1679, 0.1747, 0.1757, 0.1703, - 0.5248, 0.6515, 0.7843, 0.9183, 1.0472, 1.1646, 1.2637, 1.3384, 1.3832, 1.3947, 1.3711, 1.3130, 1.2231, 1.1063, 0.8835, 0.6227, - 0.4048, 0.2353, 0.1148, 0.0397, 0.0030, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, - 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0040, 0.0241, 0.0366, 0.0424, 0.0433, - 0.0420, 0.0411, 0.0411, 0.0430, 0.0506, 0.0631, 0.0795, 0.0984, 0.1187, 0.1387, 0.1570, 0.1721, 0.1829, 0.1882, 0.1869, 0.1786, - 0.0145, 0.0501, 0.1115, 0.1788, 0.2438, 0.3031, 0.3536, 0.3922, 0.4162, 0.4237, 0.4140, 0.3872, 0.3446, 0.2885, 0.2030, 0.0669, - -0.0490, -0.1417, -0.2104, -0.2567, -0.2838, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, - -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2935, -0.2879, -0.2829, -0.2810, -0.2814, -0.2830, - -0.2844, -0.2843, -0.2825, -0.2781, -0.2713, -0.2624, -0.2521, -0.2410, -0.2300, -0.2198, -0.2109, -0.2041, -0.1999, -0.1987, -0.2008, -0.2064, - -0.4835, -0.5394, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.4802, -0.5388, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.4770, -0.5383, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.4741, -0.5378, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.4714, -0.5374, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, -0.5500, - 0.2847, 0.3585, 0.4639, 0.5789, 0.6941, 0.8050, 0.9068, 0.9945, 1.0634, 1.1094, 1.1300, 1.1236, 1.0907, 1.0333, 0.9546, 0.8594, - 0.7527, 0.6402, 0.4652, 0.2885, 0.1448, 0.0320, -0.0535, -0.1165, -0.1615, -0.1931, -0.2148, -0.2298, -0.2398, -0.2464, -0.2499, -0.2499, - -0.2499, -0.2499, -0.2480, -0.2461, -0.2452, -0.2462, -0.2497, -0.2560, -0.2650, -0.2760, -0.2877, -0.2980, -0.3046, -0.3045, -0.2929, -0.2690, - -0.2379, -0.2011, -0.1601, -0.1175, -0.0758, -0.0377, -0.0057, 0.0182, 0.0325, 0.0369, 0.0316, 0.0175, -0.0039, -0.0309, -0.0619, -0.0950, - 0.9487, 1.1476, 1.3601, 1.5813, 1.8047, 2.0220, 2.2240, 2.4011, 2.5442, 2.6452, 2.6984, 2.7005, 2.6515, 2.5543, 2.4149, 2.2414, - 2.0434, 1.8312, 1.6150, 1.2922, 0.9825, 0.7330, 0.5379, 0.3897, 0.2799, 0.2001, 0.1431, 0.1029, 0.0748, 0.0556, 0.0427, 0.0345, - 0.0294, 0.0260, 0.0229, 0.0184, 0.0112, 0.0001, -0.0156, -0.0358, -0.0596, -0.0848, -0.1082, -0.1253, -0.1303, -0.1138, -0.0695, -0.0090, - 0.0660, 0.1527, 0.2468, 0.3429, 0.4349, 0.5168, 0.5830, 0.6292, 0.6528, 0.6531, 0.6314, 0.5904, 0.5343, 0.4674, 0.3941, 0.3185, - 0.9764, 1.1811, 1.4009, 1.6314, 1.8660, 2.0964, 2.3133, 2.5066, 2.6666, 2.7845, 2.8539, 2.8706, 2.8340, 2.7463, 2.6130, 2.4419, - 2.2427, 2.0258, 1.8017, 1.5800, 1.2834, 0.9884, 0.7520, 0.5673, 0.4263, 0.3205, 0.2424, 0.1851, 0.1433, 0.1128, 0.0902, 0.0730, - 0.0592, 0.0468, 0.0342, 0.0199, 0.0026, -0.0184, -0.0434, -0.0716, -0.1014, -0.1296, -0.1523, -0.1637, -0.1515, -0.1101, -0.0497, 0.0290, - 0.1242, 0.2319, 0.3471, 0.4630, 0.5722, 0.6673, 0.7416, 0.7901, 0.8100, 0.8010, 0.7652, 0.7068, 0.6311, 0.5443, 0.4520, 0.3596, - 0.9942, 1.2028, 1.4284, 1.6665, 1.9107, 2.1529, 2.3834, 2.5919, 2.7680, 2.9026, 2.9881, 3.0200, 2.9965, 2.9193, 2.7934, 2.6263, - 2.4274, 2.2074, 1.9768, 1.7459, 1.5231, 1.2779, 0.9978, 0.7738, 0.5982, 0.4627, 0.3595, 0.2812, 0.2217, 0.1760, 0.1400, 0.1105, - 0.0849, 0.0609, 0.0368, 0.0111, -0.0172, -0.0484, -0.0823, -0.1175, -0.1515, -0.1804, -0.1992, -0.1892, -0.1542, -0.0982, -0.0206, 0.0777, - 0.1944, 0.3247, 0.4625, 0.5995, 0.7270, 0.8360, 0.9187, 0.9692, 0.9847, 0.9651, 0.9136, 0.8357, 0.7385, 0.6298, 0.5167, 0.4059, - 1.0004, 1.2111, 1.4402, 1.6837, 1.9354, 2.1872, 2.4293, 2.6512, 2.8421, 2.9922, 3.0934, 3.1402, 3.1302, 3.0645, 2.9473, 2.7857, - 2.5890, 2.3678, 2.1329, 1.8946, 1.6621, 1.4424, 1.2408, 1.0030, 0.7903, 0.6222, 0.4905, 0.3876, 0.3069, 0.2425, 0.1898, 0.1449, - 0.1049, 0.0672, 0.0300, -0.0081, -0.0478, -0.0891, -0.1312, -0.1719, -0.2081, -0.2301, -0.2236, -0.1979, -0.1503, -0.0792, 0.0160, 0.1345, - 0.2731, 0.4266, 0.5874, 0.7461, 0.8922, 1.0152, 1.1062, 1.1584, 1.1688, 1.1378, 1.0695, 0.9710, 0.8512, 0.7194, 0.5848, 0.4548, - 0.9939, 1.2042, 1.4343, 1.6805, 1.9369, 2.1954, 2.4465, 2.6793, 2.8828, 3.0468, 3.1624, 3.2235, 3.2270, 3.1733, 3.0659, 2.9116, - 2.7192, 2.4992, 2.2625, 2.0196, 1.7799, 1.5510, 1.3384, 1.1456, 0.9739, 0.7927, 0.6302, 0.5000, 0.3951, 0.3092, 0.2371, 0.1745, - 0.1180, 0.0650, 0.0136, -0.0375, -0.0886, -0.1393, -0.1883, -0.2279, -0.2475, -0.2515, -0.2370, -0.2011, -0.1411, -0.0551, 0.0574, 0.1955, - 0.3555, 0.5314, 0.7145, 0.8940, 1.0579, 1.1942, 1.2928, 1.3462, 1.3510, 1.3083, 1.2231, 1.1040, 0.9616, 0.8072, 0.6512, 0.5027, - 0.9738, 1.1810, 1.4092, 1.6550, 1.9127, 2.1747, 2.4314, 2.6720, 2.8853, 3.0606, 3.1888, 3.2631, 3.2798, 3.2384, 3.1419, 2.9965, - 2.8107, 2.5947, 2.3591, 2.1147, 1.8710, 1.6359, 1.4154, 1.2131, 1.0310, 0.8691, 0.7261, 0.5998, 0.4821, 0.3727, 0.2792, 0.1972, - 0.1229, 0.0536, -0.0124, -0.0764, -0.1353, -0.1857, -0.2265, -0.2556, -0.2704, -0.2680, -0.2456, -0.1998, -0.1281, -0.0284, 0.1001, 0.2560, - 0.4354, 0.6315, 0.8346, 1.0327, 1.2123, 1.3602, 1.4651, 1.5189, 1.5180, 1.4639, 1.3627, 1.2243, 1.0610, 0.8856, 0.7103, 0.5449, - 0.9396, 1.1409, 1.3641, 1.6060, 1.8615, 2.1232, 2.3818, 2.6265, 2.8462, 3.0300, 3.1685, 3.2544, 3.2834, 3.2544, 3.1698, 3.0350, - 2.8582, 2.6489, 2.4179, 2.1755, 1.9314, 1.6937, 1.4685, 1.2600, 1.0704, 0.9001, 0.7482, 0.6130, 0.4921, 0.3832, 0.2839, 0.1927, - 0.1082, 0.0298, -0.0425, -0.1082, -0.1662, -0.2152, -0.2534, -0.2786, -0.2884, -0.2798, -0.2498, -0.1952, -0.1131, -0.0015, 0.1404, 0.3111, - 0.5064, 0.7190, 0.9382, 1.1510, 1.3429, 1.4997, 1.6089, 1.6620, 1.6554, 1.5910, 1.4758, 1.3208, 1.1398, 0.9470, 0.7556, 0.5767, - 0.8915, 1.0841, 1.2991, 1.5337, 1.7832, 2.0406, 2.2970, 2.5419, 2.7643, 2.9534, 3.0995, 3.1951, 3.2353, 3.2185, 3.1464, 3.0239, - 2.8583, 2.6588, 2.4356, 2.1990, 1.9583, 1.7217, 1.4956, 1.2843, 1.0904, 0.9147, 0.7567, 0.6149, 0.4875, 0.3723, 0.2674, 0.1714, - 0.0831, 0.0022, -0.0715, -0.1372, -0.1942, -0.2410, -0.2759, -0.2969, -0.3015, -0.2870, -0.2503, -0.1883, -0.0979, 0.0228, 0.1747, 0.3561, - 0.5626, 0.7864, 1.0163, 1.2387, 1.4383, 1.6000, 1.7109, 1.7622, 1.7503, 1.6773, 1.5511, 1.3836, 1.1895, 0.9841, 0.7816, 0.5936, - 0.8304, 1.0117, 1.2153, 1.4392, 1.6791, 1.9283, 2.1785, 2.4196, 2.6409, 2.8319, 2.9827, 3.0858, 3.1359, 3.1309, 3.0718, 2.9628, - 2.8105, 2.6236, 2.4115, 2.1842, 1.9507, 1.7192, 1.4959, 1.2855, 1.0907, 0.9126, 0.7512, 0.6054, 0.4737, 0.3544, 0.2459, 0.1469, - 0.0565, -0.0256, -0.0992, -0.1639, -0.2187, -0.2625, -0.2936, -0.3101, -0.3097, -0.2899, -0.2477, -0.1799, -0.0839, 0.0427, 0.2002, 0.3872, - 0.5991, 0.8278, 1.0621, 1.2878, 1.4894, 1.6515, 1.7611, 1.8093, 1.7925, 1.7133, 1.5798, 1.4048, 1.2034, 0.9915, 0.7839, 0.5925, - 0.7579, 0.9254, 1.1151, 1.3252, 1.5520, 1.7894, 2.0295, 2.2630, 2.4796, 2.6691, 2.8218, 2.9301, 2.9886, 2.9946, 2.9487, 2.8542, - 2.7170, 2.5450, 2.3471, 2.1324, 1.9097, 1.6868, 1.4700, 1.2638, 1.0714, 0.8940, 0.7321, 0.5849, 0.4513, 0.3300, 0.2198, 0.1196, - 0.0288, -0.0529, -0.1252, -0.1877, -0.2394, -0.2794, -0.3062, -0.3181, -0.3131, -0.2887, -0.2422, -0.1709, -0.0719, 0.0566, 0.2152, 0.4023, - 0.6132, 0.8400, 1.0715, 1.2937, 1.4912, 1.6489, 1.7539, 1.7976, 1.7766, 1.6938, 1.5574, 1.3804, 1.1781, 0.9665, 0.7603, 0.5715, - 0.6760, 0.8279, 1.0014, 1.1952, 1.4061, 1.6285, 1.8554, 2.0779, 2.2864, 2.4712, 2.6231, 2.7344, 2.7995, 2.8157, 2.7827, 2.7033, - 2.5825, 2.4274, 2.2459, 2.0466, 1.8378, 1.6267, 1.4196, 1.2209, 1.0338, 0.8601, 0.7003, 0.5541, 0.4209, 0.2998, 0.1898, 0.0902, - 0.0005, -0.0793, -0.1489, -0.2080, -0.2559, -0.2914, -0.3135, -0.3208, -0.3114, -0.2834, -0.2342, -0.1613, -0.0624, 0.0644, 0.2194, 0.4009, - 0.6045, 0.8225, 1.0442, 1.2561, 1.4435, 1.5919, 1.6892, 1.7271, 1.7027, 1.6189, 1.4841, 1.3107, 1.1140, 0.9094, 0.7113, 0.5311, - 0.5875, 0.7224, 0.8782, 1.0539, 1.2466, 1.4517, 1.6627, 1.8714, 2.0691, 2.2465, 2.3950, 2.5071, 2.5773, 2.6024, 2.5819, 2.5176, - 2.4139, 2.2768, 2.1136, 1.9318, 1.7392, 1.5426, 1.3477, 1.1592, 0.9801, 0.8124, 0.6571, 0.5143, 0.3837, 0.2646, 0.1567, 0.0594, - -0.0276, -0.1041, -0.1699, -0.2246, -0.2677, -0.2982, -0.3154, -0.3181, -0.3048, -0.2739, -0.2234, -0.1510, -0.0549, 0.0666, 0.2136, 0.3844, - 0.5749, 0.7779, 0.9834, 1.1789, 1.3508, 1.4857, 1.5724, 1.6034, 1.5764, 1.4942, 1.3648, 1.2004, 1.0151, 0.8237, 0.6396, 0.4736, - 0.4954, 0.6127, 0.7499, 0.9063, 1.0797, 1.2659, 1.4590, 1.6520, 1.8367, 2.0046, 2.1476, 2.2586, 2.3321, 2.3649, 2.3559, 2.3063, - 2.2197, 2.1012, 1.9570, 1.7941, 1.6192, 1.4387, 1.2581, 1.0817, 0.9127, 0.7532, 0.6045, 0.4669, 0.3407, 0.2256, 0.1214, 0.0280, - -0.0548, -0.1267, -0.1876, -0.2371, -0.2746, -0.2997, -0.3117, -0.3099, -0.2931, -0.2602, -0.2096, -0.1396, -0.0485, 0.0646, 0.2000, 0.3559, - 0.5285, 0.7114, 0.8955, 1.0697, 1.2216, 1.3395, 1.4135, 1.4369, 1.4079, 1.3295, 1.2091, 1.0578, 0.8888, 0.7156, 0.5503, 0.4029, - 0.4027, 0.5025, 0.6211, 0.7581, 0.9116, 1.0781, 1.2526, 1.4287, 1.5990, 1.7558, 1.8916, 1.9998, 2.0751, 2.1140, 2.1152, 2.0794, - 2.0092, 1.9089, 1.7839, 1.6401, 1.4837, 1.3204, 1.1552, 0.9922, 0.8347, 0.6849, 0.5443, 0.4137, 0.2935, 0.1839, 0.0850, -0.0032, - -0.0805, -0.1467, -0.2017, -0.2450, -0.2765, -0.2957, -0.3025, -0.2962, -0.2764, -0.2422, -0.1925, -0.1262, -0.0422, 0.0604, 0.1815, 0.3194, - 0.4707, 0.6299, 0.7889, 0.9383, 1.0674, 1.1660, 1.2257, 1.2412, 1.2109, 1.1378, 1.0288, 0.8938, 0.7445, 0.5930, 0.4500, 0.3241, - 0.3126, 0.3957, 0.4964, 0.6145, 0.7486, 0.8957, 1.0515, 1.2103, 1.3655, 1.5103, 1.6378, 1.7418, 1.8173, 1.8607, 1.8706, 1.8470, - 1.7919, 1.7088, 1.6021, 1.4770, 1.3388, 1.1927, 1.0432, 0.8944, 0.7493, 0.6102, 0.4789, 0.3564, 0.2436, 0.1408, 0.0484, -0.0333, - -0.1040, -0.1636, -0.2117, -0.2483, -0.2732, -0.2863, -0.2877, -0.2772, -0.2546, -0.2197, -0.1718, -0.1103, -0.0344, 0.0562, 0.1612, 0.2793, - 0.4074, 0.5408, 0.6729, 0.7957, 0.9004, 0.9787, 1.0236, 1.0310, 1.0000, 0.9333, 0.8371, 0.7201, 0.5926, 0.4646, 0.3456, 0.2429, - 0.2279, 0.2957, 0.3799, 0.4805, 0.5965, 0.7252, 0.8630, 1.0050, 1.1452, 1.2776, 1.3960, 1.4946, 1.5688, 1.6152, 1.6318, 1.6185, - 1.5767, 1.5089, 1.4190, 1.3112, 1.1903, 1.0607, 0.9267, 0.7919, 0.6594, 0.5316, 0.4103, 0.2969, 0.1923, 0.0974, 0.0126, -0.0616, - -0.1248, -0.1768, -0.2175, -0.2468, -0.2647, -0.2716, -0.2676, -0.2530, -0.2280, -0.1928, -0.1472, -0.0911, -0.0241, 0.0539, 0.1423, 0.2399, - 0.3443, 0.4516, 0.5564, 0.6524, 0.7327, 0.7907, 0.8211, 0.8207, 0.7893, 0.7295, 0.6467, 0.5482, 0.4427, 0.3387, 0.2439, 0.1643, - 0.1513, 0.2056, 0.2752, 0.3604, 0.4601, 0.5722, 0.6935, 0.8197, 0.9456, 1.0658, 1.1747, 1.2671, 1.3387, 1.3861, 1.4075, 1.4022, - 1.3712, 1.3165, 1.2411, 1.1487, 1.0433, 0.9289, 0.8093, 0.6880, 0.5679, 0.4514, 0.3404, 0.2366, 0.1411, 0.0548, -0.0215, -0.0874, - -0.1423, -0.1862, -0.2188, -0.2404, -0.2513, -0.2517, -0.2424, -0.2239, -0.1969, -0.1617, -0.1188, -0.0682, -0.0103, 0.0550, 0.1270, 0.2047, - 0.2861, 0.3681, 0.4467, 0.5172, 0.5742, 0.6130, 0.6298, 0.6224, 0.5910, 0.5380, 0.4682, 0.3876, 0.3033, 0.2222, 0.1505, 0.0928, - 0.0846, 0.1278, 0.1854, 0.2575, 0.3434, 0.4411, 0.5479, 0.6599, 0.7726, 0.8811, 0.9805, 1.0661, 1.1338, 1.1805, 1.2044, 1.2046, - 1.1817, 1.1373, 1.0737, 0.9942, 0.9021, 0.8011, 0.6945, 0.5856, 0.4772, 0.3717, 0.2711, 0.1771, 0.0911, 0.0140, -0.0533, -0.1101, - -0.1562, -0.1914, -0.2157, -0.2294, -0.2329, -0.2271, -0.2126, -0.1905, -0.1616, -0.1268, -0.0866, -0.0417, 0.0075, 0.0606, 0.1171, 0.1761, - 0.2360, 0.2948, 0.3494, 0.3965, 0.4325, 0.4539, 0.4584, 0.4448, 0.4137, 0.3672, 0.3094, 0.2452, 0.1804, 0.1202, 0.0695, 0.0316, - 0.0295, 0.0641, 0.1123, 0.1742, 0.2490, 0.3350, 0.4296, 0.5294, 0.6303, 0.7280, 0.8181, 0.8963, 0.9589, 1.0032, 1.0273, 1.0303, - 1.0126, 0.9754, 0.9207, 0.8512, 0.7699, 0.6800, 0.5847, 0.4869, 0.3892, 0.2942, 0.2038, 0.1197, 0.0434, -0.0241, -0.0819, -0.1293, - -0.1662, -0.1923, -0.2080, -0.2137, -0.2101, -0.1981, -0.1788, -0.1533, -0.1229, -0.0885, -0.0513, -0.0119, 0.0290, 0.0709, 0.1133, 0.1553, - 0.1961, 0.2341, 0.2675, 0.2942, 0.3117, 0.3182, 0.3122, 0.2934, 0.2627, 0.2222, 0.1751, 0.1254, 0.0776, 0.0357, 0.0032, -0.0174 -]; diff --git a/src/generated/world.ts b/src/generated/world.ts deleted file mode 100644 index 513d246..0000000 --- a/src/generated/world.ts +++ /dev/null @@ -1,117 +0,0 @@ -// GENERATED — do not edit by hand. -// Source: ../../assets/worlds/arena_02.world.json -// Regenerate with: bun tools/build-world.ts ../../assets/worlds/arena_02.world.json src/generated/world.ts - -export const WORLD_NAME = "Arena 02 — Outdoor plaza"; -export const WORLD_ID = "arena_02"; - -// Environment -export const ENV_SKY_R = 0.55; -export const ENV_SKY_G = 0.62; -export const ENV_SKY_B = 0.78; -export const ENV_AMBIENT_R = 0.75; -export const ENV_AMBIENT_G = 0.78; -export const ENV_AMBIENT_B = 0.85; -export const ENV_AMBIENT_I = 0.55; -export const ENV_SUN_DIR_X = 0.45; -export const ENV_SUN_DIR_Y = 0.72; -export const ENV_SUN_DIR_Z = 0.52; -export const ENV_SUN_R = 1; -export const ENV_SUN_G = 0.95; -export const ENV_SUN_B = 0.82; -export const ENV_SUN_I = 1.1; -export const ENV_FOG_START = 45; -export const ENV_FOG_END = 140; -export const ENV_FOG_R = 0.62; -export const ENV_FOG_G = 0.68; -export const ENV_FOG_B = 0.78; - -// Player spawn -export const SPAWN_X = 0; -export const SPAWN_Y = 1; -export const SPAWN_Z = 20; -export const SPAWN_YAW = 0; - -// Static box colliders — walls, floors, invisible terrain bounds -export const COLLIDER_COUNT = 4; -export const COLLIDER_X = [0.0, 0.0, 40.0, -40.0]; -export const COLLIDER_Y = [3.0, 3.0, 3.0, 3.0]; -export const COLLIDER_Z = [-40.0, 40.0, 0.0, 0.0]; -export const COLLIDER_HALF_X = [40.0, 40.0, 0.5, 0.5]; -export const COLLIDER_HALF_Y = [4.0, 4.0, 4.0, 4.0]; -export const COLLIDER_HALF_Z = [0.5, 0.5, 40.0, 40.0]; - -// Unique model paths referenced by static_mesh entities. The runtime -// calls loadModel() for each at startup, except for paths flagged as -// box placeholders (MODEL_IS_BOX[i] === 1), which render as drawCube. -export const UNIQUE_MODEL_COUNT = 9; -export const UNIQUE_MODELS = ["assets/models/terrain_hills.glb", "assets/models/building_floor.glb", "assets/models/prop_table.glb", "assets/models/prop_chair.glb", "assets/models/prop_bed.glb", "assets/models/prop_crate.glb", "assets/models/prop_barrel.glb", "assets/models/prop_tree.glb", "assets/models/_gizmo_box.glb"]; -export const MODEL_IS_BOX = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]; - -// Static-mesh instances — one row per placed entity. -// MESH_CATEGORY: 0=generic, 1=building, 2=terrain, 3=prop. -export const MESH_COUNT = 66; -export const MESH_MODEL_IDX = [0.0, 1.0, 2.0, 3.0, 3.0, 4.0, 5.0, 4.0, 2.0, 3.0, 5.0, 5.0, 6.0, 6.0, 5.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0]; -export const MESH_X = [0.0, -21.0, -24.0, -22.5, -25.5, -19.0, -17.5, -23.0, -26.0, -24.5, -20.0, -20.0, -14.0, -13.0, 12.0, 12.0, 18.0, 5.0, -10.0, -8.0, -18.0, 30.0, 22.0, -21.0, -12.0, -30.0, -26.0, -16.0, -21.0, -21.0, -12.0, -30.0, -21.0, -21.0, -12.0, -30.0, -21.0, -21.0, -21.0, -23.0, -13.0, -21.0, -21.0, -23.0, -13.0, -21.0, -15.85, -15.55, -15.25, -14.95, -14.65, -14.35, -14.05, -13.75, -13.45, -13.15, -14.15, -14.45, -14.75, -15.05, -15.35, -15.65, -15.95, -16.25, -16.55, -16.85]; -export const MESH_Y = [0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 3.11, 3.11, 3.11, 3.11, 4.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 2.7, 4.5, 4.5, 4.5, 4.5, 7.5, 7.5, 7.5, 7.5, 2.9, 2.9, 2.9, 2.9, 5.9, 5.9, 5.9, 5.9, 9.0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2, 1.35, 1.5, 3.15, 3.3, 3.45, 3.6, 3.75, 3.9, 4.05, 4.2, 4.35, 4.5]; -export const MESH_Z = [0.0, -14.0, -14.0, -14.0, -14.0, -15.0, -17.0, -15.0, -13.0, -13.0, -17.0, -17.0, -1.0, -2.2, -6.0, 5.0, 0.0, -8.0, 25.0, 28.0, 25.0, -6.0, 22.0, -19.0, -13.0, -13.0, -7.0, -7.0, -7.0, -19.0, -13.0, -13.0, -7.0, -19.0, -13.0, -13.0, -7.0, -7.75, -15.25, -10.0, -10.0, -7.75, -15.25, -10.0, -10.0, -13.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0]; -export const MESH_ROT_Y = [0.0, 0.0, 0.0, -1.57, 1.57, 0.0, 0.5, 1.57, 0.0, -1.57, 0.0, 0.4, 0.0, 0.7, 0.25, 0.0, 1.2, 2.0, 0.4, 1.8, 2.3, 0.9, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]; -export const MESH_SCALE = [1.0, 1.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.8, 1.0, 1.0, 1.0, 1.0, 1.2, 0.9, 1.1, 1.3, 1.0, 1.0, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]; -export const MESH_COLLIDER = [0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]; -export const MESH_COLLIDER_HX = [0.5, 0.5, 0.8, 0.25, 0.25, 1.0, 0.5, 0.5, 0.8, 0.25, 0.5, 0.4, 0.4, 0.4, 0.5, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 9.0, 0.2, 0.2, 4.0, 4.0, 1.0, 9.0, 0.2, 0.2, 9.0, 9.0, 0.2, 0.2, 9.0, 9.0, 9.0, 7.0, 1.0, 9.0, 9.0, 7.0, 1.0, 9.0, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15]; -export const MESH_COLLIDER_HY = [0.5, 0.5, 0.4, 0.5, 0.5, 0.3, 0.5, 0.3, 0.4, 0.5, 0.5, 0.4, 0.55, 0.55, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.5, 1.5, 1.5, 1.5, 1.5, 0.3, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2, 1.35, 1.5, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2, 1.35, 1.5]; -export const MESH_COLLIDER_HZ = [0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 1.0, 0.5, 0.25, 0.5, 0.4, 0.4, 0.4, 0.5, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.18, 0.2, 6.0, 6.0, 0.2, 0.2, 0.2, 0.2, 6.0, 6.0, 0.2, 0.2, 6.0, 6.0, 0.2, 0.75, 3.75, 1.5, 1.5, 0.75, 3.75, 1.5, 1.5, 6.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5]; -export const MESH_CATEGORY = [2.0, 1.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]; - -// Trees — rendered as trunk-cube + foliage-sphere, small box collider -export const TREE_COUNT = 0; -export const TREE_X = []; -export const TREE_Y = []; -export const TREE_Z = []; -export const TREE_HEIGHT = []; -export const TREE_RADIUS = []; - -// Water volumes — flat animated quads at surfaceHeight -export const WATER_COUNT = 1; -export const WATER_CX = [0.0]; -export const WATER_CY = [0.05]; -export const WATER_CZ = [12.0]; -export const WATER_SX = [80.0]; -export const WATER_SZ = [5.0]; -export const WATER_R = [0.2]; -export const WATER_G = [0.42]; -export const WATER_B = [0.62]; -export const WATER_A = [0.75]; -export const WATER_WAVE_AMP = [0.05]; -export const WATER_WAVE_SPD = [1.4]; - -// Scene point lights -export const LIGHT_COUNT = 5; -export const LIGHT_X = [0.0, 0.0, -21.0, -21.0, 26.0]; -export const LIGHT_Y = [5.0, 5.0, 2.6, 5.6, 5.0]; -export const LIGHT_Z = [-20.0, 20.0, -14.0, -14.0, -24.0]; -export const LIGHT_RANGE = [22.0, 22.0, 12.0, 12.0, 18.0]; -export const LIGHT_R = [1.0, 1.0, 0.95, 0.85, 0.95]; -export const LIGHT_G = [0.85, 0.85, 0.85, 0.9, 0.75]; -export const LIGHT_B = [0.55, 0.55, 0.65, 1.0, 0.45]; -export const LIGHT_INT = [1.0, 1.0, 1.1, 0.9, 0.8]; - -// Enemy spawner anchors — fed into the wave director as corner points -export const SPAWNER_COUNT = 4; -export const SPAWNER_X = [30.0, -30.0, 30.0, -30.0]; -export const SPAWNER_Z = [-30.0, -30.0, 30.0, 30.0]; - -// Weapon pickups (ground placements) -export const PICKUP_COUNT = 4; -export const PICKUP_X = [0.0, -25.0, 26.0, -24.0]; -export const PICKUP_Z = [-15.0, -17.0, -24.0, 26.0]; -export const PICKUP_KIND = [0.0, 1.0, 0.0, 1.0]; -// Pickup kind id → string: 0=rifle 1=blaster - -// Wave plan — parallel arrays: WAVE_COUNT[i] enemies of the kind sequence -// starting at WAVE_OFFS[i] in WAVE_KIND[]. -export const WAVE_PLAN_COUNT = 3; -export const WAVE_SIZE = [4.0, 7.0, 11.0]; -export const WAVE_OFFS = [0.0, 4.0, 11.0]; -export const WAVE_KIND = [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 2.0, 1.0, 0.0, 2.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 0.0, 2.0, 1.0, 3.0, 2.0, 4.0]; -// Enemy kind id → string: 0=dretch 1=mantis 2=marauder 3=dragoon 4=tyrant diff --git a/src/main.ts b/src/main.ts index ac6963a..52479ed 100644 --- a/src/main.ts +++ b/src/main.ts @@ -45,8 +45,10 @@ import { } from 'bloom/physics'; import { initInput, readInput, drawTouchControls, MOBILE } from './input'; import { createPlayer, updatePlayerController, playerPosition } from './player'; -import * as W from './generated/world'; -import * as T from './generated/terrain'; +import * as W from './world-runtime'; +// Terrain comes from the same world file as everything else now; `T` is kept as +// an alias so the height-sampling call sites read the same as they always have. +import * as T from './world-runtime'; // Borderless fullscreen at the monitor's native resolution (the engine // resizes its swapchain + all render targets on the WM_SIZE this triggers). @@ -120,9 +122,9 @@ const physics = createWorld({ gravity: vec3(0, -20, 0) }); setLayerCollides(physics, Layer.NON_MOVING, Layer.MOVING, true); setLayerCollides(physics, Layer.MOVING, Layer.MOVING, true); -// ---- World: arena_02 (see src/generated/world.ts) ------------------------- +// ---- World: arena_02 (loaded at runtime; see src/world-runtime.ts) -------- // Authored in assets/worlds/arena_02.world.json; flat-array TS module is -// regenerated by tools/build-world.ts before every build. All geometry, +// read from assets/worlds/arena_02.world.json at startup. All geometry, // lighting, spawners, pickups, and the wave plan come from that world data. // The editor can read/write the same JSON → one source of truth. @@ -303,77 +305,25 @@ const treeVariants = [ // All tree GLBs are 4 primitives: trunk + 2 branch stubs + leaf cards. const TREE_GLB_PARTS = 4; -// Forest scatter — pre-placed trees across the open field at -// startup using deterministic LCG. Each gets a variant, scale -// jitter, position jitter, and a subtle per-tree hue tint so the -// forest doesn't read as "the same model copy-pasted." Trees go -// in a flat array so the per-frame draw loop is a single pass. -// Round-5: 120 → 88. Through the cached scene pipeline every tree -// now pays shadow-cascade + water-probe + main-pass draws (the old -// immediate path skipped all of those — and alpha cutout with them), -// so a leaner count buys back most of the frame-rate cost. -const FOREST_COUNT_MAX = 88; -const FOREST_X = new Array(FOREST_COUNT_MAX); -const FOREST_Y = new Array(FOREST_COUNT_MAX); -const FOREST_Z = new Array(FOREST_COUNT_MAX); -const FOREST_VAR = new Array(FOREST_COUNT_MAX); -const FOREST_YAW = new Array(FOREST_COUNT_MAX); -const FOREST_SCALE = new Array(FOREST_COUNT_MAX); -const FOREST_TINT_R = new Array(FOREST_COUNT_MAX); -const FOREST_TINT_G = new Array(FOREST_COUNT_MAX); -const FOREST_TINT_B = new Array(FOREST_COUNT_MAX); -let FOREST_COUNT = 0; -{ - let seed = 0x55aa1234 | 0; - // Building rect to reject (matches gen-building.ts) - const BX0 = -30, BX1 = -12, BZ0 = -19, BZ1 = -7; - for (let attempt = 0; attempt < FOREST_COUNT_MAX * 4 && FOREST_COUNT < FOREST_COUNT_MAX; attempt++) { - seed = ((seed * 1103515245) + 12345) & 0x7fffffff; - const r1 = seed / 0x7fffffff; - seed = ((seed * 1103515245) + 12345) & 0x7fffffff; - const r2 = seed / 0x7fffffff; - seed = ((seed * 1103515245) + 12345) & 0x7fffffff; - const r3 = seed / 0x7fffffff; - seed = ((seed * 1103515245) + 12345) & 0x7fffffff; - const r4 = seed / 0x7fffffff; - seed = ((seed * 1103515245) + 12345) & 0x7fffffff; - const r5 = seed / 0x7fffffff; - const px = -36 + r1 * 72; - const pz = -36 + r2 * 72; - if (px > BX0 - 1 && px < BX1 + 1 && pz > BZ0 - 1 && pz < BZ1 + 1) continue; - if (Math.abs(pz - 12) < 4 && Math.abs(px) < 40) continue; // river - if (Math.hypot(px - 3, pz - 18) < 6) continue; // player spawn - // Sample heightmap (inlined; same code as grass scatter). - const u = (px - T.TERRAIN_ORIGIN_X) / T.TERRAIN_CELL_SIZE; - const v = (pz - T.TERRAIN_ORIGIN_Z) / T.TERRAIN_CELL_SIZE; - let py = 0; - if (u >= 0 && v >= 0 && u < T.TERRAIN_SAMPLE_COUNT - 1 && v < T.TERRAIN_SAMPLE_COUNT - 1) { - const ix = Math.floor(u), iz = Math.floor(v); - const fx = u - ix, fz = v - iz; - const h00 = T.TERRAIN_HEIGHTS[iz * T.TERRAIN_SAMPLE_COUNT + ix]; - const h10 = T.TERRAIN_HEIGHTS[iz * T.TERRAIN_SAMPLE_COUNT + ix + 1]; - const h01 = T.TERRAIN_HEIGHTS[(iz + 1) * T.TERRAIN_SAMPLE_COUNT + ix]; - const h11 = T.TERRAIN_HEIGHTS[(iz + 1) * T.TERRAIN_SAMPLE_COUNT + ix + 1]; - py = (h00 * (1 - fx) + h10 * fx) * (1 - fz) + - (h01 * (1 - fx) + h11 * fx) * fz; - } - FOREST_X[FOREST_COUNT] = px; - FOREST_Y[FOREST_COUNT] = py; - FOREST_Z[FOREST_COUNT] = pz; - FOREST_VAR[FOREST_COUNT] = Math.floor(r3 * 3) % 3; - FOREST_YAW[FOREST_COUNT] = r3 * 360; // degrees (drawModelRotated) - // Leaf-card tree is ~5.5 m tall at scale 1 — 0.85..1.45 gives a - // believable size hierarchy (4.7..8 m) instead of uniform bushes. - FOREST_SCALE[FOREST_COUNT] = 0.85 + r4 * 0.60; - // Per-tree hue tint — slight greens vary canopy, drier on the - // sunny side. Shifts ±10% around white. - const hueShift = (r5 - 0.5) * 0.20; - FOREST_TINT_R[FOREST_COUNT] = Math.max(0, Math.min(255, Math.floor(255 * (1.0 - hueShift * 0.5)))); - FOREST_TINT_G[FOREST_COUNT] = Math.max(0, Math.min(255, Math.floor(255 * (1.0 + hueShift * 0.4)))); - FOREST_TINT_B[FOREST_COUNT] = Math.max(0, Math.min(255, Math.floor(255 * (1.0 - hueShift * 0.6)))); - FOREST_COUNT++; - } -} +// The forest, read from the world file. Each tree is an entity (kind +// `prop_tree`), so it can be moved, retinted, deleted, or added in the editor — +// it used to be scattered here at startup from a fixed LCG seed, which meant no +// tree had an identity and none of that was expressible. `bun +// tools/bake-forest-to-world.ts` seeded the current 88 from that same scatter. +// +// Copied into flat arrays so the per-frame draw loop stays a single pass over +// numbers (see the Perry conventions in CLAUDE.md). +const FOREST_COUNT = W.FOREST_COUNT; +const FOREST_X = W.FOREST_X; +const FOREST_Y = W.FOREST_Y; +const FOREST_Z = W.FOREST_Z; +const FOREST_VAR = W.FOREST_VAR; +const FOREST_YAW = W.FOREST_YAW; +const FOREST_SCALE = W.FOREST_SCALE; +const FOREST_TINT_R = W.FOREST_TINT_R; +const FOREST_TINT_G = W.FOREST_TINT_G; +const FOREST_TINT_B = W.FOREST_TINT_B; + // Round-9 — trunk colliders for the scatter forest. The world-authored // prop_tree entities carry box colliders from the world file, but these // 88 trees never got physics bodies — the player walked straight through @@ -401,9 +351,9 @@ for (let i = 0; i < W.UNIQUE_MODEL_COUNT; i++) { // Round-9 — flat obstacle-circle list for enemy steering. Enemies are // KINEMATIC (steered in XZ, setBodyPosition) so Jolt never resolves their -// contacts — they need code-side avoidance. Circles cover every tree -// trunk: the scatter forest plus world-authored prop_tree entities. -const OBST_MAX = FOREST_COUNT_MAX + 24; +// contacts — they need code-side avoidance. Circles cover every tree trunk: +// the forest entities plus any prop_tree meshes placed as static_mesh. +const OBST_MAX = FOREST_COUNT + W.MESH_COUNT; const OBST_X = new Array(OBST_MAX); const OBST_Z = new Array(OBST_MAX); const OBST_R = new Array(OBST_MAX); @@ -1008,8 +958,6 @@ const GRASS_INSTANCE_FLOATS = 9; const GRASS_INSTANCES = new Array(GRASS_INSTANCE_COUNT_MAX * GRASS_INSTANCE_FLOATS); let GRASS_INSTANCE_COUNT = 0; { - // Building rect to reject (matches gen-building.ts). - const BX0 = -30, BX1 = -12, BZ0 = -19, BZ1 = -7; // Round-9b — the clump lattice is rotated 37° off the world axes so // tuft rows can't line up with the view/river/arena edges. const CLUMP_C = Math.cos(0.65); @@ -1050,8 +998,10 @@ let GRASS_INSTANCE_COUNT = 0; const pull = r6 < 0.22 ? 0.12 : 0.65; px = px + (ax - px) * pull; pz = pz + (az - pz) * pull; - if (px > BX0 && px < BX1 && pz > BZ0 && pz < BZ1) continue; - if (Math.abs(pz - 12) < 3.5 && Math.abs(px) < 40) continue; + // No grass on the water or inside the building. Same world-derived shapes + // the forest uses, with a tighter margin: a blade may grow right up to the + // waterline, a tree may not. + if (W.keepOut(px, pz, 0.75)) continue; // Bilinear heightmap sample. const u = (px - T.TERRAIN_ORIGIN_X) / T.TERRAIN_CELL_SIZE; const v = (pz - T.TERRAIN_ORIGIN_Z) / T.TERRAIN_CELL_SIZE; @@ -1585,7 +1535,7 @@ const PICKUP_RIFLE_AMT = 15; const PICKUP_BLASTER_AMT = 8; const PICKUP_RADIUS = 1.4; const PICKUP_RESPAWN = 18.0; -const pickupKind = W.PICKUP_KIND; // 0 = rifle, 1 = blaster (see build-world.ts) +const pickupKind = W.PICKUP_KIND; // 0 = rifle, 1 = blaster const pickupX = W.PICKUP_X; const pickupZ = W.PICKUP_Z; const PICKUP_COUNT = W.PICKUP_COUNT; @@ -2702,7 +2652,7 @@ while (!windowShouldClose()) { addPointLight(mx, my, mz, 6, 1.0, 0.85, 0.5, 4.0 * k); } - // ---- World: static meshes + water + lights (all from generated/world.ts) - + // ---- World: static meshes + water + lights (all from the world file) ----- // (The old "ground plate" drawCube of COLLIDER[0] is gone: the merged // world removed the plaza-floor collider, so index 0 is now the NORTH // BOUNDARY WALL — the draw was painting an 80×8 m grey slab across the diff --git a/src/world-runtime.ts b/src/world-runtime.ts new file mode 100644 index 0000000..c77a983 --- /dev/null +++ b/src/world-runtime.ts @@ -0,0 +1,502 @@ +// Runtime world loading — this replaced a build-time bake (`tools/build-world.ts`, +// now deleted). +// +// The world file is now read and parsed when the game starts, so editing a +// level in the Bloom editor and relaunching is enough: no regeneration step, no +// recompile. The baker existed because Perry 0.4.x returned arrays from +// JSON.parse whose `.length` read as undefined; that is fixed (verified on +// 0.5.1208), so the workaround can go. +// +// This module exposes exactly the surface `main.ts` already consumed from the +// generated module — flat parallel arrays, numbers not strings — so the game +// loop is unchanged. What used to be frozen at build time is now derived here at +// startup, once. +// +// Two rules from docs/perry-quirks.md govern everything below: +// - Build arrays with `new Array(n)` + index assignment. `.push()` +// produces arrays whose `.length` reports the literal initial size. +// - Parsing strings (halfExtents, the wave plan) happens HERE, at load, and +// never on a per-frame path. + +import { loadWorld, createEmptyWorld, WorldData, EntityData } from 'bloom/world'; + +const WORLD_PATH = 'assets/worlds/arena_02.world.json'; + +// loadWorld throws on a missing file, bad JSON, or failed validation. Catch it +// here so a broken world file reports itself and yields an empty arena, rather +// than dying somewhere inside the render loop with no context. +let loadedWorld: WorldData; +try { + loadedWorld = loadWorld(WORLD_PATH); +} catch (e) { + console.error('world: ' + (e as Error).message); + loadedWorld = createEmptyWorld('empty', 'Failed to load ' + WORLD_PATH); +} +const world: WorldData = loadedWorld; + +export const WORLD_NAME = world.name; +export const WORLD_ID = world.id; + +// ---- environment ------------------------------------------------------------- + +const env = world.environment; +export const ENV_SKY_R = env.skyColor[0]; +export const ENV_SKY_G = env.skyColor[1]; +export const ENV_SKY_B = env.skyColor[2]; +export const ENV_AMBIENT_R = env.ambientColor[0]; +export const ENV_AMBIENT_G = env.ambientColor[1]; +export const ENV_AMBIENT_B = env.ambientColor[2]; +export const ENV_AMBIENT_I = env.ambientIntensity; +export const ENV_SUN_DIR_X = env.sunDirection[0]; +export const ENV_SUN_DIR_Y = env.sunDirection[1]; +export const ENV_SUN_DIR_Z = env.sunDirection[2]; +export const ENV_SUN_R = env.sunColor[0]; +export const ENV_SUN_G = env.sunColor[1]; +export const ENV_SUN_B = env.sunColor[2]; +export const ENV_SUN_I = env.sunIntensity; +export const ENV_FOG_START = env.fogStart; +export const ENV_FOG_END = env.fogEnd; +export const ENV_FOG_R = env.fogColor[0]; +export const ENV_FOG_G = env.fogColor[1]; +export const ENV_FOG_B = env.fogColor[2]; + +// ---- entity buckets ---------------------------------------------------------- +// +// Game-defined kinds live in `userData.kind` — the schema deliberately knows +// nothing about spawners or wave plans (lights and water are engine concepts and +// are first-class; see the engine's world schema). Bucketing happens once. + +function bucket(kind: string): EntityData[] { + const all = world.entities; + let n = 0; + for (let i = 0; i < all.length; i++) { + if (all[i].userData['kind'] === kind) n = n + 1; + } + const out = new Array(n); + let w = 0; + for (let i = 0; i < all.length; i++) { + if (all[i].userData['kind'] === kind) { + out[w] = all[i]; + w = w + 1; + } + } + return out; +} + +// "40, 4, 0.5" -> component. Load-time only. +function vec3Part(s: string | undefined, idx: number, fallback: number): number { + if (s === undefined || s.length === 0) return fallback; + const parts = s.split(','); + if (parts.length !== 3) return fallback; + const v = parseFloat(parts[idx]); + return v === v ? v : fallback; +} + +// ---- player spawn ------------------------------------------------------------ + +const spawns = bucket('player_spawn'); +let spawnX = 0; +let spawnY = 1; +let spawnZ = 0; +let spawnYaw = 0; +for (let i = 0; i < spawns.length; i++) { + const s = spawns[i]; + const primary = s.userData['primary'] === '1'; + if (i === 0 || primary) { + spawnX = s.transform.position[0]; + spawnY = s.transform.position[1]; + spawnZ = s.transform.position[2]; + const yaw = s.userData['yaw']; + spawnYaw = yaw !== undefined ? parseFloat(yaw) : 0; + if (spawnYaw !== spawnYaw) spawnYaw = 0; + if (primary) break; + } +} +export const SPAWN_X = spawnX; +export const SPAWN_Y = spawnY; +export const SPAWN_Z = spawnZ; +export const SPAWN_YAW = spawnYaw; + +// ---- collider_box ------------------------------------------------------------ + +const cols = bucket('collider_box'); +export const COLLIDER_COUNT = cols.length; +export const COLLIDER_X = new Array(COLLIDER_COUNT); +export const COLLIDER_Y = new Array(COLLIDER_COUNT); +export const COLLIDER_Z = new Array(COLLIDER_COUNT); +export const COLLIDER_HALF_X = new Array(COLLIDER_COUNT); +export const COLLIDER_HALF_Y = new Array(COLLIDER_COUNT); +export const COLLIDER_HALF_Z = new Array(COLLIDER_COUNT); +for (let i = 0; i < COLLIDER_COUNT; i++) { + const e = cols[i]; + const he = e.userData['halfExtents']; + COLLIDER_X[i] = e.transform.position[0]; + COLLIDER_Y[i] = e.transform.position[1]; + COLLIDER_Z[i] = e.transform.position[2]; + COLLIDER_HALF_X[i] = vec3Part(he, 0, 0.5); + COLLIDER_HALF_Y[i] = vec3Part(he, 1, 0.5); + COLLIDER_HALF_Z[i] = vec3Part(he, 2, 0.5); +} + +// ---- static_mesh ------------------------------------------------------------- +// +// modelRef is resolved to an index into a unique-model list, so the runtime +// loads each GLB once and draws by index. `_gizmo_box.glb` is a sentinel for +// "no mesh, draw a coloured box" — the same convention the editor renders as a +// placeholder cube. + +const meshes = bucket('static_mesh'); +export const MESH_COUNT = meshes.length; + +const modelRefs = new Array(MESH_COUNT); +for (let i = 0; i < MESH_COUNT; i++) { + const r = meshes[i].modelRef; + modelRefs[i] = r !== null ? r : ''; +} + +// Unique-ify without .push(). +const uniqueTmp = new Array(MESH_COUNT); +let uniqueN = 0; +const meshModelIdx = new Array(MESH_COUNT); +for (let i = 0; i < MESH_COUNT; i++) { + const ref = modelRefs[i]; + let found = -1; + for (let u = 0; u < uniqueN; u++) { + if (uniqueTmp[u] === ref) { found = u; break; } + } + if (found < 0) { + uniqueTmp[uniqueN] = ref; + found = uniqueN; + uniqueN = uniqueN + 1; + } + meshModelIdx[i] = found; +} + +export const UNIQUE_MODEL_COUNT = uniqueN; +export const UNIQUE_MODELS = new Array(uniqueN); +export const MODEL_IS_BOX = new Array(uniqueN); +for (let i = 0; i < uniqueN; i++) { + const path = uniqueTmp[i]; + UNIQUE_MODELS[i] = path; + const isBox = path.length === 0 || path.endsWith('_gizmo_box.glb'); + MODEL_IS_BOX[i] = isBox ? 1 : 0; +} + +export const MESH_MODEL_IDX = meshModelIdx; +export const MESH_X = new Array(MESH_COUNT); +export const MESH_Y = new Array(MESH_COUNT); +export const MESH_Z = new Array(MESH_COUNT); +export const MESH_ROT_Y = new Array(MESH_COUNT); +export const MESH_SCALE = new Array(MESH_COUNT); +export const MESH_COLLIDER = new Array(MESH_COUNT); +export const MESH_COLLIDER_HX = new Array(MESH_COUNT); +export const MESH_COLLIDER_HY = new Array(MESH_COUNT); +export const MESH_COLLIDER_HZ = new Array(MESH_COUNT); +export const MESH_CATEGORY = new Array(MESH_COUNT); + +for (let i = 0; i < MESH_COUNT; i++) { + const e = meshes[i]; + const he = e.userData['halfExtents']; + MESH_X[i] = e.transform.position[0]; + MESH_Y[i] = e.transform.position[1]; + MESH_Z[i] = e.transform.position[2]; + MESH_ROT_Y[i] = e.transform.rotation[1]; + MESH_SCALE[i] = e.transform.scale[0]; + MESH_COLLIDER[i] = e.userData['collider'] === 'box' ? 1 : 0; + MESH_COLLIDER_HX[i] = vec3Part(he, 0, 0.5); + MESH_COLLIDER_HY[i] = vec3Part(he, 1, 0.5); + MESH_COLLIDER_HZ[i] = vec3Part(he, 2, 0.5); + + // Paint category from the first tag: 0 generic, 1 building, 2 terrain, 3 prop. + const tag = e.tags.length > 0 ? e.tags[0] : ''; + let cat = 0; + if (tag === 'building') cat = 1; + else if (tag === 'terrain') cat = 2; + else if (tag === 'prop') cat = 3; + MESH_CATEGORY[i] = cat; +} + +// ---- water ------------------------------------------------------------------- + +export const WATER_COUNT = world.water.length; +export const WATER_CX = new Array(WATER_COUNT); +export const WATER_CY = new Array(WATER_COUNT); +export const WATER_CZ = new Array(WATER_COUNT); +export const WATER_SX = new Array(WATER_COUNT); +export const WATER_SZ = new Array(WATER_COUNT); +export const WATER_R = new Array(WATER_COUNT); +export const WATER_G = new Array(WATER_COUNT); +export const WATER_B = new Array(WATER_COUNT); +export const WATER_A = new Array(WATER_COUNT); +export const WATER_WAVE_AMP = new Array(WATER_COUNT); +export const WATER_WAVE_SPD = new Array(WATER_COUNT); +for (let i = 0; i < WATER_COUNT; i++) { + const w = world.water[i]; + WATER_CX[i] = w.center[0]; + WATER_CY[i] = w.surfaceHeight; + WATER_CZ[i] = w.center[2]; + WATER_SX[i] = w.size[0]; + WATER_SZ[i] = w.size[2]; + WATER_R[i] = w.color[0]; + WATER_G[i] = w.color[1]; + WATER_B[i] = w.color[2]; + WATER_A[i] = w.color[3]; + WATER_WAVE_AMP[i] = w.waveAmplitude; + WATER_WAVE_SPD[i] = w.waveSpeed; +} + +// ---- lights (schema v2: top-level, not entities) ------------------------------ + +export const LIGHT_COUNT = world.lights.length; +export const LIGHT_X = new Array(LIGHT_COUNT); +export const LIGHT_Y = new Array(LIGHT_COUNT); +export const LIGHT_Z = new Array(LIGHT_COUNT); +export const LIGHT_RANGE = new Array(LIGHT_COUNT); +export const LIGHT_R = new Array(LIGHT_COUNT); +export const LIGHT_G = new Array(LIGHT_COUNT); +export const LIGHT_B = new Array(LIGHT_COUNT); +export const LIGHT_INT = new Array(LIGHT_COUNT); +for (let i = 0; i < LIGHT_COUNT; i++) { + const l = world.lights[i]; + LIGHT_X[i] = l.position[0]; + LIGHT_Y[i] = l.position[1]; + LIGHT_Z[i] = l.position[2]; + LIGHT_RANGE[i] = l.range; + LIGHT_R[i] = l.color[0]; + LIGHT_G[i] = l.color[1]; + LIGHT_B[i] = l.color[2]; + LIGHT_INT[i] = l.intensity; +} + +// ---- enemy spawners ---------------------------------------------------------- + +const spawners = bucket('enemy_spawner'); +export const SPAWNER_COUNT = spawners.length; +export const SPAWNER_X = new Array(SPAWNER_COUNT); +export const SPAWNER_Z = new Array(SPAWNER_COUNT); +for (let i = 0; i < SPAWNER_COUNT; i++) { + SPAWNER_X[i] = spawners[i].transform.position[0]; + SPAWNER_Z[i] = spawners[i].transform.position[2]; +} + +// ---- weapon pickups ---------------------------------------------------------- + +const pickups = bucket('weapon_pickup'); +export const PICKUP_COUNT = pickups.length; +export const PICKUP_X = new Array(PICKUP_COUNT); +export const PICKUP_Z = new Array(PICKUP_COUNT); +export const PICKUP_KIND = new Array(PICKUP_COUNT); +for (let i = 0; i < PICKUP_COUNT; i++) { + PICKUP_X[i] = pickups[i].transform.position[0]; + PICKUP_Z[i] = pickups[i].transform.position[2]; + // 0 = rifle, 1 = blaster. + PICKUP_KIND[i] = pickups[i].userData['weapon'] === 'blaster' ? 1 : 0; +} + +// ---- wave plan --------------------------------------------------------------- +// +// `wave_config.userData.waves` is an escaped-JSON string of [{count, enemy}], +// where `enemy` may be a comma-separated sequence so one wave can mix kinds. +// Expanded here into two flat arrays, once, so the wave director never parses. + +const ENEMY_KIND_NAMES = ['dretch', 'mantis', 'marauder', 'dragoon', 'tyrant']; + +const waveEnts = bucket('wave_config'); +let planCount = 0; +let kindTotal = 0; +let waveSize = new Array(0); +let waveOffs = new Array(0); +let waveKind = new Array(0); + +if (waveEnts.length > 0) { + const raw = waveEnts[0].userData['waves']; + if (raw !== undefined && raw.length > 0) { + const waves = JSON.parse(raw); + planCount = waves.length; + + for (let i = 0; i < planCount; i++) { + kindTotal = kindTotal + waves[i].count; + } + + waveSize = new Array(planCount); + waveOffs = new Array(planCount); + waveKind = new Array(kindTotal); + + let off = 0; + for (let i = 0; i < planCount; i++) { + const w = waves[i]; + const count = w.count; + waveSize[i] = count; + waveOffs[i] = off; + + const names = w.enemy.split(','); + const nameCount = names.length; + for (let k = 0; k < count; k++) { + const name = nameCount > 0 ? names[k % nameCount].trim() : 'dretch'; + let id = 0; + for (let n = 0; n < ENEMY_KIND_NAMES.length; n++) { + if (ENEMY_KIND_NAMES[n] === name) { id = n; break; } + } + waveKind[off + k] = id; + } + off = off + count; + } + } +} + +export const WAVE_PLAN_COUNT = planCount; +export const WAVE_SIZE = waveSize; +export const WAVE_OFFS = waveOffs; +export const WAVE_KIND = waveKind; + +// ---- forest ------------------------------------------------------------------ +// +// The 88 trees used to be scattered at startup from a fixed LCG seed. That made +// them unauthorable: no tree had an identity, so "move that one off the path" +// could not be expressed. They are ordinary entities now (`bun +// tools/bake-forest-to-world.ts` seeded them from the same scatter), so the +// editor can move, delete, retint, or add one, and the game just reads them. +// +// Y is taken as authored rather than re-snapped to the terrain: the world file +// is the source of truth, and silently overriding a placement the editor made +// is worse than a tree that needs re-seating after a big sculpt. + +const treeEnts = bucket('prop_tree'); +export const FOREST_COUNT = treeEnts.length; +export const FOREST_X = new Array(FOREST_COUNT); +export const FOREST_Y = new Array(FOREST_COUNT); +export const FOREST_Z = new Array(FOREST_COUNT); +export const FOREST_VAR = new Array(FOREST_COUNT); +export const FOREST_YAW = new Array(FOREST_COUNT); // degrees (drawModelRotated) +export const FOREST_SCALE = new Array(FOREST_COUNT); +export const FOREST_TINT_R = new Array(FOREST_COUNT); +export const FOREST_TINT_G = new Array(FOREST_COUNT); +export const FOREST_TINT_B = new Array(FOREST_COUNT); + +// The three tree GLBs, in variant order. A tree whose modelRef isn't one of them +// falls back to variant 0 rather than vanishing. +const TREE_MODEL_0 = 'assets/models/prop_tree.glb'; +const TREE_MODEL_1 = 'assets/models/prop_tree2.glb'; +const TREE_MODEL_2 = 'assets/models/prop_tree3.glb'; + +for (let i = 0; i < FOREST_COUNT; i++) { + const e = treeEnts[i]; + FOREST_X[i] = e.transform.position[0]; + FOREST_Y[i] = e.transform.position[1]; + FOREST_Z[i] = e.transform.position[2]; + + const ref = e.modelRef !== null ? e.modelRef : ''; + let variant = 0; + if (ref === TREE_MODEL_1) variant = 1; + else if (ref === TREE_MODEL_2) variant = 2; + FOREST_VAR[i] = variant; + + // The world stores rotation in radians; drawModelRotated takes degrees. + FOREST_YAW[i] = e.transform.rotation[1] * 180 / Math.PI; + FOREST_SCALE[i] = e.transform.scale[0]; + + // Entity tints are 0-1 (the schema's convention); the draw API takes 0-255. + const tint = e.tint; + const tr = tint !== null ? tint[0] : 1; + const tg = tint !== null ? tint[1] : 1; + const tb = tint !== null ? tint[2] : 1; + FOREST_TINT_R[i] = Math.max(0, Math.min(255, Math.floor(tr * 255))); + FOREST_TINT_G[i] = Math.max(0, Math.min(255, Math.floor(tg * 255))); + FOREST_TINT_B[i] = Math.max(0, Math.min(255, Math.floor(tb * 255))); +} + +// ---- scatter keep-out -------------------------------------------------------- +// +// Where the procedural scatters (forest, grass) must not put anything: on the +// water, inside the building, or on top of the player's spawn. +// +// These used to be hardcoded rectangles copied out of the level by hand — the +// river at "z = 12", the building at "x -30..-12, z -19..-7". Move the river in +// the editor and the grass kept avoiding the old channel while growing out of +// the new one. Now the shapes are derived from the world data itself, so they +// cannot drift. +// +// Water rectangles, from the volumes. Rectangles (not the boxes' full extents) +// because the scatters are 2D — they only ask "may something grow here". + +export const KEEPOUT_COUNT = WATER_COUNT + 1; // water volumes + the building +const KEEPOUT_X0 = new Array(KEEPOUT_COUNT); +const KEEPOUT_X1 = new Array(KEEPOUT_COUNT); +const KEEPOUT_Z0 = new Array(KEEPOUT_COUNT); +const KEEPOUT_Z1 = new Array(KEEPOUT_COUNT); + +for (let i = 0; i < WATER_COUNT; i++) { + KEEPOUT_X0[i] = WATER_CX[i] - WATER_SX[i] / 2; + KEEPOUT_X1[i] = WATER_CX[i] + WATER_SX[i] / 2; + KEEPOUT_Z0[i] = WATER_CZ[i] - WATER_SZ[i] / 2; + KEEPOUT_Z1[i] = WATER_CZ[i] + WATER_SZ[i] / 2; +} + +// The building's footprint, as the bounding box of every `building`-tagged mesh +// (category 1) that carries a collider. Beats hardcoding the rect that the +// building generator happened to use, and follows the building if it moves. +{ + let bx0 = 0, bx1 = 0, bz0 = 0, bz1 = 0; + let any = false; + for (let i = 0; i < MESH_COUNT; i++) { + if (MESH_CATEGORY[i] !== 1 || MESH_COLLIDER[i] !== 1) continue; + const x0 = MESH_X[i] - MESH_COLLIDER_HX[i]; + const x1 = MESH_X[i] + MESH_COLLIDER_HX[i]; + const z0 = MESH_Z[i] - MESH_COLLIDER_HZ[i]; + const z1 = MESH_Z[i] + MESH_COLLIDER_HZ[i]; + if (!any) { + bx0 = x0; bx1 = x1; bz0 = z0; bz1 = z1; + any = true; + } else { + if (x0 < bx0) bx0 = x0; + if (x1 > bx1) bx1 = x1; + if (z0 < bz0) bz0 = z0; + if (z1 > bz1) bz1 = z1; + } + } + const i = WATER_COUNT; + // An empty box (x0 > x1) rejects nothing, which is what we want when a world + // has no building at all. + KEEPOUT_X0[i] = any ? bx0 : 1; + KEEPOUT_X1[i] = any ? bx1 : -1; + KEEPOUT_Z0[i] = any ? bz0 : 1; + KEEPOUT_Z1[i] = any ? bz1 : -1; +} + +// True when (x, z) falls inside any keep-out rectangle, grown by `margin`. +// Callers pass their own margin: trees need more clearance than grass blades. +export function keepOut(x: number, z: number, margin: number): boolean { + for (let i = 0; i < KEEPOUT_COUNT; i++) { + if (x > KEEPOUT_X0[i] - margin && x < KEEPOUT_X1[i] + margin && + z > KEEPOUT_Z0[i] - margin && z < KEEPOUT_Z1[i] + margin) { + return true; + } + } + return false; +} + +// ---- terrain ----------------------------------------------------------------- +// +// The heightmap comes from the world file, which the editor sculpts. It feeds +// the Jolt heightfield, enemy ground-following, and the grass/tree scatter — so +// reshaping the ground in the editor changes collision and gameplay on the next +// launch, with nothing to regenerate. (The *visual* mesh is still baked from +// these same heights by `bun tools/build-terrain.ts`, which also adds the +// horizon skirt outside the arena.) +// +// A world with no terrain yields a flat plane at y = 0 rather than a crash. + +const terrain = world.terrain; +const hasTerrain = terrain !== null; + +export const TERRAIN_SAMPLE_COUNT = hasTerrain ? terrain.width : 2; +export const TERRAIN_CELL_SIZE = hasTerrain ? terrain.cellSize : 1; +export const TERRAIN_ORIGIN_X = hasTerrain ? terrain.origin[0] : 0; +export const TERRAIN_ORIGIN_Y = hasTerrain ? terrain.origin[1] : 0; +export const TERRAIN_ORIGIN_Z = hasTerrain ? terrain.origin[2] : 0; + +const heightCount = TERRAIN_SAMPLE_COUNT * TERRAIN_SAMPLE_COUNT; +export const TERRAIN_HEIGHTS = new Array(heightCount); +for (let i = 0; i < heightCount; i++) { + TERRAIN_HEIGHTS[i] = hasTerrain ? terrain.heights[i] : 0; +} diff --git a/tools/bake-forest-to-world.ts b/tools/bake-forest-to-world.ts new file mode 100644 index 0000000..a1a6049 --- /dev/null +++ b/tools/bake-forest-to-world.ts @@ -0,0 +1,156 @@ +// Turn the procedural forest into world entities. +// +// bun tools/bake-forest-to-world.ts assets/worlds/arena_02.world.json +// +// The forest used to be scattered at startup from a fixed LCG seed, which meant +// it was not a thing you could edit: no tree had an identity, and "move that one +// off the path" was not expressible. This runs the same scatter once and writes +// the result into the world file as ordinary entities, after which each tree is +// a normal object the editor can move, rotate, scale, retint, delete, or +// duplicate — and the game just reads them. +// +// Re-running this REPLACES every tree in the world file, discarding any editing +// you have done to them. It is a one-time seeding step, not part of the build. +// +// The scatter itself is unchanged (same seed, same jitter, same variants), so +// the forest that comes out is the forest the game has always drawn. What +// changes is where it lives: data, not code. + +import * as fs from 'fs'; + +const TREE_KIND = 'prop_tree'; +const TREE_MODELS = [ + 'assets/models/prop_tree.glb', + 'assets/models/prop_tree2.glb', + 'assets/models/prop_tree3.glb', +]; + +const COUNT_MAX = 88; +const SEED = 0x55aa1234; +const SPAWN_CLEAR = 6; // Keep trees off the player's spawn. +const KEEPOUT_MARGIN = 1.5; // Clearance from water and buildings. + +interface Rect { x0: number; x1: number; z0: number; z1: number; } + +function main(): void { + const path = process.argv[2] || 'assets/worlds/arena_02.world.json'; + const world = JSON.parse(fs.readFileSync(path, 'utf8')); + + const terrain = world.terrain; + if (!terrain) { + console.error(`${path} has no terrain — run bake-terrain-to-world.ts first.`); + process.exit(1); + } + + // Keep-out shapes, derived from the world rather than hardcoded: the water + // volumes, and the bounding box of the building's colliders. + const keepOut: Rect[] = []; + for (const w of world.water ?? []) { + keepOut.push({ + x0: w.center[0] - w.size[0] / 2, + x1: w.center[0] + w.size[0] / 2, + z0: w.center[2] - w.size[2] / 2, + z1: w.center[2] + w.size[2] / 2, + }); + } + + let bx0 = Infinity, bx1 = -Infinity, bz0 = Infinity, bz1 = -Infinity; + for (const e of world.entities) { + const ud = e.userData ?? {}; + if (ud.kind !== 'static_mesh' || ud.collider !== 'box') continue; + if (!(e.tags ?? []).includes('building')) continue; + const he = (ud.halfExtents ?? '0.5, 0.5, 0.5').split(',').map(Number); + bx0 = Math.min(bx0, e.transform.position[0] - he[0]); + bx1 = Math.max(bx1, e.transform.position[0] + he[0]); + bz0 = Math.min(bz0, e.transform.position[2] - he[2]); + bz1 = Math.max(bz1, e.transform.position[2] + he[2]); + } + if (bx0 < Infinity) { + keepOut.push({ x0: bx0, x1: bx1, z0: bz0, z1: bz1 }); + console.log(`building footprint: x ${bx0.toFixed(1)}..${bx1.toFixed(1)}, z ${bz0.toFixed(1)}..${bz1.toFixed(1)}`); + } + + const spawn = world.entities.find((e: any) => e.userData?.kind === 'player_spawn'); + const spawnX = spawn ? spawn.transform.position[0] : 0; + const spawnZ = spawn ? spawn.transform.position[2] : 0; + + const blocked = (x: number, z: number): boolean => { + for (const r of keepOut) { + if (x > r.x0 - KEEPOUT_MARGIN && x < r.x1 + KEEPOUT_MARGIN && + z > r.z0 - KEEPOUT_MARGIN && z < r.z1 + KEEPOUT_MARGIN) return true; + } + return Math.hypot(x - spawnX, z - spawnZ) < SPAWN_CLEAR; + }; + + // Bilinear sample of the authored heightmap: trees stand on the ground. + const groundAt = (x: number, z: number): number => { + const fx = (x - terrain.origin[0]) / terrain.cellSize; + const fz = (z - terrain.origin[2]) / terrain.cellSize; + if (fx < 0 || fz < 0 || fx >= terrain.width - 1 || fz >= terrain.depth - 1) return 0; + const ix = Math.floor(fx), iz = Math.floor(fz); + const tx = fx - ix, tz = fz - iz; + const h00 = terrain.heights[iz * terrain.width + ix]; + const h10 = terrain.heights[iz * terrain.width + ix + 1]; + const h01 = terrain.heights[(iz + 1) * terrain.width + ix]; + const h11 = terrain.heights[(iz + 1) * terrain.width + ix + 1]; + return (h00 * (1 - tx) + h10 * tx) * (1 - tz) + (h01 * (1 - tx) + h11 * tx) * tz; + }; + + // The original scatter, verbatim: same LCG, same rejection order, same jitter. + let seed = SEED | 0; + const rand = (): number => { + seed = ((seed * 1103515245) + 12345) & 0x7fffffff; + return seed / 0x7fffffff; + }; + + const trees: any[] = []; + for (let attempt = 0; attempt < COUNT_MAX * 4 && trees.length < COUNT_MAX; attempt++) { + const r1 = rand(), r2 = rand(), r3 = rand(), r4 = rand(), r5 = rand(); + const px = -36 + r1 * 72; + const pz = -36 + r2 * 72; + if (blocked(px, pz)) continue; + + const py = groundAt(px, pz); + const variant = Math.floor(r3 * 3) % 3; + const yawDeg = r3 * 360; + // Leaf-card tree is ~5.5 m at scale 1; 0.85..1.45 gives a believable size + // hierarchy (4.7..8 m) rather than a field of identical bushes. + const scale = 0.85 + r4 * 0.60; + // Subtle per-tree hue shift (±10% around white) so the forest doesn't read + // as one model copy-pasted. + const hue = (r5 - 0.5) * 0.20; + + const n = trees.length + 1; + const id = 'tree_' + String(n).padStart(4, '0'); + trees.push({ + id: id, + name: id, + modelRef: TREE_MODELS[variant], + prefabRef: null, + transform: { + position: [round(px), round(py), round(pz)], + rotation: [0, round(yawDeg * Math.PI / 180), 0], + scale: [round(scale), round(scale), round(scale)], + }, + tint: [round(1 - hue), round(1 + hue * 0.5), round(1 - hue * 0.8), 1], + tags: ['prop', 'tree'], + userData: { kind: TREE_KIND }, + }); + } + + const kept = world.entities.filter((e: any) => e.userData?.kind !== TREE_KIND); + const removed = world.entities.length - kept.length; + world.entities = kept.concat(trees); + + fs.writeFileSync(path, JSON.stringify(world, null, 2) + '\n'); + console.log( + `wrote ${trees.length} ${TREE_KIND} entities to ${path}` + + (removed > 0 ? ` (replaced ${removed} existing)` : ''), + ); +} + +function round(v: number): number { + return Math.round(v * 10000) / 10000; +} + +main(); diff --git a/tools/bake-terrain-to-world.ts b/tools/bake-terrain-to-world.ts new file mode 100644 index 0000000..734d798 --- /dev/null +++ b/tools/bake-terrain-to-world.ts @@ -0,0 +1,85 @@ +// Write the arena's heightmap into the world file, so `world.terrain` becomes +// the source of truth the game loads and the editor sculpts. +// +// bun tools/bake-terrain-to-world.ts assets/worlds/arena_02.world.json +// +// Run once to seed the terrain from the procedural shape in ./terrain-shape.ts. +// Running it again OVERWRITES any sculpting done in the editor — it re-derives +// the heights from scratch — so it is not part of the normal build. It exists so +// the terrain can be regenerated from its recipe if that is ever wanted. +// +// The river channel is carved from the world's own water volume rather than a +// constant: the riverbed used to be cut at a hardcoded z = 12 that happened to +// match the water, and moving the water in the editor would have left the +// channel behind. + +import * as fs from 'fs'; +import { arenaHeightAt, ARENA_HALF, RiverCarve } from './terrain-shape'; + +// 128 × 128 over the 80 m arena → 0.63 m cells. Fine enough to sculpt with and +// to hold the river channel; the count must divide by the physics heightfield's +// block size (4). +const SAMPLES = 128; +const CELL = (ARENA_HALF * 2) / (SAMPLES - 1); +const ORIGIN = -ARENA_HALF; + +// Channel floor and bank width. Not derivable from the water volume (it says +// where the water is, not how the ground beneath it was cut), so they stay here +// with the rest of the terrain recipe. +const BED = -0.55; +const BANK = 2.4; + +function main(): void { + const path = process.argv[2] || 'assets/worlds/arena_02.world.json'; + const world = JSON.parse(fs.readFileSync(path, 'utf8')); + + // River carve follows the world's water volume: centre line and width come + // from the data, so the ground and the water can never disagree. + let river: RiverCarve = { z: 12, halfWidth: 2.5, bed: BED, bank: BANK }; + if (world.water && world.water.length > 0) { + const w = world.water[0]; + river = { + z: w.center[2], + halfWidth: w.size[2] / 2, + bed: BED, + bank: BANK, + }; + console.log( + `river channel from water "${w.id}": z=${river.z}, half-width=${river.halfWidth}`, + ); + } else { + console.log('no water volume — carving the default channel'); + } + + const heights: number[] = []; + let min = Infinity; + let max = -Infinity; + for (let z = 0; z < SAMPLES; z++) { + for (let x = 0; x < SAMPLES; x++) { + const wx = ORIGIN + x * CELL; + const wz = ORIGIN + z * CELL; + const h = Math.round(arenaHeightAt(wx, wz, river) * 10000) / 10000; + heights.push(h); + if (h < min) min = h; + if (h > max) max = h; + } + } + + world.terrain = { + width: SAMPLES, + depth: SAMPLES, + cellSize: CELL, + origin: [ORIGIN, 0, ORIGIN], + heights: heights, + layers: [], + }; + + fs.writeFileSync(path, JSON.stringify(world, null, 2) + '\n'); + + console.log( + `wrote world.terrain: ${SAMPLES}×${SAMPLES} @ ${CELL.toFixed(4)} m, ` + + `heights ${min.toFixed(2)}..${max.toFixed(2)} m → ${path}`, + ); +} + +main(); diff --git a/tools/build-terrain.ts b/tools/build-terrain.ts index 269e927..f129752 100644 --- a/tools/build-terrain.ts +++ b/tools/build-terrain.ts @@ -1,117 +1,90 @@ -// Procedural terrain GLB generator. +// Terrain mesh generator — builds assets/models/terrain_hills.glb. // -// Builds assets/models/terrain_hills.glb — a heightmap-driven triangle mesh -// covering 80 × 80 m with procedural hills. Single PBR material (grassy -// green). The generated mesh has per-vertex flat-ish normals computed from -// neighbour heights. The shooter uses this as the world ground; collisions -// are approximated with box colliders per hill (still declared in the world -// file) because Jolt heightfield shapes aren't wired to the FFI yet. +// bun tools/build-terrain.ts [assets/worlds/arena_02.world.json] // -// Run with: bun tools/build-terrain.ts (from the shooter repo root) +// The arena's heights are NOT invented here any more: they are read from +// `world.terrain` in the world file, which is what the game loads for physics +// and what the editor sculpts. This tool turns those heights into the textured +// visual mesh, and extends them outward with a procedural "skirt" of hills that +// hides the horizon (nothing walks out there, and the physics heightfield does +// not cover it, so the skirt is derived rather than authored). +// +// So: sculpt in the editor → save → re-run this → the visuals follow. Physics +// and terrain-height queries need no rebuild at all; they read the world file +// directly at startup. -import { mkdirSync, writeFileSync } from 'node:fs'; +import { mkdirSync, writeFileSync, readFileSync } from 'node:fs'; import { dirname } from 'node:path'; import { encodePng, grassTexture, heightToNormal } from './png'; +import { skirtHeightAt, ARENA_HALF, EXTENT_HALF } from './terrain-shape'; const OUT_GLB = 'assets/models/terrain_hills.glb'; -const OUT_TS = 'src/generated/terrain.ts'; +const WORLD_PATH = process.argv[2] || 'assets/worlds/arena_02.world.json'; -// Grid parameters. The gameplay arena spans ±ARENA_HALF (colliders, physics -// heightfield, spawn logic all assume 80 × 80 m — unchanged). The VISUAL mesh -// extends to ±EXTENT_HALF with a "skirt" of rolling hills that rise with -// distance, so from gameplay eye height the horizon line (and the dark -// below-horizon procedural sky) is always hidden behind terrain instead of -// the world ending on a hard edge over a void. 256 × 256 cells ≈ 1.1 m -// spacing = 65 k verts / 130 k tris — still one draw call. +// Visual mesh: 256 × 256 over ±EXTENT_HALF ≈ 1.1 m spacing = 65 k verts / +// 130 k tris, still one draw call. Finer than the authored heightmap on +// purpose — the extra vertices carry the skirt and keep the silhouette smooth. const WIDTH = 256; const DEPTH = 256; -const ARENA_HALF = 40; // gameplay arena half-extent (must stay 40) -const EXTENT_HALF = 140; // visual mesh half-extent incl. skirt const CELL = (EXTENT_HALF * 2) / (WIDTH - 1); const ORIGIN_X = -EXTENT_HALF; const ORIGIN_Z = -EXTENT_HALF; -const PHYS_WIDTH = 64; // 64 × 64 = 4096 samples -const PHYS_CELL = (ARENA_HALF * 2) / (PHYS_WIDTH - 1); // ≈ 1.27 m per cell -const PHYS_ORIGIN = -ARENA_HALF; // physics grid covers the arena only +// ---- authored heights from the world file ------------------------------------ -// Two axis-aligned "hill" centres plus a long ridge. The plaza itself (a -// ring around the origin with radius 15 m) stays flat so gameplay colliders -// line up with the world file. Values are hand-tuned for something -// believable without going over 3 m tall. -function heightAt(x: number, z: number): number { - // Distance to origin — suppress height near spawn. - const r = Math.sqrt(x * x + z * z); - const plazaBlend = r < 16 ? 0 : Math.min(1, (r - 16) / 8); +interface TerrainData { + width: number; + depth: number; + cellSize: number; + origin: [number, number, number]; + heights: number[]; +} - // Two gentle gaussian hills. - const hill = (cx: number, cz: number, sigma: number, h: number) => { - const dx = x - cx, dz = z - cz; - const d = dx * dx + dz * dz; - return h * Math.exp(-d / (2 * sigma * sigma)); - }; - let h = 0; - h += hill( 26, -24, 10, 3.2); - h += hill(-24, 26, 9, 2.6); - h += hill( 30, 28, 7, 1.8); - // Long rolling ridge to the west. - h += 1.1 * Math.exp(-Math.pow(x + 28, 2) / 140) * - 0.6 * (1 + Math.sin(z * 0.12)); - // Low-frequency waviness everywhere so the flat plate doesn't look dead. - h += 0.25 * Math.sin(x * 0.08) * Math.cos(z * 0.10); - h += 0.18 * Math.sin(x * 0.17 + z * 0.11); - let y = h * plazaBlend; +const world = JSON.parse(readFileSync(WORLD_PATH, 'utf8')); +const terrain: TerrainData | null = world.terrain || null; +if (!terrain) { + console.error( + `${WORLD_PATH} has no terrain. Seed it first: +` + + ` bun tools/bake-terrain-to-world.ts ${WORLD_PATH}`, + ); + process.exit(1); +} +console.log( + `terrain from ${WORLD_PATH}: ${terrain.width}×${terrain.depth} @ ` + + `${terrain.cellSize.toFixed(4)} m`, +); - // Visual-only skirt — rolling hills that rise with distance outside the - // gameplay arena. Gated on Chebyshev distance so heights inside ±ARENA_HALF - // (and therefore the physics heightfield, which only samples the arena) are - // bit-identical to before. The smooth ease-in from zero at the boundary - // keeps the mesh crease-free where skirt meets arena. Amplitude reaches - // ~12-20 m at the far edge: enough that from any gameplay eye height the - // horizon line (dark below-horizon sky) stays hidden behind terrain. - const dEdge = Math.max(Math.abs(x), Math.abs(z)); - if (dEdge > ARENA_HALF) { - const t = Math.min(1, (dEdge - ARENA_HALF) / (EXTENT_HALF - ARENA_HALF)); - const ss = t * t * (3 - 2 * t); - // Angular lobes break the square-ring symmetry; xz rolls add local relief. - const ang = Math.atan2(z, x); - const lobes = 1 + 0.35 * Math.sin(ang * 3 + 1.7) + 0.2 * Math.sin(ang * 7 + 0.6); - const roll = Math.sin(x * 0.045 + 1.3) * Math.cos(z * 0.05 + 0.4) * 3.2 - + Math.sin(x * 0.11 + z * 0.07) * 1.6; - // Floor the skirt profile: where lobes + roll both dip, sightlines from - // gameplay eye height cleared the ring and the dark below-horizon sky - // peeked through between the hills. 6.5 m at the far edge ≈ +2.7° above - // the ground plane from anywhere in the arena — always above eye level. - y += Math.max(ss * (12.0 * lobes + roll), ss * 6.5); - } +// Bilinear sample of the authored grid, clamped at the edges so the skirt has a +// continuous base to rise from. +function sampleWorldHeight(x: number, z: number): number { + const t = terrain as TerrainData; + const fx = (x - t.origin[0]) / t.cellSize; + const fz = (z - t.origin[2]) / t.cellSize; - // River channel — carve the terrain BELOW the water plane (water sits at - // y≈0.05) along the river path (segments run z≈11–13 across x≈-37..39). - // Without this the riverbed terrain — up to ~2.3 m under some segments — - // pokes through the flat water surface. The bed is forced to BED at the - // centre and smoothly ramps back to the natural terrain over BANK metres, - // so the river reads as a proper carved channel with grassy banks. Drives - // both the visual GLB and the Jolt heightfield (one source of truth). - // Beyond the arena the carve fades out over ~14 m so the channel reads as - // a gully closing into the skirt hills instead of dead-ending on a wall. - const RIVER_Z = 12.0, BED = -0.55, HALF = 2.6, BANK = 2.4; - { - const dzr = Math.abs(z - RIVER_Z); - if (dzr < HALF + BANK) { - let carve = 1.0; - if (dzr > HALF) { - const tt = 1 - (dzr - HALF) / BANK; // 1 at bed edge → 0 at bank top - carve = tt * tt * (3 - 2 * tt); // smoothstep - } - let endFade = 1.0; - if (x >= 40) endFade = Math.max(0, 1 - (x - 40) / 14); - else if (x <= -38) endFade = Math.max(0, 1 - (-38 - x) / 14); - endFade = endFade * endFade * (3 - 2 * endFade); - carve *= endFade; - if (carve > 0) y = y * (1 - carve) + BED * carve; - } - } - return y; + const cx = Math.min(Math.max(fx, 0), t.width - 1.001); + const cz = Math.min(Math.max(fz, 0), t.depth - 1.001); + + const x0 = Math.floor(cx); + const z0 = Math.floor(cz); + const tx = cx - x0; + const tz = cz - z0; + + const h00 = t.heights[z0 * t.width + x0]; + const h10 = t.heights[z0 * t.width + x0 + 1]; + const h01 = t.heights[(z0 + 1) * t.width + x0]; + const h11 = t.heights[(z0 + 1) * t.width + x0 + 1]; + + const h0 = h00 + (h10 - h00) * tx; + const h1 = h01 + (h11 - h01) * tx; + return t.origin[1] + h0 + (h1 - h0) * tz; +} + +// Inside the arena: exactly what the game loads. Outside: the same heights, +// clamped at the boundary, plus the skirt — so a hill sculpted at the arena's +// edge continues into the surrounding landscape instead of ending in a cliff. +function heightAt(x: number, z: number): number { + return sampleWorldHeight(x, z) + skirtHeightAt(x, z); } // Build the mesh. @@ -290,51 +263,7 @@ writeFileSync(OUT_GLB, out); console.log('wrote', OUT_GLB, '(' + out.length, 'bytes,', vertCount, 'verts,', triCount, 'tris)'); console.log(' y range:', minY.toFixed(2), '...', maxY.toFixed(2)); -// --- Physics heightfield ----------------------------------------------------- -// Sample heightAt() on a coarser grid and emit as a literal-init TS array. -// Perry's JSON.parse bug doesn't apply to module-load-time literal arrays, -// so this is the safe way to ship 4 k samples to the runtime. The engine's -// heightfieldShape() consumes them directly (see engine/src/physics/index.ts). -const physSamples = new Array(PHYS_WIDTH * PHYS_WIDTH); -for (let z = 0; z < PHYS_WIDTH; z++) { - for (let x = 0; x < PHYS_WIDTH; x++) { - const wx = PHYS_ORIGIN + x * PHYS_CELL; - const wz = PHYS_ORIGIN + z * PHYS_CELL; - physSamples[z * PHYS_WIDTH + x] = heightAt(wx, wz); - } -} - -const tsLines: string[] = []; -tsLines.push('// GENERATED — do not edit by hand. Regenerate with: bun tools/build-terrain.ts'); -tsLines.push('//'); -tsLines.push(`// Heightfield samples for the Jolt heightfieldShape collider in main.ts.`); -tsLines.push(`// Grid is ${PHYS_WIDTH} × ${PHYS_WIDTH}, row-major (z * width + x). Cell size`); -tsLines.push(`// ${PHYS_CELL.toFixed(4)} m. Origin (world position of sample [0, 0]) is`); -tsLines.push(`// (${PHYS_ORIGIN}, 0, ${PHYS_ORIGIN}). Covers the gameplay arena only — the`); -tsLines.push(`// visual mesh extends further (skirt hills) but has no collision.`); -tsLines.push(''); -tsLines.push(`export const TERRAIN_SAMPLE_COUNT = ${PHYS_WIDTH};`); -tsLines.push(`export const TERRAIN_CELL_SIZE = ${PHYS_CELL};`); -tsLines.push(`export const TERRAIN_ORIGIN_X = ${PHYS_ORIGIN};`); -tsLines.push(`export const TERRAIN_ORIGIN_Y = 0;`); -tsLines.push(`export const TERRAIN_ORIGIN_Z = ${PHYS_ORIGIN};`); -tsLines.push(''); -tsLines.push('// Row-major height samples. One number per cell, ~4 KB total.'); -tsLines.push('export const TERRAIN_HEIGHTS: number[] = ['); -// Emit 16 samples per line for readability + to keep lines shorter than most -// compile-time literal-size limits. -for (let i = 0; i < physSamples.length; i += 16) { - const chunk = physSamples.slice(i, i + 16).map(n => n.toFixed(4)).join(', '); - tsLines.push(' ' + chunk + (i + 16 < physSamples.length ? ',' : '')); -} -tsLines.push('];'); - -mkdirSync(dirname(OUT_TS), { recursive: true }); -writeFileSync(OUT_TS, tsLines.join('\n') + '\n'); -console.log('wrote', OUT_TS, `(${physSamples.length} samples)`); -let pmin = physSamples[0], pmax = physSamples[0]; -for (let i = 1; i < physSamples.length; i++) { - if (physSamples[i] < pmin) pmin = physSamples[i]; - if (physSamples[i] > pmax) pmax = physSamples[i]; -} -console.log(` physics y range: ${pmin.toFixed(2)} ... ${pmax.toFixed(2)}`); +// The physics heightfield is NOT emitted here any more. The game reads +// `world.terrain` at startup and feeds it straight to Jolt, so collision and the +// terrain-height queries follow an edited world with no rebuild — only the +// visual mesh above needs this tool. diff --git a/tools/build-world.ts b/tools/build-world.ts deleted file mode 100644 index fc2a8f1..0000000 --- a/tools/build-world.ts +++ /dev/null @@ -1,334 +0,0 @@ -// Builds a Perry-safe TypeScript module from a Bloom world JSON file. -// -// Why: Perry 0.5.158's JSON.parse produces arrays whose `.length` reads as -// undefined (see docs/perry-quirks.md). So at runtime we can't read -// `.world.json` directly. This tool is a build step — run under `bun` — that -// reads the editor-authored world JSON and emits a sibling `.ts` module with -// literal-initialized flat arrays per entity kind. `src/main.ts` imports the -// generated file and consumes those arrays directly. -// -// Usage: -// bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts -// -// The generated module exports one parallel flat-array block per entity kind -// (e.g. COLLIDER_X[], COLLIDER_Y[], COLLIDER_HALF_EXT_X[] …), plus scalar -// constants for the environment and spawn point. Strings that are always -// drawn from a known vocabulary (e.g. enemy kind names) are translated to -// numeric ids at build time so the generated module has no `.length`-sensitive -// string arrays. - -import * as fs from 'fs'; -import * as path from 'path'; - -interface Vec3Lit { 0: number; 1: number; 2: number; length: 3 } - -interface EntityData { - id: string; - name: string; - modelRef: string | null; - prefabRef: string | null; - transform: { - position: [number, number, number]; - rotation: [number, number, number]; - scale: [number, number, number]; - }; - tint: [number, number, number, number] | null; - tags: string[]; - userData: Record; -} - -interface WaterVolume { - id: string; - kind: string; - center: [number, number, number]; - size: [number, number, number]; - surfaceHeight: number; - color: [number, number, number, number]; - waveAmplitude: number; - waveSpeed: number; -} - -interface WorldData { - schemaVersion: number; - name: string; - id: string; - bounds: { min: [number, number, number]; max: [number, number, number] }; - environment: { - skyColor: [number, number, number]; - ambientColor: [number, number, number]; - ambientIntensity: number; - sunDirection: [number, number, number]; - sunColor: [number, number, number]; - sunIntensity: number; - fogStart: number; - fogEnd: number; - fogColor: [number, number, number]; - shadowsEnabled: boolean; - }; - terrain: unknown; - entities: EntityData[]; - water: WaterVolume[]; - rivers: unknown[]; - metadata: Record; -} - -// Enemy kind names recognized by the shooter runtime. Index into this list is -// the numeric kind id emitted into ENEMY_SPAWNER_ENEMY_KIND[]. -const ENEMY_KINDS = ['dretch', 'mantis', 'marauder', 'dragoon', 'tyrant']; -const PICKUP_KINDS = ['rifle', 'blaster']; - -function fmtNumList(xs: number[]): string { - if (xs.length === 0) return '[]'; - return '[' + xs.map(n => (Number.isInteger(n) ? n.toFixed(1) : n.toString())).join(', ') + ']'; -} - -function fmtStrList(xs: string[]): string { - if (xs.length === 0) return '[]'; - return '[' + xs.map(s => JSON.stringify(s)).join(', ') + ']'; -} - -function parseVec3Str(s: string | undefined, fallback: [number, number, number]): [number, number, number] { - if (!s) return fallback; - const parts = s.split(',').map(Number); - if (parts.length !== 3 || parts.some(Number.isNaN)) return fallback; - return [parts[0], parts[1], parts[2]]; -} - -function main() { - const inputPath = process.argv[2]; - const outputPath = process.argv[3]; - if (!inputPath || !outputPath) { - console.error('usage: bun tools/build-world.ts '); - process.exit(2); - } - - const world: WorldData = JSON.parse(fs.readFileSync(inputPath, 'utf8')); - - // Bucket entities by userData.kind. Unknown kinds are dropped with a warning - // — the generated file stays compact and the game doesn't silently misbehave - // on typos in the world file. - const buckets: Record = {}; - for (const e of world.entities) { - const k = e.userData.kind || 'unknown'; - if (!buckets[k]) buckets[k] = []; - buckets[k].push(e); - } - - const out: string[] = []; - // Normalise to forward slashes. path.relative() hands back the host's - // separator, so regenerating on Windows and on macOS produced headers that - // differed only in `\` vs `/` — the generated file showed up dirty in git - // after every build, on whichever machine hadn't produced it last. - const posix = (p: string) => p.split(path.sep).join('/'); - const header = posix(path.relative(path.dirname(outputPath), inputPath)); - const outRel = posix(path.relative(process.cwd(), outputPath)); - out.push('// GENERATED — do not edit by hand.'); - out.push(`// Source: ${header}`); - out.push(`// Regenerate with: bun tools/build-world.ts ${header} ${outRel}`); - out.push(''); - out.push(`export const WORLD_NAME = ${JSON.stringify(world.name)};`); - out.push(`export const WORLD_ID = ${JSON.stringify(world.id)};`); - out.push(''); - out.push('// Environment'); - const env = world.environment; - out.push(`export const ENV_SKY_R = ${env.skyColor[0]};`); - out.push(`export const ENV_SKY_G = ${env.skyColor[1]};`); - out.push(`export const ENV_SKY_B = ${env.skyColor[2]};`); - out.push(`export const ENV_AMBIENT_R = ${env.ambientColor[0]};`); - out.push(`export const ENV_AMBIENT_G = ${env.ambientColor[1]};`); - out.push(`export const ENV_AMBIENT_B = ${env.ambientColor[2]};`); - out.push(`export const ENV_AMBIENT_I = ${env.ambientIntensity};`); - out.push(`export const ENV_SUN_DIR_X = ${env.sunDirection[0]};`); - out.push(`export const ENV_SUN_DIR_Y = ${env.sunDirection[1]};`); - out.push(`export const ENV_SUN_DIR_Z = ${env.sunDirection[2]};`); - out.push(`export const ENV_SUN_R = ${env.sunColor[0]};`); - out.push(`export const ENV_SUN_G = ${env.sunColor[1]};`); - out.push(`export const ENV_SUN_B = ${env.sunColor[2]};`); - out.push(`export const ENV_SUN_I = ${env.sunIntensity};`); - out.push(`export const ENV_FOG_START = ${env.fogStart};`); - out.push(`export const ENV_FOG_END = ${env.fogEnd};`); - out.push(`export const ENV_FOG_R = ${env.fogColor[0]};`); - out.push(`export const ENV_FOG_G = ${env.fogColor[1]};`); - out.push(`export const ENV_FOG_B = ${env.fogColor[2]};`); - out.push(''); - - // --- player_spawn (single, required) -------------------------------------- - const spawns = buckets['player_spawn'] || []; - const primarySpawn = spawns.find(s => s.userData.primary === '1') || spawns[0]; - if (!primarySpawn) throw new Error('world has no player_spawn entity'); - out.push('// Player spawn'); - out.push(`export const SPAWN_X = ${primarySpawn.transform.position[0]};`); - out.push(`export const SPAWN_Y = ${primarySpawn.transform.position[1]};`); - out.push(`export const SPAWN_Z = ${primarySpawn.transform.position[2]};`); - out.push(`export const SPAWN_YAW = ${primarySpawn.userData.yaw || '0'};`); - out.push(''); - - // --- collider_box -------------------------------------------------------- - const cols = buckets['collider_box'] || []; - out.push('// Static box colliders — walls, floors, invisible terrain bounds'); - out.push(`export const COLLIDER_COUNT = ${cols.length};`); - out.push(`export const COLLIDER_X = ${fmtNumList(cols.map(e => e.transform.position[0]))};`); - out.push(`export const COLLIDER_Y = ${fmtNumList(cols.map(e => e.transform.position[1]))};`); - out.push(`export const COLLIDER_Z = ${fmtNumList(cols.map(e => e.transform.position[2]))};`); - out.push(`export const COLLIDER_HALF_X = ${fmtNumList(cols.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[0]))};`); - out.push(`export const COLLIDER_HALF_Y = ${fmtNumList(cols.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[1]))};`); - out.push(`export const COLLIDER_HALF_Z = ${fmtNumList(cols.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[2]))};`); - out.push(''); - - // --- static_mesh — drawable, optional box collider ------------------------ - // - // Each static_mesh entity's modelRef is resolved to an index into a flat - // UNIQUE_MODELS[] list. The runtime loadModel's each unique ref once at - // startup and drawModel's by index per frame. The special placeholder - // path "_gizmo_box.glb" signals "no real model, render as a coloured box" - // — the runtime checks this with a sentinel MODEL_IS_BOX[] array so it - // doesn't have to string-compare every frame. - // - // Paint category is still available on box-placeholder meshes: 0 = grey, - // 1 = building (tan stone), 2 = terrain (green), 3 = prop (brown), - // derived from the entity's first tag. - const MESH_CATEGORY_MAP: Record = { building: 1, terrain: 2, prop: 3 }; - const meshes = buckets['static_mesh'] || []; - - const uniqueModels: string[] = []; - for (const e of meshes) { - const m = e.modelRef || ''; - if (uniqueModels.indexOf(m) < 0) uniqueModels.push(m); - } - const isBoxModel = (path: string) => path === '' || path.endsWith('_gizmo_box.glb'); - - out.push('// Unique model paths referenced by static_mesh entities. The runtime'); - out.push('// calls loadModel() for each at startup, except for paths flagged as'); - out.push('// box placeholders (MODEL_IS_BOX[i] === 1), which render as drawCube.'); - out.push(`export const UNIQUE_MODEL_COUNT = ${uniqueModels.length};`); - out.push(`export const UNIQUE_MODELS = ${fmtStrList(uniqueModels)};`); - out.push(`export const MODEL_IS_BOX = ${fmtNumList(uniqueModels.map(m => isBoxModel(m) ? 1 : 0))};`); - out.push(''); - - out.push('// Static-mesh instances — one row per placed entity.'); - out.push('// MESH_CATEGORY: 0=generic, 1=building, 2=terrain, 3=prop.'); - out.push(`export const MESH_COUNT = ${meshes.length};`); - out.push(`export const MESH_MODEL_IDX = ${fmtNumList(meshes.map(e => uniqueModels.indexOf(e.modelRef || '')))};`); - out.push(`export const MESH_X = ${fmtNumList(meshes.map(e => e.transform.position[0]))};`); - out.push(`export const MESH_Y = ${fmtNumList(meshes.map(e => e.transform.position[1]))};`); - out.push(`export const MESH_Z = ${fmtNumList(meshes.map(e => e.transform.position[2]))};`); - out.push(`export const MESH_ROT_Y = ${fmtNumList(meshes.map(e => e.transform.rotation[1]))};`); - out.push(`export const MESH_SCALE = ${fmtNumList(meshes.map(e => e.transform.scale[0]))};`); - out.push(`export const MESH_COLLIDER = ${fmtNumList(meshes.map(e => e.userData.collider === 'box' ? 1 : 0))};`); - out.push(`export const MESH_COLLIDER_HX = ${fmtNumList(meshes.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[0]))};`); - out.push(`export const MESH_COLLIDER_HY = ${fmtNumList(meshes.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[1]))};`); - out.push(`export const MESH_COLLIDER_HZ = ${fmtNumList(meshes.map(e => parseVec3Str(e.userData.halfExtents, [0.5, 0.5, 0.5])[2]))};`); - out.push(`export const MESH_CATEGORY = ${fmtNumList(meshes.map(e => MESH_CATEGORY_MAP[e.tags[0] || ''] || 0))};`); - out.push(''); - - // --- prop_tree — placeholder trees until we have real GLBs --------------- - const trees = buckets['prop_tree'] || []; - out.push('// Trees — rendered as trunk-cube + foliage-sphere, small box collider'); - out.push(`export const TREE_COUNT = ${trees.length};`); - out.push(`export const TREE_X = ${fmtNumList(trees.map(e => e.transform.position[0]))};`); - out.push(`export const TREE_Y = ${fmtNumList(trees.map(e => e.transform.position[1]))};`); - out.push(`export const TREE_Z = ${fmtNumList(trees.map(e => e.transform.position[2]))};`); - out.push(`export const TREE_HEIGHT = ${fmtNumList(trees.map(e => parseFloat(e.userData.height || '3.0')))};`); - out.push(`export const TREE_RADIUS = ${fmtNumList(trees.map(e => parseFloat(e.userData.radius || '1.2')))};`); - out.push(''); - - // --- water — box volumes mapped straight through ------------------------ - out.push('// Water volumes — flat animated quads at surfaceHeight'); - out.push(`export const WATER_COUNT = ${world.water.length};`); - out.push(`export const WATER_CX = ${fmtNumList(world.water.map(w => w.center[0]))};`); - out.push(`export const WATER_CY = ${fmtNumList(world.water.map(w => w.surfaceHeight))};`); - out.push(`export const WATER_CZ = ${fmtNumList(world.water.map(w => w.center[2]))};`); - out.push(`export const WATER_SX = ${fmtNumList(world.water.map(w => w.size[0]))};`); - out.push(`export const WATER_SZ = ${fmtNumList(world.water.map(w => w.size[2]))};`); - out.push(`export const WATER_R = ${fmtNumList(world.water.map(w => w.color[0]))};`); - out.push(`export const WATER_G = ${fmtNumList(world.water.map(w => w.color[1]))};`); - out.push(`export const WATER_B = ${fmtNumList(world.water.map(w => w.color[2]))};`); - out.push(`export const WATER_A = ${fmtNumList(world.water.map(w => w.color[3]))};`); - out.push(`export const WATER_WAVE_AMP = ${fmtNumList(world.water.map(w => w.waveAmplitude))};`); - out.push(`export const WATER_WAVE_SPD = ${fmtNumList(world.water.map(w => w.waveSpeed))};`); - out.push(''); - - // --- point_light --------------------------------------------------------- - const lights = buckets['point_light'] || []; - out.push('// Scene point lights'); - out.push(`export const LIGHT_COUNT = ${lights.length};`); - out.push(`export const LIGHT_X = ${fmtNumList(lights.map(e => e.transform.position[0]))};`); - out.push(`export const LIGHT_Y = ${fmtNumList(lights.map(e => e.transform.position[1]))};`); - out.push(`export const LIGHT_Z = ${fmtNumList(lights.map(e => e.transform.position[2]))};`); - out.push(`export const LIGHT_RANGE = ${fmtNumList(lights.map(e => parseFloat(e.userData.range || '12')))};`); - out.push(`export const LIGHT_R = ${fmtNumList(lights.map(e => parseVec3Str(e.userData.color, [1, 1, 1])[0]))};`); - out.push(`export const LIGHT_G = ${fmtNumList(lights.map(e => parseVec3Str(e.userData.color, [1, 1, 1])[1]))};`); - out.push(`export const LIGHT_B = ${fmtNumList(lights.map(e => parseVec3Str(e.userData.color, [1, 1, 1])[2]))};`); - out.push(`export const LIGHT_INT = ${fmtNumList(lights.map(e => parseFloat(e.userData.intensity || '1')))};`); - out.push(''); - - // --- enemy_spawner ------------------------------------------------------- - const spawners = buckets['enemy_spawner'] || []; - out.push('// Enemy spawner anchors — fed into the wave director as corner points'); - out.push(`export const SPAWNER_COUNT = ${spawners.length};`); - out.push(`export const SPAWNER_X = ${fmtNumList(spawners.map(e => e.transform.position[0]))};`); - out.push(`export const SPAWNER_Z = ${fmtNumList(spawners.map(e => e.transform.position[2]))};`); - out.push(''); - - // --- weapon_pickup ------------------------------------------------------- - const pickups = buckets['weapon_pickup'] || []; - out.push('// Weapon pickups (ground placements)'); - out.push(`export const PICKUP_COUNT = ${pickups.length};`); - out.push(`export const PICKUP_X = ${fmtNumList(pickups.map(e => e.transform.position[0]))};`); - out.push(`export const PICKUP_Z = ${fmtNumList(pickups.map(e => e.transform.position[2]))};`); - out.push(`export const PICKUP_KIND = ${fmtNumList(pickups.map(e => { - const idx = PICKUP_KINDS.indexOf(e.userData.weapon || 'rifle'); - return idx < 0 ? 0 : idx; - }))};`); - out.push(`// Pickup kind id → string: ${PICKUP_KINDS.map((n, i) => i + '=' + n).join(' ')}`); - out.push(''); - - // --- wave_config --------------------------------------------------------- - // Exactly zero or one wave_config entity allowed. `userData.waves` is a JSON - // string of `[{count, enemy}]` — the editor edits it as an escaped blob; we - // expand into two parallel arrays here so the runtime never parses JSON. - const waveEnts = buckets['wave_config'] || []; - const plan: number[] = []; - const kinds: number[] = []; - const offs: number[] = []; - if (waveEnts.length > 0) { - const we = waveEnts[0]; - try { - const waves: { count: number; enemy: string }[] = JSON.parse(we.userData.waves || '[]'); - for (const w of waves) { - offs.push(kinds.length); - plan.push(w.count); - // `enemy` may be a comma-separated cycle ("dretch,mantis") so a - // single wave can mix kinds — with one kind per wave and only - // BODIES_PER_KIND pool slots each, the shipped game never showed - // more than 2 enemies at once (round-2 audit F11). When the list - // length equals `count` it reads as an explicit spawn sequence. - const names = w.enemy.split(',').map(s => s.trim()).filter(s => s.length > 0); - for (let i = 0; i < w.count; i++) { - const name = names.length > 0 ? names[i % names.length] : 'dretch'; - const kid = ENEMY_KINDS.indexOf(name); - kinds.push(kid < 0 ? 0 : kid); - } - } - } catch (err) { - console.warn('wave_config userData.waves is not valid JSON; skipping:', err); - } - } - out.push('// Wave plan — parallel arrays: WAVE_COUNT[i] enemies of the kind sequence'); - out.push('// starting at WAVE_OFFS[i] in WAVE_KIND[].'); - out.push(`export const WAVE_PLAN_COUNT = ${plan.length};`); - out.push(`export const WAVE_SIZE = ${fmtNumList(plan)};`); - out.push(`export const WAVE_OFFS = ${fmtNumList(offs)};`); - out.push(`export const WAVE_KIND = ${fmtNumList(kinds)};`); - out.push(`// Enemy kind id → string: ${ENEMY_KINDS.map((n, i) => i + '=' + n).join(' ')}`); - out.push(''); - - fs.mkdirSync(path.dirname(outputPath), { recursive: true }); - fs.writeFileSync(outputPath, out.join('\n')); - console.log(`Wrote ${outputPath}`); - console.log(` ${cols.length} colliders, ${meshes.length} static meshes, ${trees.length} trees,`); - console.log(` ${lights.length} lights, ${spawners.length} spawners, ${pickups.length} pickups,`); - console.log(` ${world.water.length} water volumes, ${plan.length} waves (${kinds.length} enemies total).`); -} - -main(); diff --git a/tools/deploy-ios.sh b/tools/deploy-ios.sh index 2346f9c..bf4edb9 100755 --- a/tools/deploy-ios.sh +++ b/tools/deploy-ios.sh @@ -14,7 +14,6 @@ APP="build/BloomShooter.app" IDENTITY="Apple Development: Ralph Kuepper (372EYFG3C5)" echo "==> world" -bun tools/build-world.ts assets/worlds/arena_02.world.json src/generated/world.ts >/dev/null echo "==> compile (ios, game-loop)" perry compile src/main.ts -o build/BloomShooter --target ios --features ios-game-loop 2>&1 \ diff --git a/tools/gen-building.ts b/tools/gen-building.ts index 8f082b3..976497e 100644 --- a/tools/gen-building.ts +++ b/tools/gen-building.ts @@ -214,5 +214,5 @@ if (printOnly) { console.log(`Wrote ${WORLD_PATH}`); console.log(` removed ${before - (reparsed.entities.length - out.length)} previous h_* entities`); console.log(` added ${out.length} new (count=${reparsed.entities.length})`); - console.log(` re-run \`npm run world\` to regenerate src/generated/world.ts`); + console.log(` the game reads the world file directly — just relaunch`); } diff --git a/tools/terrain-shape.ts b/tools/terrain-shape.ts new file mode 100644 index 0000000..a9ca241 --- /dev/null +++ b/tools/terrain-shape.ts @@ -0,0 +1,101 @@ +// The procedural shape of arena_02's terrain, in one place. +// +// This is *authoring* code: it produced the heightmap that now lives in the +// world file (`world.terrain`), which is the source of truth the game and the +// editor both read. It stays around so the terrain can be re-derived from +// scratch (`bun tools/bake-terrain-to-world.ts`), and because the visual mesh's +// skirt — the ring of hills outside the playable arena that hides the horizon — +// is still generated rather than authored. +// +// Split into two pieces on purpose: +// arenaHeightAt — inside the arena. Baked into world.terrain; the editor may +// sculpt over it, and once it has, this function no longer +// describes what the game loads. +// skirtHeightAt — outside the arena. Visual only (nothing walks there, and +// the physics heightfield doesn't cover it), so it is +// derived every time rather than stored. + +export const ARENA_HALF = 40; // Gameplay arena half-extent. Must match the world bounds. +export const EXTENT_HALF = 140; // Visual mesh half-extent, including the skirt. + +export interface RiverCarve { + z: number; // Centre line of the channel (world Z). + halfWidth: number; // Half the water's width. + bed: number; // Height of the channel floor. + bank: number; // Distance over which the bed ramps back to the terrain. +} + +// Two gaussian hills, a western ridge, low-frequency waviness, a flat plaza +// around the origin, and a carved river channel. Everything but the carve is a +// pure function of position; the carve is driven by the world's water volume, +// because a riverbed that doesn't line up with its river is just a ditch. +export function arenaHeightAt(x: number, z: number, river: RiverCarve): number { + // Flatten the plaza so the gameplay colliders sit on level ground. + const r = Math.sqrt(x * x + z * z); + const plazaBlend = r < 16 ? 0 : Math.min(1, (r - 16) / 8); + + const hill = (cx: number, cz: number, sigma: number, h: number) => { + const dx = x - cx, dz = z - cz; + const d = dx * dx + dz * dz; + return h * Math.exp(-d / (2 * sigma * sigma)); + }; + + let h = 0; + h += hill(26, -24, 10, 3.2); + h += hill(-24, 26, 9, 2.6); + h += hill(30, 28, 7, 1.8); + h += 1.1 * Math.exp(-Math.pow(x + 28, 2) / 140) * + 0.6 * (1 + Math.sin(z * 0.12)); + h += 0.25 * Math.sin(x * 0.08) * Math.cos(z * 0.10); + h += 0.18 * Math.sin(x * 0.17 + z * 0.11); + + let y = h * plazaBlend; + + // River channel — carve below the water plane along the river's path, or the + // riverbed pokes through the surface. Forced to `bed` at the centre line and + // smoothly ramped back over `bank` metres, so it reads as a carved channel + // with grassy banks rather than a trench. Drives the visual mesh and the + // physics heightfield alike: one shape, one source. + const dzr = Math.abs(z - river.z); + if (dzr < river.halfWidth + river.bank) { + let carve = 1.0; + if (dzr > river.halfWidth) { + const tt = 1 - (dzr - river.halfWidth) / river.bank; + carve = tt * tt * (3 - 2 * tt); // smoothstep + } + // Fade the channel out past the arena so it closes into the skirt hills + // instead of dead-ending against a wall. + let endFade = 1.0; + if (x >= 40) endFade = Math.max(0, 1 - (x - 40) / 14); + else if (x <= -38) endFade = Math.max(0, 1 - (-38 - x) / 14); + endFade = endFade * endFade * (3 - 2 * endFade); + carve *= endFade; + if (carve > 0) y = y * (1 - carve) + river.bed * carve; + } + + return y; +} + +// Height *added* outside the arena: rolling hills rising with distance, so that +// from any gameplay eye height the horizon (and the dark below-horizon sky) +// stays hidden behind terrain instead of the world ending on a hard edge. +// Zero inside the arena, easing in smoothly at the boundary so the mesh has no +// crease where skirt meets arena. +export function skirtHeightAt(x: number, z: number): number { + const dEdge = Math.max(Math.abs(x), Math.abs(z)); + if (dEdge <= ARENA_HALF) return 0; + + const t = Math.min(1, (dEdge - ARENA_HALF) / (EXTENT_HALF - ARENA_HALF)); + const ss = t * t * (3 - 2 * t); + + // Angular lobes break the square-ring symmetry; the rolls add local relief. + const ang = Math.atan2(z, x); + const lobes = 1 + 0.35 * Math.sin(ang * 3 + 1.7) + 0.2 * Math.sin(ang * 7 + 0.6); + const roll = Math.sin(x * 0.045 + 1.3) * Math.cos(z * 0.05 + 0.4) * 3.2 + + Math.sin(x * 0.11 + z * 0.07) * 1.6; + + // Floor the profile: where lobes and roll both dip, sightlines from eye height + // cleared the ring and the sky peeked through between the hills. 6.5 m at the + // far edge is ≈ +2.7° above the ground plane from anywhere in the arena. + return Math.max(ss * (12.0 * lobes + roll), ss * 6.5); +}