diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 24ddbdc..9fc044e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: Rust +name: CI on: push: @@ -15,13 +15,14 @@ concurrency: env: CARGO_TERM_COLOR: always - RUST_VERSION: 1.90.0 + RUST_VERSION: 1.92.0 RUST_BACKTRACE: 1 jobs: build-test: name: Build and Test 🔬 strategy: + fail-fast: false matrix: arch: [x86_64, aarch64] runner: [ubuntu-latest] @@ -33,8 +34,6 @@ jobs: with: toolchain: ${{ env.RUST_VERSION }} - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - name: Build run: cargo build --verbose --all - name: Run tests @@ -66,6 +65,10 @@ jobs: e2e: name: End to end tests + strategy: + fail-fast: false + matrix: + backend: [cpu, vulkan-cpu, vulkan] runs-on: ubuntu-latest steps: @@ -83,10 +86,11 @@ jobs: mesa-vulkan-drivers \ libvulkan1 \ vulkan-tools \ - vulkan-validationlayers + vulkan-validationlayers \ + gdal-bin vulkaninfo - name: Run end to end tests - run: ./benchmarks/run.sh + run: ./benchmarks/run.sh ${{ matrix.backend }} lints: name: "Lints 💅" diff --git a/Cargo.lock b/Cargo.lock index 3c2ad8f..2805c18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -19,9 +19,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -73,22 +73,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -106,6 +106,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-slice" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" +dependencies = [ + "generic-array 0.12.4", + "generic-array 0.13.3", + "generic-array 0.14.9", + "stable_deref_trait", +] + [[package]] name = "ash" version = "0.38.0+1.3.281" @@ -115,6 +127,15 @@ dependencies = [ "libloading", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -123,9 +144,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -133,7 +154,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -159,9 +180,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bumpalo" @@ -171,18 +192,18 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -209,9 +230,9 @@ checksum = "6236364b88b9b6d0bc181ba374cf1ab55ba3ef97a1cb6f8cddad48a273767fb5" [[package]] name = "cc" -version = "1.2.36" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "shlex", @@ -219,9 +240,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -231,9 +252,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "clap" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -241,9 +262,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -253,9 +274,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", @@ -265,9 +286,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "codespan-reporting" @@ -338,6 +359,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -395,9 +422,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] @@ -414,7 +441,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" dependencies = [ - "itertools", + "itertools 0.11.0", "num-traits", ] @@ -444,12 +471,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -479,9 +506,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixedbitset" @@ -508,9 +535,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -534,6 +561,34 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "geo" version = "0.30.0" @@ -548,20 +603,24 @@ dependencies = [ "log", "num-traits", "robust", - "rstar", + "rstar 0.12.2", "spade", ] [[package]] name = "geo-types" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a4dcd69d35b2c87a7c83bce9af69fd65c9d68d3833a0ded568983928f3fc99" +checksum = "24f8647af4005fa11da47cd56252c6ef030be8fa97bdbf355e7dfb6348f0a82c" dependencies = [ "approx", "num-traits", "rayon", - "rstar", + "rstar 0.10.0", + "rstar 0.11.0", + "rstar 0.12.2", + "rstar 0.8.4", + "rstar 0.9.3", "serde", ] @@ -589,21 +648,21 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi", + "wasip2", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glam" @@ -644,7 +703,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "gpu-alloc-types", ] @@ -654,7 +713,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -663,7 +722,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -674,7 +733,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -685,13 +744,32 @@ checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", "num-traits", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", ] [[package]] @@ -722,20 +800,45 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "heapless" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422" +dependencies = [ + "as-slice", + "generic-array 0.14.9", + "hash32 0.1.1", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32 0.2.1", + "rustc_version", + "spin", + "stable_deref_trait", +] + [[package]] name = "heapless" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ - "hash32", + "hash32 0.3.1", "stable_deref_trait", ] @@ -797,9 +900,9 @@ checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" [[package]] name = "image" -version = "0.25.8" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", @@ -816,12 +919,12 @@ checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -835,9 +938,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -848,6 +951,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -856,9 +968,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -882,59 +994,58 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link", ] [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litrs" -version = "0.4.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lsm-tree" -version = "2.10.3" +version = "2.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab73c02eadb3dc12c0024e5b61d6284e6d59064e67e74fbad77856caa56f62c7" +checksum = "799399117a2bfb37660e08be33f470958babb98386b04185288d829df362ea15" dependencies = [ "byteorder", "crossbeam-skiplist", @@ -956,9 +1067,9 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" [[package]] name = "matchers" @@ -971,9 +1082,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "miniz_oxide" @@ -987,9 +1098,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.5" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" dependencies = [ "num-traits", "pxfm", @@ -997,18 +1108,18 @@ dependencies = [ [[package]] name = "naga" -version = "27.0.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b2e757b11b47345d44e7760e45458339bc490463d9548cd8651c53ae523153" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "hexf-parse", "indexmap", "libm", @@ -1024,11 +1135,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1043,9 +1154,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -1058,30 +1169,30 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "ordered-float" -version = "4.6.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" dependencies = [ "num-traits", ] [[package]] name = "owo-colors" -version = "4.2.2" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -1089,15 +1200,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1118,11 +1229,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "pdqselect" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" + [[package]] name = "petgraph" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", @@ -1141,7 +1258,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crc32fast", "fdeflate", "flate2", @@ -1171,9 +1288,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -1186,9 +1303,9 @@ checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "proj4rs" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f88879081958c109556f14db41e2ee45193090030d93bbbbf28819221e4f13" +checksum = "2a3c4a66ce46a8b4514d0dce1e7a39b3d2b3a6125f7968093020f96a8a5ad09b" dependencies = [ "console_log", "js-sys", @@ -1210,28 +1327,28 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55f4fedc84ed39cb7a489322318976425e42a147e2be79d8f878e2884f94e84" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" dependencies = [ "num-traits", ] [[package]] name = "quick_cache" -version = "0.6.16" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad6644cb07b7f3488b9f3d2fde3b4c0a7fa367cafefb39dff93a659f76eb786" +checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -1270,18 +1387,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -1291,9 +1408,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -1302,9 +1419,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "renderdoc-sys" @@ -1318,14 +1435,64 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" +[[package]] +name = "rstar" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a45c0e8804d37e4d97e55c6f258bc9ad9c5ee7b07437009dd152d764949a27c" +dependencies = [ + "heapless 0.6.1", + "num-traits", + "pdqselect", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b40f1bfe5acdab44bc63e6699c28b74f75ec43afb59f3eda01e145aff86a25fa" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f39465655a1e3d8ae79c6d9e007f4953bfc5d55297602df9dc38f9ae9f1359a" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + [[package]] name = "rstar" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" dependencies = [ - "heapless", + "heapless 0.8.0", "num-traits", + "serde", "smallvec", ] @@ -1347,17 +1514,26 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -1380,24 +1556,40 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "self_cell" -version = "1.2.0" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" + +[[package]] +name = "semver" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1406,14 +1598,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -1433,9 +1626,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "smallvec" @@ -1455,13 +1648,22 @@ dependencies = [ "smallvec", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -1495,9 +1697,9 @@ source = "git+https://github.com/Rust-GPU/rust-gpu?rev=b3eda4df9814b6176d3c0844e [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -1519,9 +1721,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.106" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -1530,15 +1732,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", "getrandom", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -1552,18 +1754,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -1591,9 +1793,11 @@ dependencies = [ "geojson", "googletest", "image", + "itertools 0.14.0", "kernel", "pollster", "proj4rs", + "rayon", "serde", "serde_json", "tempfile", @@ -1604,9 +1808,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -1615,9 +1819,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -1626,9 +1830,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -1657,9 +1861,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -1673,17 +1877,23 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "utf8parse" @@ -1721,19 +1931,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" [[package]] -name = "wasi" -version = "0.14.4+wasi-0.2.4" +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -1742,25 +1958,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1768,31 +1970,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -1805,11 +2007,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "log", "naga", "portable-atomic", @@ -1824,18 +2026,18 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "27.0.1" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d654c0b6c6335edfca18c11bdaed964def641b8e9997d3a495a2ff4077c922" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "indexmap", "log", "naga", @@ -1863,20 +2065,20 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "27.0.2" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2618a2d6b8a5964ecc1ac32a5db56cb3b1e518725fcd773fd9a782e023453f2b" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "cfg-if", "cfg_aliases", "gpu-alloc", "gpu-descriptor", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "libc", "libloading", "log", @@ -1900,7 +2102,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "log", ] @@ -1911,7 +2113,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.0", + "windows-sys", ] [[package]] @@ -1921,7 +2123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ "windows-core", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1934,7 +2136,7 @@ dependencies = [ "windows-interface", "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1961,15 +2163,9 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" @@ -1977,7 +2173,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1987,34 +2183,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.3", + "windows-targets", ] [[package]] name = "windows-sys" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.0", + "windows-link", ] [[package]] @@ -2023,31 +2201,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" -dependencies = [ - "windows-link 0.1.3", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -2056,104 +2217,76 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "xxhash-rust" version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index c85e81a..b8b169d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,3 +76,11 @@ non_ascii_literal = "allow" std_instead_of_alloc = "allow" std_instead_of_core = "allow" float_arithmetic = "allow" + +# We're not worried about cryptographic code, integer +integer_division_remainder_used = "allow" + +# We're not concerned about modulo not computing negative numbers +modulo_arithmetic = "allow" + +multiple_unsafe_ops_per_block = "allow" \ No newline at end of file diff --git a/benchmarks/cardiff-viewshed.json b/benchmarks/cardiff-viewshed.json new file mode 100644 index 0000000..e4e80c9 --- /dev/null +++ b/benchmarks/cardiff-viewshed.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[-3.30941915032233,51.53780568725623],[-3.3080861950590075,51.537463838363806],[-3.3067278272108385,51.539473525977904],[-3.308051058272776,51.53982984855978],[-3.30941915032233,51.53780568725623]]],[[[-3.3067532597671656,51.5371219743089],[-3.3054203448869783,51.536780095091295],[-3.3040817012645824,51.53876043015245],[-3.3027585322282165,51.53840406658359],[-3.301374398918109,51.5403555525948],[-3.3026874384036735,51.54072628157445],[-3.3040816466043905,51.538760511153754],[-3.3040814266495504,51.53876083653242],[-3.3054046163768,51.53911718872721],[-3.3067532597671656,51.5371219743089]]],[[[-3.3027545746036,51.53609629117226],[-3.301421719201108,51.53575436647166],[-3.3001122499934668,51.53769129298221],[-3.296142986492751,51.53662202133366],[-3.294809777950515,51.53850132698179],[-3.293496868713629,51.53813051354931],[-3.292121712748439,51.53998073199242],[-3.290819361871763,51.539595656504524],[-3.289403348187319,51.5414166182719],[-3.287936674563477,51.54322162260439],[-3.2853765744131938,51.542395148543044],[-3.2838825360674653,51.54415660436839],[-3.283882539590554,51.544156605460735],[-3.282339851677814,51.54590090254047],[-3.280747972216977,51.547628648631274],[-3.2832353898725475,51.54853764159162],[-3.2848520415687505,51.54678290474435],[-3.287364563965132,51.54766460720725],[-3.288955930635636,51.545865045530405],[-3.2902243346867017,51.546292120102045],[-3.2917766921578884,51.544461605653204],[-3.29305685232551,51.54487478505397],[-3.2945689619709984,51.543013606564706],[-3.2958604757036007,51.5434127616585],[-3.297331055619441,51.54152128453389],[-3.298633524792323,51.54190629336489],[-3.300061375045217,51.53998480726149],[-3.3000613807697987,51.53998480889862],[-3.3000615246978775,51.53998460597773],[-3.300061648970519,51.53998443874478],[-3.3000616445665876,51.53998443737995],[-3.301435099949513,51.538048084585505],[-3.301435109195865,51.53804808704012],[-3.3014353309148015,51.53804775892073],[-3.301435381657783,51.53804768752695],[-3.3014353798962595,51.53804768698104],[-3.3027545746036,51.53609629117226]]],[[[-3.301531391252313,51.51846922562661],[-3.2987401157240672,51.51802335260609],[-3.297927299941622,51.5199341653201],[-3.3007057835951823,51.52041038807222],[-3.301531391252313,51.51846922562661]]],[[[-3.3012087224089393,51.52259467503561],[-3.299826275627792,51.52234149135655],[-3.2988924294167306,51.524263480149536],[-3.3002676332855185,51.52453169053441],[-3.3012087224089393,51.52259467503561]]],[[[-3.300429465690905,51.47112200993378],[-3.299876677384325,51.46919135361843],[-3.298462296804608,51.46935727724887],[-3.2990106053799004,51.471272494806364],[-3.300429465690905,51.47112200993378]]],[[[-3.297860841192189,51.467449081881476],[-3.2972059502024367,51.46554697406899],[-3.295801802604193,51.465743593966806],[-3.2964512325001927,51.467630008244946],[-3.2922227195104194,51.468173779262465],[-3.292804785299015,51.47002118087175],[-3.294219203863351,51.46985532906567],[-3.2947539688799137,51.47172384694748],[-3.296172857193062,51.47157341331309],[-3.295633616122381,51.46968945991539],[-3.297048021634878,51.46952357314731],[-3.296451270244276,51.46763011763405],[-3.2964513572776566,51.46763036985957],[-3.297860841192189,51.467449081881476]]],[[[-3.294397783154588,51.46594058277716],[-3.293701427004324,51.46407644155374],[-3.2909045914693213,51.464500134586196],[-3.291589425815944,51.46633373216876],[-3.294397783154588,51.46594058277716]]],[[[-3.2913903525279617,51.47018701616773],[-3.2908133024628934,51.468355353958344],[-3.2908133094856336,51.46835535285111],[-3.2908132233683562,51.468355102814556],[-3.2908131918187795,51.46835500246662],[-3.290813188746585,51.46835500301961],[-3.2901850928517304,51.466529905627844],[-3.28737666141,51.466922960950534],[-3.2867093778349465,51.46513591486066],[-3.2881078442371896,51.46492412961458],[-3.287384307827808,51.46312868548479],[-3.2845997285824597,51.46358265342938],[-3.2838395520568273,51.46182597848132],[-3.281068123361402,51.462310149944656],[-3.281815095839357,51.464036554937685],[-3.2804227609439742,51.46426348046688],[-3.281115393741344,51.46598288760219],[-3.2825139079749284,51.4657711696531],[-3.2831640642458155,51.467512776910425],[-3.2845683147463984,51.46731631224839],[-3.2851750825828887,51.46908006495374],[-3.2894037627043318,51.46853655720011],[-3.2899759095007517,51.47035283412477],[-3.2913903525279617,51.47018701616773]]],[[[-3.2906417248926534,51.52265350386927],[-3.289266632409053,51.52238518359176],[-3.2883329348950836,51.5241917206214],[-3.284230761283584,51.52334184161874],[-3.2851414514993915,51.521580126533976],[-3.2837664232317345,51.521311742016195],[-3.282863217818765,51.52305887611482],[-3.282863219579477,51.52305887666101],[-3.2819115821661913,51.52479521054463],[-3.2791931033238804,51.52419880520862],[-3.2782097777800017,51.52589531071599],[-3.276859074196047,51.52558232141124],[-3.2758372643858324,51.52725321036156],[-3.2744954971652676,51.52692553654849],[-3.2734363639174626,51.52857044469723],[-3.270771561313455,51.52788591573269],[-3.2696859693221283,51.52949010491763],[-3.2683633368450637,51.52913335243129],[-3.2672428645061706,51.530711435984315],[-3.269867850300298,51.531453642850764],[-3.2686824380520023,51.533047463787646],[-3.26998441259134,51.53343278812903],[-3.268743721640165,51.53502735718362],[-3.267458175855293,51.53660857592244],[-3.268737889279079,51.53702201923803],[-3.270034618188922,51.53542699034204],[-3.2700346239127467,51.535426992254926],[-3.2700347881659746,51.535426781390804],[-3.2700348683346,51.535426682544276],[-3.2700348656921614,51.535426681450396],[-3.271286413516726,51.53381809908892],[-3.2712864187996993,51.53381810072802],[-3.271286558487273,51.53381791293386],[-3.271286671046952,51.533817768238286],[-3.2712866670842793,51.53381776687182],[-3.272492926305972,51.532195792258065],[-3.273805495882116,51.532566844901964],[-3.2725884421503317,51.53420339748793],[-3.2738904874861694,51.53458868004804],[-3.275118322354458,51.53293756599679],[-3.273805729253845,51.53256653080873],[-3.2738056281107784,51.53256666671467],[-3.2749764726972637,51.530917304320404],[-3.2749764801807446,51.53091730650507],[-3.2749766648579732,51.530917033616724],[-3.2749767125696945,51.530916966352656],[-3.27497671080877,51.530916965806355],[-3.276101033440626,51.52925525949321],[-3.2800985143979005,51.530281860862694],[-3.278944747153586,51.531987304504966],[-3.281590354348,51.53270055973792],[-3.280368670486106,51.534421888589364],[-3.2829940875127943,51.53516380238974],[-3.284236051273269,51.533413757138355],[-3.2842360596371996,51.533413759321235],[-3.2842362608952707,51.53341346198334],[-3.284236305969749,51.533413398285006],[-3.284236304208622,51.53341339773884],[-3.285428769149896,51.53165045089856],[-3.286761382671355,51.53199256024578],[-3.2855589393280504,51.533770335890594],[-3.2868818401288373,51.53412689724795],[-3.2880942650780542,51.53233428598314],[-3.28676162940033,51.53199219481487],[-3.2867613909800344,51.531992547068036],[-3.2879140418532877,51.53020158683473],[-3.285230178217522,51.529546499592115],[-3.2863141942815433,51.527773291013844],[-3.2863141995633827,51.52777329237797],[-3.2863143101357752,51.52777310131465],[-3.2863144176849115,51.52777292561604],[-3.2863144128428217,51.5277729242513],[-3.287348566844673,51.52598817930163],[-3.2887079090007147,51.52628629951607],[-3.2897003720644458,51.52447498408043],[-3.2897003597424823,51.52447498135498],[-3.2906417248926534,51.52265350386927]],[[-3.282763833423946,51.530965827371],[-3.2814312780949053,51.53062367530658],[-3.282546179936144,51.52889168252083],[-3.2838880614237755,51.529219267168735],[-3.282763833423946,51.530965827371]],[[-3.2761012552447606,51.52925491523785],[-3.2747688086147706,51.528912690137794],[-3.274768582808892,51.52891302369831],[-3.275837239456579,51.527253250989716],[-3.275837068891129,51.52725352989573],[-3.277178846591703,51.52758118973062],[-3.2761012552447606,51.52925491523785]],[[-3.273653994316927,51.530560273052465],[-3.2723312984976376,51.53020356509095],[-3.273436146034442,51.52857078290808],[-3.2747685797470205,51.528913028639586],[-3.273653994316927,51.530560273052465]]],[[[-3.2873849446386623,51.520062103649884],[-3.2860026512133262,51.519808756977255],[-3.285141275595982,51.52158048994427],[-3.2865163182911865,51.521848861629785],[-3.2873849446386623,51.520062103649884]]],[[[-3.2823914115680166,51.52104334109557],[-3.2810164160711,51.52077492432165],[-3.2801285573884784,51.5224921723278],[-3.2814958791173097,51.522775532058866],[-3.2823914115680166,51.52104334109557]]],[[[-3.268039683192168,51.51311436482603],[-3.2652490560598153,51.51266769380919],[-3.2658645786573453,51.51111438568215],[-3.2644632983855955,51.510906261427095],[-3.2638537658218207,51.512444333802335],[-3.261063233325376,51.51199756506631],[-3.260423443347005,51.51349871485506],[-3.261812280510714,51.513737277826415],[-3.261123879626418,51.51524596029626],[-3.260393272749355,51.5167470439246],[-3.2658923758927343,51.5178215944073],[-3.266652007854612,51.51626049107757],[-3.266652009174374,51.516260491350245],[-3.266652034061804,51.51626043673494],[-3.266652153748408,51.51626019081952],[-3.266652147149595,51.516260189456126],[-3.2673677975562048,51.514691368999706],[-3.267367804593564,51.51469137008822],[-3.267367911505936,51.514691118701805],[-3.2673679442519066,51.51469104734464],[-3.267367942491704,51.5146910467982],[-3.268039683192168,51.51311436482603]]],[[[-3.265047331087454,51.50454806461478],[-3.263626403999646,51.50440143074483],[-3.2631989785720523,51.50593135810492],[-3.2617823346626027,51.50576924842497],[-3.261316766885152,51.50727918616017],[-3.2641406601677376,51.507634215233324],[-3.2646155394578877,51.50609376814499],[-3.2646155456139425,51.50609376896045],[-3.264615605605854,51.50609355466276],[-3.2646156373714326,51.50609345121478],[-3.264615634732522,51.50609345066938],[-3.265047331087454,51.50454806461478]]],[[[-3.2642427150162314,51.520917443892465],[-3.261524693533529,51.52032062797213],[-3.2606518416311285,51.52182553464567],[-3.263352827634462,51.52245187919639],[-3.2642427150162314,51.520917443892465]]],[[[-3.259773974730324,51.49046503033577],[-3.259769514361089,51.488974463086464],[-3.255450552128475,51.489002955685756],[-3.2554547340236413,51.49044617526324],[-3.249695758463139,51.490421169375885],[-3.2496609834575465,51.491801736921175],[-3.251100372499068,51.49182370374083],[-3.2510262280903235,51.49321907702875],[-3.2553420533944557,51.493331908712236],[-3.255418561096607,51.49188949737716],[-3.2568579644513176,51.49191139352996],[-3.256894479167028,51.490452662746584],[-3.259773974730324,51.49046503033577]]],[[[-3.2591229176143126,51.48153662350705],[-3.258868979749208,51.48005450883897],[-3.254579265257543,51.48036465218259],[-3.2548250005702957,51.48179967735671],[-3.2519597345964986,51.4819751615609],[-3.252160820762031,51.483381689633404],[-3.253595733065252,51.48330958175982],[-3.2537592937143955,51.4847334605837],[-3.2580695469444176,51.48456396617894],[-3.2579004559898275,51.48309315251181],[-3.257900460821481,51.483093152231966],[-3.2579004361509165,51.483092980001715],[-3.2579004235255633,51.483092870023086],[-3.25790042045117,51.48309287030092],[-3.257690298149075,51.48162442399021],[-3.2591229176143126,51.48153662350705]]],[[[-3.2370575251006684,51.446068427634955],[-3.2358170306906313,51.44483215442271],[-3.234605120934215,51.445316253789066],[-3.233344581618449,51.44410729685881],[-3.2333445842494526,51.444107295759125],[-3.233344478228016,51.44410719765995],[-3.233344337881274,51.444107063111346],[-3.233344334373717,51.44410706476045],[-3.232050260027249,51.44291199739693],[-3.2320502934570974,51.442912027264406],[-3.2332343960625627,51.44240182200474],[-3.2318922694040824,51.441207767421986],[-3.2307226134117264,51.44173079878541],[-3.232050020302428,51.442911784215426],[-3.230865900090519,51.44342197746064],[-3.232146266024495,51.44460441358133],[-3.2333932537399863,51.445800403612715],[-3.2346069668939,51.44701005082634],[-3.2370575251006684,51.446068427634955]]],[[[-3.2365515225484964,51.54213850645648],[-3.235391517956827,51.541604992737504],[-3.2339256280280284,51.54282186082797],[-3.23507053382027,51.543367934201655],[-3.2365515225484964,51.54213850645648]]],[[[-3.2321591841725437,51.47338250996534],[-3.231682270771058,51.472195465008454],[-3.2302894369610162,51.472421795160926],[-3.2307602027258646,51.473593627303956],[-3.2321591841725437,51.47338250996534]]],[[[-3.231672449727352,51.43949327825778],[-3.2302495197065118,51.4383167436149],[-3.230249753190856,51.43831692965032],[-3.2313894120078803,51.43776871352048],[-3.2299183517277945,51.436595467587296],[-3.22879418888284,51.43715602012401],[-3.230249449352495,51.43831668717366],[-3.2291097676455762,51.43886489408659],[-3.230517616286519,51.440028982812294],[-3.231672449727352,51.43949327825778]]],[[[-3.228896683874253,51.4726483311319],[-3.228399838272377,51.47149694997292],[-3.2270135450739357,51.47173838810745],[-3.227503821606495,51.472874625440156],[-3.228896683874253,51.4726483311319]]],[[[-3.2247676444344577,51.53845264061804],[-3.222478346507599,51.537360286466566],[-3.2211330568259835,51.53843708352752],[-3.2233914500159546,51.5395542183442],[-3.2247676444344577,51.53845264061804]]],[[[-3.222854675668012,51.4724628275924],[-3.2223537146617454,51.47137731614356],[-3.2209743482270055,51.47163375649805],[-3.220450768411644,51.470569284721535],[-3.2218227352530406,51.470297857282326],[-3.221261585414106,51.46922414022785],[-3.2212615871696477,51.4692241396778],[-3.2212615527797066,51.46922407744105],[-3.2212614703150595,51.46922392033761],[-3.2212614659250036,51.469223921164186],[-3.220670425395957,51.46815648095729],[-3.2193145210500083,51.46845763656992],[-3.2187025383502146,51.46741172823063],[-3.2200497962170513,51.46709584876431],[-3.219399395520678,51.46604171897702],[-3.218061194672796,51.466372232298],[-3.2173910738130673,51.46534009497484],[-3.2173912063968686,51.465340289345235],[-3.220048654041101,51.46465019635361],[-3.2193300905907605,51.46359666664936],[-3.219330091468444,51.463596666374336],[-3.2193300685662116,51.4635966343003],[-3.2193299434669305,51.463596450623506],[-3.219329938200293,51.46359645199932],[-3.2185822275693172,51.46255111337289],[-3.221199325699823,51.461803482317194],[-3.220401074545397,51.46073784958381],[-3.2204010767391513,51.46073784875909],[-3.2204010106936485,51.46073776405587],[-3.220400910293205,51.46073763000756],[-3.2204009063436496,51.460737631108024],[-3.2195732015570657,51.459681059820134],[-3.2208599895232664,51.45927894145063],[-3.21999131532131,51.45821738931913],[-3.219991315759801,51.458217389044464],[-3.2199912928708647,51.45821736218219],[-3.2199911365929577,51.45821717085138],[-3.21999113132812,51.45821717277582],[-3.2190931463025225,51.457165447522016],[-3.2190931484961234,51.457165446697324],[-3.219093080720388,51.45716537077227],[-3.219092974203711,51.457165245779635],[-3.21909297069407,51.45716524715399],[-3.2181655922240306,51.456123251075624],[-3.2169143217374314,51.456566862097375],[-3.217829478612018,51.45759515720181],[-3.216565962791385,51.45802505360324],[-3.2156632135807706,51.45701066887471],[-3.215663214019273,51.45701066860006],[-3.215663199058857,51.45701065270259],[-3.2156630274320355,51.45701045945804],[-3.2156630221671456,51.4570104613823],[-3.214732127267953,51.456006081244965],[-3.2147321316551998,51.456006079595745],[-3.214731972825872,51.45600591486679],[-3.2147319345450454,51.45600587347772],[-3.2147319336680353,51.456005874027],[-3.213773150834466,51.455011774383145],[-3.2137731539050565,51.45501177300929],[-3.2137730373267583,51.455011656522785],[-3.213772966495159,51.45501158334],[-3.213772964740608,51.45501158416425],[-3.212786395905433,51.45402787836511],[-3.211573999595481,51.45451173859854],[-3.2105740652816595,51.453552263697986],[-3.2105740674752443,51.45355226287346],[-3.210573986990227,51.453552188598735],[-3.2105738717524313,51.453552078142614],[-3.2105738686813106,51.453552079242094],[-3.2095473296504293,51.45260364650714],[-3.2095473300889243,51.45260364623253],[-3.2095473050226317,51.45260362403287],[-3.2095471181112907,51.45260345136291],[-3.2095471132856828,51.45260345328656],[-3.208494293681064,51.45166636049798],[-3.2084942954355786,51.451666359673816],[-3.2084942061723813,51.45166628293536],[-3.208494076887212,51.451666167824335],[-3.2084940733776732,51.45166616919838],[-3.2074152651285104,51.450740674380874],[-3.2085706425799843,51.450205197035345],[-3.2074506081755727,51.44927872601996],[-3.205170122260398,51.45037468550091],[-3.2040558523984024,51.449485597320425],[-3.2040558541524344,51.449485596222026],[-3.2040557666734113,51.4494855288051],[-3.204055641383712,51.44948542904709],[-3.2040556387521835,51.4494854304204],[-3.202916510424299,51.44860843380451],[-3.2018075418484044,51.44918090731573],[-3.200660320628346,51.44832846613263],[-3.197381743049494,51.450081809175295],[-3.198480700453048,51.45089843202408],[-3.199589750933273,51.45032599508592],[-3.200681287825405,51.451166398898444],[-3.2017492440268387,51.452018583371526],[-3.2027933684580145,51.452882352095145],[-3.2038132736570346,51.453757390525226],[-3.204808627003041,51.4546434145252],[-3.2057788895086836,51.455539937942525],[-3.2045800821565873,51.45603687084229],[-3.205511829669965,51.456931030639076],[-3.2067243519709954,51.456447237954464],[-3.2076440674658038,51.45736440626712],[-3.208538278301319,51.45829168441286],[-3.2110158895841843,51.45737748344871],[-3.2119089928285165,51.458341173690144],[-3.2106576063193057,51.45878471585095],[-3.21151175937576,51.45974461375326],[-3.212338945555813,51.46071360703338],[-3.213138855535764,51.46169132701568],[-3.213911517083318,51.46267781235948],[-3.2152094708420713,51.462289849028274],[-3.215964912651447,51.463298486611755],[-3.2146562927156173,51.463672253272456],[-3.215373345206578,51.46467485039051],[-3.212735517755461,51.46539370727178],[-3.212735633583696,51.46539387697344],[-3.212038992214005,51.46441974133589],[-3.210730312087895,51.464793462737525],[-3.2100175145273084,51.46384161874507],[-3.2100175167213942,51.46384161792054],[-3.210017454212545,51.463841537871964],[-3.210017367923885,51.46384142273092],[-3.2100173644124017,51.46384142355642],[-3.209278110462111,51.462897488583586],[-3.2092781130947685,51.46289748748447],[-3.209278032989516,51.46289738934477],[-3.209277968723671,51.462897307651296],[-3.2092779665290974,51.46289730820151],[-3.2085124823689264,51.46196157069717],[-3.208512483246648,51.461961570422226],[-3.208512461243349,51.46196154492858],[-3.208512324806844,51.461961378254955],[-3.2085123204182837,51.46196137962964],[-3.207720689557966,51.46103394682295],[-3.206456983826482,51.46146373403676],[-3.2072367811756775,51.46237733312877],[-3.20596122269176,51.46279327134895],[-3.2067040388073464,51.463701361324965],[-3.2074213486184777,51.464617342397716],[-3.208113016702784,51.46554104177332],[-3.2094217369640714,51.4651673534708],[-3.2100977126815007,51.466112667855334],[-3.210747237446329,51.46706525839076],[-3.212076066225651,51.46672029605743],[-3.2127083397025107,51.46769431470418],[-3.214046613948207,51.4673638663868],[-3.214660538082218,51.4683590661014],[-3.213313213273907,51.46867488549624],[-3.213890847177831,51.46966228961013],[-3.215246819428655,51.46936120088817],[-3.21580492539461,51.47036937654603],[-3.2171691151354986,51.47008309122312],[-3.2177067095367247,51.4711119145486],[-3.2182155901241263,51.4721466279813],[-3.2186955487578994,51.47318683378094],[-3.219146356845205,51.47423204313956],[-3.220539302233143,51.47400584814757],[-3.220081954033288,51.472945550247545],[-3.222854675668012,51.4724628275924]],[[-3.2160623115624496,51.46568510555795],[-3.215373471155693,51.464675026390495],[-3.2153734922941455,51.46467505599799],[-3.216692378677418,51.464315607737475],[-3.2173910628010676,51.46534007880013],[-3.2160623115624496,51.46568510555795]],[[-3.212254471766347,51.45692016085463],[-3.2113216348973928,51.455952909112014],[-3.2125474056883663,51.455482348173206],[-3.2134932148707964,51.456463023864835],[-3.212254471766347,51.45692016085463]],[[-3.212075936284157,51.46672009591881],[-3.2120759446532703,51.46672010880444],[-3.211416705294197,51.465753312193684],[-3.2127356551636868,51.46539390850116],[-3.2134047476449483,51.46637511411822],[-3.212075936284157,51.46672009591881]],[[-3.207936660806959,51.45596324246485],[-3.206977861696402,51.455043168432766],[-3.2081766222570764,51.45454621257667],[-3.209149132704333,51.455479420236934],[-3.207936660806959,51.45596324246485]]],[[[-3.2082898248788383,51.554267999527774],[-3.2073714472424952,51.553575123700426],[-3.205573932415067,51.55448465673884],[-3.2037509085137734,51.55537458793507],[-3.201903824168089,51.556244216238554],[-3.201903821524654,51.55624421432027],[-3.200032258816615,51.55709374076065],[-3.199193731670927,51.556362560430905],[-3.1973188294315147,51.55718271088737],[-3.198136740330274,51.557922919722735],[-3.2000320477654633,51.5570938369018],[-3.200031873647451,51.557093915738236],[-3.2008704263686054,51.55782509437696],[-3.202762372427609,51.55696630840521],[-3.2027623794785796,51.556966314434874],[-3.2046298935050874,51.556087059914354],[-3.204629903616674,51.55608705497005],[-3.2046302799554067,51.55608687778911],[-3.2046302751078546,51.55608687367809],[-3.2064724398109674,51.55518759045623],[-3.206472444217077,51.555187593744606],[-3.2064727466638665,51.55518744074811],[-3.2064728152440716,51.55518740723554],[-3.2064728143625523,51.55518740641329],[-3.2082898248788383,51.554267999527774]]],[[[-3.183467080204134,51.489454550344554],[-3.1834477899848483,51.488795807153394],[-3.1834477917419663,51.488795806878194],[-3.1834477885963715,51.48879575394058],[-3.1834477862903423,51.48879567137849],[-3.1834477840934925,51.48879567137962],[-3.183410082415561,51.48813723849907],[-3.1819717961203358,51.4881771779033],[-3.1820085843851196,51.48882000997718],[-3.182027396075139,51.48946312586259],[-3.183467080204134,51.489454550344554]]],[[[-3.1709129060117642,51.44279030937524],[-3.1695922581644043,51.44227533550471],[-3.1688415361782964,51.44304200412531],[-3.170140896799733,51.44354868041476],[-3.1709129060117642,51.44279030937524]]],[[[-3.1664341632505586,51.50390229413877],[-3.1651563023317495,51.503487736107076],[-3.165156273355379,51.503487770130164],[-3.1655324463838785,51.503026352348606],[-3.164243219945809,51.50262576573476],[-3.163878464162948,51.50307316385138],[-3.1626006505029225,51.50265857819444],[-3.1622352120954194,51.50308807389354],[-3.160969203850639,51.502659616774416],[-3.1606039644640105,51.50307134392267],[-3.1593501445358885,51.502629144049],[-3.159350122579705,51.50262916791955],[-3.1597031433818903,51.50223122717576],[-3.1609691274474656,51.50265970155658],[-3.1613228591534104,51.50224397831457],[-3.160045090554203,51.501829364486376],[-3.1603756121711424,51.50142399890947],[-3.1603756134900634,51.50142399945765],[-3.1603756551982443,51.50142394623094],[-3.1603756758334796,51.501423920714856],[-3.1603756749542797,51.50142392044083],[-3.160694846760993,51.5010149626273],[-3.160694806372701,51.50101501667659],[-3.161994960515245,51.50140154212586],[-3.1623133275873005,51.500974831849746],[-3.1610025702046833,51.500602533391415],[-3.1610025517666696,51.500602557809735],[-3.161298690122333,51.50018683914384],[-3.15997775255393,51.49982886366033],[-3.1599777450914934,51.49982887436023],[-3.1602523962232887,51.49942445836967],[-3.158921679868632,51.49908091382791],[-3.1586568356823386,51.499470873005386],[-3.157335939508274,51.49911286772798],[-3.1575909839628524,51.498737354443726],[-3.157590981325637,51.498737353895905],[-3.157835480334244,51.49835912296968],[-3.157835438198367,51.49835919183052],[-3.1591755267677293,51.498688204033144],[-3.1594184468415962,51.49829263120868],[-3.158069370469004,51.49797827268388],[-3.1580693489624827,51.49797830780021],[-3.158292565489367,51.497594941646994],[-3.156934933167962,51.4972953135677],[-3.1567203122180136,51.497663898352016],[-3.1553712738475053,51.497349509035864],[-3.15515531851262,51.497701121714876],[-3.1564953671682505,51.4980301640257],[-3.156260305429215,51.49839377912125],[-3.1549296513008707,51.49805018977894],[-3.1546941995944313,51.49839682620205],[-3.1544490940349976,51.49874083614043],[-3.154194418305586,51.49908210266166],[-3.1528943948320736,51.49869549361971],[-3.152641184828436,51.499019863324335],[-3.152378915888105,51.499341454468045],[-3.1536565413959847,51.49975615444783],[-3.1533735739424245,51.50008864684858],[-3.1533735748215697,51.500088647122645],[-3.1530813878571977,51.50041796154637],[-3.1527799491844077,51.50074413359133],[-3.154021091428691,51.50119999467964],[-3.1536976890727373,51.50153623794036],[-3.1549259277563966,51.502005539584914],[-3.154579875066384,51.50235150585691],[-3.1542242065210098,51.502693637618215],[-3.153859020380733,51.50303184204421],[-3.1526718026058824,51.50252305736218],[-3.1523115549214804,51.502844426031956],[-3.1519423855346465,51.50316180751632],[-3.151564452057467,51.50347506865984],[-3.1511776898352433,51.50378426123591],[-3.1534326576526217,51.504902748332675],[-3.153850270342549,51.504568879708785],[-3.1561362775908712,51.505662584269295],[-3.156574721512309,51.50529913760219],[-3.157732880477776,51.505833435791764],[-3.158175931647355,51.50545249542994],[-3.1570030084480636,51.504930899172024],[-3.1574207524221256,51.50455820466614],[-3.1574207528618516,51.5045582049403],[-3.1574207660382094,51.50455819259312],[-3.1574208393891596,51.504558127289215],[-3.157420837630449,51.50455812646683],[-3.157828093684232,51.50418093291591],[-3.157828095003207,51.50418093346411],[-3.1578281376051027,51.50418089230709],[-3.157828172741883,51.504180859929754],[-3.1578281718624264,51.504180859381414],[-3.1582248136465427,51.503799285153306],[-3.1594398506553296,51.50428184696629],[-3.1598391589596004,51.50388259604333],[-3.159839137441489,51.50388261854234],[-3.1610675027223327,51.50435185596292],[-3.1614685615928098,51.50393480288769],[-3.1602272663630333,51.5034790230128],[-3.1606039486564055,51.503071361756966],[-3.1606038946471045,51.50307142266795],[-3.1618577370909513,51.50351361185031],[-3.1622351370161637,51.5030881630648],[-3.1635011690103743,51.5035166103295],[-3.1638784452847424,51.50307318689882],[-3.1638783895283957,51.50307325521792],[-3.1651562228662202,51.503487829396214],[-3.1647672251888648,51.5039450441725],[-3.1660333051119607,51.504373464319194],[-3.1664341632505586,51.50390229413877]],[[-3.160694869589013,51.501014931898816],[-3.1593947361292565,51.500628395031676],[-3.1593947159337485,51.50062842109606],[-3.1596918117928285,51.5002302507165],[-3.1596917788690413,51.50023029708283],[-3.1610025113795652,51.50060261240773],[-3.160694869589013,51.501014931898816]],[[-3.159839212096719,51.50388254116747],[-3.1586108694142525,51.503413293590846],[-3.158985995020029,51.50302322969318],[-3.1577447493220796,51.502567423477316],[-3.158096281250363,51.50218700317457],[-3.159350075154159,51.50262921922758],[-3.1589859203679955,51.50302331118194],[-3.1602271855606525,51.50347910615008],[-3.159839212096719,51.50388254116747]],[[-3.1596918337421727,51.50023021998848],[-3.158381119519075,51.49985789246383],[-3.1586568312925363,51.499470879315524],[-3.158656781249995,51.499470952842074],[-3.159977693730706,51.49982894596769],[-3.1596918337421727,51.50023021998848]],[[-3.159086539383553,51.50102327704264],[-3.157797425541026,51.50062261944979],[-3.158094562759993,51.500241922195876],[-3.159394672468743,51.500628476243044],[-3.159086539383553,51.50102327704264]],[[-3.1578354829680877,51.49835911912876],[-3.156495411942199,51.498030094616],[-3.156720291589711,51.497663933742146],[-3.156720267889077,51.49766397434479],[-3.1580693221887812,51.497978351147],[-3.1578354829680877,51.49835911912876]],[[-3.1546572437156266,51.503887672430196],[-3.1534844017413235,51.50336604112452],[-3.153858954056649,51.503031903503924],[-3.1538589443936074,51.503031912558235],[-3.155046187734093,51.503540688746625],[-3.1546572437156266,51.503887672430196]]],[[[-3.1641382723425333,51.50949010211992],[-3.162995061062682,51.50894333664965],[-3.162453632665514,51.50937626048859],[-3.1635813788293063,51.509935400691575],[-3.1641382723425333,51.50949010211992]]],[[[-3.162633792059036,51.50616368135733],[-3.1602309302579217,51.505172295473976],[-3.1597954290306878,51.50557566794736],[-3.1593487880729407,51.50597416085919],[-3.160521760885836,51.50649573603765],[-3.1609827988746324,51.50608438876526],[-3.1621702004329846,51.506593092580836],[-3.162633792059036,51.50616368135733]]],[[[-3.161851877150382,51.50839655998736],[-3.160708720604972,51.50784977213351],[-3.1601982231639445,51.508257947946866],[-3.1613259141107095,51.50881710966496],[-3.161851877150382,51.50839655998736]]],[[[-3.1595655918656242,51.50730297336278],[-3.1584224900521405,51.506756163127314],[-3.1579429240915657,51.50713959155492],[-3.1590705598243143,51.5076987750605],[-3.1595655918656242,51.50730297336278]]],[[[-3.1388075208718114,51.48919486740104],[-3.138788180364379,51.48902273111564],[-3.13878818080375,51.48902273111558],[-3.1387881781617373,51.48902271438386],[-3.1387881763986583,51.4890226982006],[-3.1387881759592866,51.48902269820066],[-3.1387640311718803,51.48885083410638],[-3.1387640316112493,51.48885083410632],[-3.1387640294103294,51.48885082231187],[-3.138764026326599,51.488850798722794],[-3.1387640254478564,51.4888507987229],[-3.1387350746713873,51.48867919118215],[-3.1373046366252053,51.48878112466292],[-3.1373309546015684,51.48893715200981],[-3.1373529023864895,51.489093412759246],[-3.1373704825764794,51.48924992199966],[-3.1388075208718114,51.48919486740104]]],[[[-3.136505999660156,51.415676193711256],[-3.1344351159271846,51.41554031448968],[-3.1344351163650295,51.41554031119806],[-3.1344348022747752,51.41554029394782],[-3.134434690412711,51.415540286552634],[-3.1344346899743862,51.41554028792418],[-3.1323603401400955,51.41542699195771],[-3.1323603392639963,51.415426997992384],[-3.130283579668248,51.41533633880241],[-3.130283579667681,51.41533633523652],[-3.1302832774255362,51.41533632538051],[-3.1302831528436443,51.415336319902245],[-3.1302831524051964,51.41533632127377],[-3.1282041848411457,51.41526830283078],[-3.1282041852791873,51.415268297344774],[-3.126123155818234,51.41522292941023],[-3.12612315581814,51.41522292803873],[-3.1261230417653003,51.41522292694455],[-3.1261227847075213,51.415222921191116],[-3.126122784707708,51.415222923934124],[-3.124041236999142,51.41520024176287],[-3.1240412369991044,51.41520024011707],[-3.1240411102251318,51.415200240118196],[-3.124040808862707,51.41520023682928],[-3.124040808862782,51.41520024012088],[-3.121959002573211,51.41520024012087],[-3.1219590021346213,51.41520023682926],[-3.1219587007721965,51.41520024011818],[-3.121958573998224,51.41520024011705],[-3.1219585739981865,51.41520024176285],[-3.119877083316021,51.41522292366129],[-3.1198770833161515,51.41522292174118],[-3.1198769087274263,51.415222925576735],[-3.1198766547405046,51.41522292831297],[-3.119876655178982,51.415222931055965],[-3.11779605385603,51.415268289134694],[-3.1177960534173965,51.415268288860375],[-3.117796028852068,51.41526828968218],[-3.1177956827446085,51.415268297072906],[-3.1177956831828375,51.415268300913134],[-3.1157166585920826,51.41533632154795],[-3.115716658153678,51.41533631990211],[-3.115716521727728,51.41533632592824],[-3.1157162308909316,51.41533633551065],[-3.1157162313290745,51.41533633880228],[-3.113639472171988,51.41542699799226],[-3.1136394712958326,51.41542699223188],[-3.1115651210229274,51.415540287923974],[-3.1115651210232698,51.41554028655248],[-3.1115649964396423,51.415540294769315],[-3.1115646946322837,51.41554031119786],[-3.1115646955087968,51.41554031448955],[-3.1094942381701562,51.41567616578163],[-3.1094942372937897,51.41567616248994],[-3.1094939284639893,51.41567618604412],[-3.109493811337154,51.41567619371103],[-3.1094938117754167,51.41567619508257],[-3.1074273917434563,51.41583458848424],[-3.1074273913050665,51.41583458766129],[-3.1074273206770906,51.41583459368649],[-3.107427022812105,51.41583461668809],[-3.10742702368833,51.41583461997981],[-3.105364898529631,51.416015541205404],[-3.1053648998438534,51.4160155458687],[-3.103308599353434,51.41621885990315],[-3.1033085989157017,51.41621885770866],[-3.103308405889945,51.4162188790716],[-3.103308176014983,51.41621890179986],[-3.103308176891271,51.41621890426871],[-3.1012578450921304,51.41644459113825],[-3.1012578433401616,51.416444585377626],[-3.0992132605943463,51.41669267936988],[-3.099213262346352,51.41669268458193],[-3.0971766728238244,51.41696291328807],[-3.0971766723859204,51.416962911916485],[-3.097176535506278,51.41696293163589],[-3.09717630956865,51.41696296148478],[-3.0971763104446235,51.41696296395368],[-3.095147551200911,51.41725534145842],[-3.09514754901066,51.41725533624621],[-3.093126454044182,51.41756989418823],[-3.093126456234397,51.417569899126185],[-3.091115248482241,51.41790629096689],[-3.0911152462920373,51.41790628630319],[-3.0891132886686976,51.4182646144044],[-3.089113286916357,51.41826461111229],[-3.0891130004088847,51.41826466588938],[-3.089112878435846,51.41826468779809],[-3.0891128788735265,51.41826468916972],[-3.087121551240673,51.418644706451474],[-3.087121550802409,51.41864470590275],[-3.0871214889362193,51.41864471850159],[-3.0871211949652757,51.418644774368715],[-3.087121196717491,51.418644777660866],[-3.0851407452949937,51.41904643427169],[-3.085140744418727,51.41904643289991],[-3.0851406176116876,51.41904646001462],[-3.085140339428533,51.41904651643047],[-3.0851403411806158,51.41904651972263],[-3.083171418548912,51.419469681476606],[-3.0831714181111614,51.41946968037926],[-3.0831713163115486,51.419469703385836],[-3.0831710139872293,51.419469768292096],[-3.0831710161778925,51.419469771584446],[-3.0812141701308176,51.41991432075753],[-3.0812141688164467,51.419914318836966],[-3.0812139941718457,51.41991436074253],[-3.081213766434662,51.41991441222966],[-3.081213768187003,51.419914414973285],[-3.079269588286961,51.42038021715758],[-3.07926958653473,51.42038021441393],[-3.079269354399095,51.420380273027426],[-3.079269190282438,51.42038031246533],[-3.07926919159674,51.420380314385916],[-3.0773382174679047,51.4208672412237],[-3.077338215277871,51.42086723765694],[-3.077337903266482,51.42086732037385],[-3.077337870793116,51.420867328590184],[-3.077337871231556,51.42086732886465],[-3.075420742202217,51.42137522107463],[-3.075420741325915,51.42137521997707],[-3.0754206500449692,51.42137524544989],[-3.075420348559157,51.421375325148674],[-3.0754203511880727,51.42137532844132],[-3.0735177001068545,51.42190401662579],[-3.0735176979161807,51.421904013881864],[-3.0735174547839255,51.4219040848228],[-3.073517306010272,51.42190412617923],[-3.0735173073246824,51.421904127825584],[-3.0716296569893884,51.42245346589046],[-3.0716296552372215,51.422453463421],[-3.0716294252623624,51.42245353326658],[-3.0716292712164197,51.42245357818418],[-3.0716292725307746,51.42245357983056],[-3.0697571976235647,51.42302340143533],[-3.0697571958711536,51.42302339924012],[-3.0697570040713984,51.42302346004748],[-3.0697568105186024,51.42302351920824],[-3.0697568122710135,51.42302352140344],[-3.0679008327182937,51.42361366816681],[-3.067900830089787,51.42361366487397],[-3.0679005206513543,51.4236137673165],[-3.06790050177808,51.423613773342225],[-3.0679005022164967,51.42361377361673],[-3.0660612284651307,51.42422405403837],[-3.0660612267128564,51.424224051843126],[-3.066061045869548,51.424224114569846],[-3.0660608505450777,51.42422417920962],[-3.0660608527361033,51.42422418140509],[-3.064238896231541,51.42485439084842],[-3.064238895793136,51.42485439057389],[-3.064238875600828,51.42485439796986],[-3.064238520489115,51.42485452067799],[-3.0642385239938887,51.42485452479423],[-3.0624343896353565,51.425504488223154],[-3.0624343865683614,51.425504484929974],[-3.062434091573239,51.425504595594504],[-3.0624340165088952,51.42550462271136],[-3.0624340173853297,51.42550462353471],[-3.0606481943789747,51.426174165653364],[-3.0606481939405756,51.42617416537883],[-3.060648161015719,51.42617417797909],[-3.0606478818154836,51.42617428288723],[-3.0606478848827594,51.42617428590616],[-3.0588809722989407,51.42686318432151],[-3.058880970984158,51.426863183223595],[-3.058880863862187,51.426863226504295],[-3.058880607037801,51.42686332675736],[-3.0588806101054007,51.42686332950205],[-3.0571332018792594,51.4275713511458],[-3.057133196620964,51.42757134620547],[-3.0554054065012166,51.42829845059665],[-3.05540540562444,51.42829845004754],[-3.055405366107879,51.4282984673056],[-3.055405050421865,51.42829860015871],[-3.0554050543657065,51.42829860372689],[-3.0536981219450383,51.42904426881831],[-3.053698119753961,51.42904426689692],[-3.0536979643128466,51.429044337574226],[-3.05369777067569,51.42904442194393],[-3.053697773305145,51.42904442413989],[-3.0520118143332957,51.4298085949507],[-3.0520118108275454,51.42980859193129],[-3.052011541205042,51.42980871876855],[-3.0520115144192923,51.429808730821485],[-3.0520115148572478,51.42980873137035],[-3.0503470939329818,51.43059115432692],[-3.0503470934946018,51.430591154052344],[-3.0503470741720986,51.43059116336654],[-3.0503467492087966,51.43059131622409],[-3.0503467535912505,51.43059131979269],[-3.048704416134104,51.43139173803659],[-3.0487044117517037,51.43139173446792],[-3.048704111792142,51.431391885965255],[-3.048704081489599,51.43139190075821],[-3.04870408192753,51.43139190130708],[-3.0470842812744796,51.43221009277516],[-3.047084280836104,51.43221009250058],[-3.0470842689773168,51.43221009880177],[-3.047083948804179,51.43221026043092],[-3.047083953625362,51.432210263999934],[-3.045487190235196,51.43304597677372],[-3.045487187167538,51.43304597430299],[-3.0454869829217057,51.43304608498478],[-3.0454868594994995,51.43304614963777],[-3.0454868616913546,51.433046151010714],[-3.0439135751074415,51.43389915673403],[-3.0439135689712185,51.433899152341105],[-3.042363683155852,51.434769505667944],[-3.0423636914838865,51.434769511433956],[-3.0408389131421,51.43565625333889],[-3.0408389065670693,51.435656248945484],[-3.0393387531382374,51.43655965490515],[-3.03933875226151,51.43655965435593],[-3.03933872458121,51.43655967161701],[-3.039338442956204,51.43655984120711],[-3.0393384477777436,51.43655984450215],[-3.0378639898135016,51.43747926970662],[-3.0378639884983962,51.43747926888277],[-3.037863926542221,51.43747930888542],[-3.0378636888336237,51.43747945710853],[-3.03786369321729,51.43747945985471],[-3.036415031788487,51.43841483731602],[-3.036415025212459,51.43841483347098],[-3.0349923954822375,51.43936602003799],[-3.0349923928514904,51.439366018664515],[-3.0349922750709073,51.43936610004287],[-3.034992102801905,51.43936621539336],[-3.034992106309388,51.43936621731609],[-3.0335964849392805,51.44033255882279],[-3.0335964818706955,51.44033255690035],[-3.033596328477629,51.44033266705152],[-3.033596195309511,51.44033275911437],[-3.0335961979397243,51.44033276076217],[-3.032227717561338,51.44131415924758],[-3.032227715369496,51.44131415787439],[-3.0322276116329325,51.44131423487203],[-3.0322274340587225,51.441314362283485],[-3.0322274380051395,51.44131436420663],[-3.0308865104375333,51.44231052606716],[-3.030886505175975,51.44231052332003],[-3.030886268228536,51.442310705816844],[-3.0308862352601365,51.44231073020353],[-3.03088623613688,51.442310730752816],[-3.029573234658686,51.443321381005994],[-3.029573233343,51.44332138045635],[-3.0295731898180605,51.443321414983295],[-3.029573002097939,51.44332155966343],[-3.0295730064827993,51.44332156186132],[-3.0282883708971786,51.44434636523007],[-3.0282883682663666,51.444346363856454],[-3.028288260540282,51.4443464531908],[-3.0282881084150968,51.44434657430792],[-3.0282881119232297,51.44434657595656],[-3.0270322733982282,51.44538518892582],[-3.0270322716441296,51.44538518810148],[-3.027032211838973,51.44538523934637],[-3.027032013087121,51.44538540376288],[-3.0270320179110057,51.445385405961225],[-3.0258053220268466,51.446437541722645],[-3.0258053189570155,51.446437540348605],[-3.025805194934666,51.446437650788134],[-3.025805069601849,51.44643775820929],[-3.02580507267167,51.446437759583326],[-3.0246078919637265,51.447503101994165],[-3.0246078867007653,51.44750309979537],[-3.0246076931680186,51.447503278475615],[-3.0246076452279254,51.44750332122596],[-3.024607646543669,51.44750332177566],[-3.0234401064944714,51.44858176733212],[-3.0234401121959045,51.448581769805664],[-3.0223030219740603,51.44967257728345],[-3.0223030167109664,51.44967257508454],[-3.0223028372078504,51.44967275377299],[-3.0223027866160947,51.449672802554666],[-3.022302788370865,51.449672803104775],[-3.0211963129040886,51.45077580483035],[-3.021196311149898,51.45077580400593],[-3.0211962574668396,51.45077585991619],[-3.0211960867547076,51.450776029833],[-3.0211960915794824,51.45077603175728],[-3.0201205406376475,51.45189092082538],[-3.020120533180552,51.45189091807585],[-3.019075806499053,51.45301781867799],[-3.0190758130788393,51.45301782115252],[-3.018063063034488,51.45415549585722],[-3.018063059086302,51.454155494482194],[-3.018062949471055,51.45415562303],[-3.018062854394344,51.45415572964695],[-3.018062857465091,51.45415573074688],[-3.0170820175353,51.45530423544808],[-3.017082011393073,51.45530423352244],[-3.017081838797953,51.455304444301895],[-3.01708181546491,51.455304471710654],[-3.0170818163423716,51.455304471985734],[-3.01613315987592,51.45646348899208],[-3.0161331585600184,51.45646348844228],[-3.0161331259729027,51.456463529831616],[-3.0161329648165975,51.45646372690515],[-3.016132970519886,51.456463728830435],[-3.015216788611989,51.45763290451648],[-3.015216784662951,51.45763290341566],[-3.0152166868823835,51.457633033617405],[-3.0152165996834484,51.45763314517661],[-3.0152166031934335,51.457633146277026],[-3.0143331522785735,51.45881215851177],[-3.014333146574413,51.45881215686069],[-3.014333006922301,51.45881235175723],[-3.014332994588272,51.458812368477986],[-3.0143329954657885,51.45881236875311],[-3.0134823972896374,51.46000107135984],[-3.0134824047489643,51.46000107356119],[-3.0126652935882343,51.46119858268642],[-3.012665285689645,51.461198580484606],[-3.011881551328395,51.46240506019892],[-3.011881548695699,51.46240505937352],[-3.011881496235008,51.462405144081885],[-3.0118813904506982,51.46240530718895],[-3.011881395277651,51.46240530856501],[-3.011131601894855,51.46361989273817],[-3.0111315983838463,51.463619891911925],[-3.011131528711207,51.46362001061647],[-3.0111314471485717,51.46362014302454],[-3.0111314510980383,51.463620144125514],[-3.010415649083173,51.46484274430395],[-3.010415648205567,51.46484274402881],[-3.010415634090987,51.46484276925066],[-3.0104155207548415,51.46484296307044],[-3.0104155264602803,51.46484296444742],[-3.0097339562999914,51.46607317935915],[-3.0097339505944256,51.46607317798215],[-3.0097338486668646,51.46607337318374],[-3.0097338164655025,51.466073431029486],[-3.0097338182207483,51.46607343157977],[-3.00908670733114,51.467310851138265],[-3.009086705575856,51.467310850587964],[-3.0090866786509602,51.46731090514706],[-3.0090865736293906,51.46731110610531],[-3.0090865793350954,51.46731110748234],[-3.0084741098159253,51.468555386814764],[-3.0084741067430723,51.468555386263176],[-3.008474059495149,51.46855548853007],[-3.008473983129111,51.468555643708],[-3.0084739875187996,51.46855564453517],[-3.0078963468845914,51.46980640912325],[-3.0078963411779216,51.46980640802045],[-3.007896259451981,51.469806597205626],[-3.0078962280984958,51.46980666520066],[-3.007896230293052,51.46980666575142],[-3.007353581461437,51.471063569278186],[-3.0073535739985156,51.471063567899336],[-3.0068459089355155,51.472326675571615],[-3.006845916837839,51.472326676950935],[-3.0063737943209543,51.47359460045614],[-3.0063737916870132,51.47359459990493],[-3.006373762037989,51.47359468655345],[-3.00637369702724,51.473594860942],[-3.006373702295823,51.47359486177013],[-3.005937058453029,51.47486773751969],[-3.0059370505495893,51.47486773641461],[-3.0055359412416798,51.47614543785618],[-3.0055359359728206,51.47614543702801],[-3.005535884112956,51.47614561910954],[-3.005535858426601,51.476145700824425],[-3.005535861061388,51.47614570110137],[-3.005170564182327,51.4774273492017],[-3.0051705633045103,51.47742734892651],[-3.0051705553165413,51.477427380462686],[-3.005170499022287,51.47742757762591],[-3.005170504730554,51.47742757845454],[-3.0048410644694514,51.47871301120413],[-3.0048410635916127,51.478713010928935],[-3.0048410564838646,51.478713041643076],[-3.00484099657673,51.47871327583259],[-3.0048410031636976,51.47871327666213],[-3.0045475307533427,51.48000206766431],[-3.004547524604772,51.48000206710951],[-3.0045474818770104,51.480002281841074],[-3.0045474703248507,51.48000233230009],[-3.004547472081281,51.48000233257616],[-3.0042900500604923,51.48129412477085],[-3.0042900483040147,51.481294124494774],[-3.0042900398277492,51.481294174408276],[-3.0042899966539953,51.48129439078503],[-3.004290002802736,51.48129439133985],[-3.0040687125204832,51.482588790877706],[-3.004068708128096,51.48258879059895],[-3.0040686857551813,51.48258894719991],[-3.0040686670187586,51.48258905689974],[-3.004068670093216,51.482589057177165],[-3.003883577456901,51.48388570664224],[-3.0038835699898483,51.483885706086056],[-3.003734684029282,51.4851846728579],[-3.0037346932538838,51.48518467341587],[-3.0036221793675892,51.486484529258405],[-3.003622170142009,51.48648452897471],[-3.003545988185247,51.48778568018228],[-3.003545983792364,51.48778567990351],[-3.003545979465409,51.48778582253347],[-3.003545972108808,51.487785947605346],[-3.003545975622971,51.48778594788322],[-3.0035061824746667,51.489087485287314],[-3.0035061811572663,51.48908748501167],[-3.0035061810497123,51.48908752615609],[-3.0035061748036846,51.489087730500835],[-3.0035061805148104,51.48908773078095],[-3.003502777463188,51.490389510137085],[-3.003502772189851,51.490389510406004],[-3.0035027769698392,51.49038969885275],[-3.003502776781965,51.490389770718295],[-3.0035027789788895,51.49038977072053],[-3.0035357697866774,51.49169137400493],[-3.0035357662714968,51.49169137400135],[-3.003535772975664,51.49169149881316],[-3.003535776576089,51.49169163431939],[-3.0035357805306666,51.49169163432341],[-3.0036051721400736,51.49299293999664],[-3.003605180489581,51.49299293973084],[-3.003710927429282,51.49429303043217],[-3.0037109173211327,51.49429303097049],[-3.0038530324679837,51.49559203086931],[-3.003853029391223,51.495592031140475],[-3.00385304405599,51.49559213703382],[-3.0038530607927885,51.49559229093114],[-3.0038530651878537,51.49559229066131],[-3.0040314516239475,51.49688928529533],[-3.004031448107654,51.49688928556606],[-3.0040314688769567,51.4968894101177],[-3.004031487424029,51.496889544267454],[-3.0040314913797683,51.49688954399718],[-3.004246168989723,51.49818465637899],[-3.004246176461967,51.498184655837946],[-3.004496997293959,51.49947697303398],[-3.0044969946564124,51.49947697330561],[-3.004497016810585,51.49947707317183],[-3.004497047602699,51.499477231471914],[-3.004497051998133,51.499477231202064],[-3.0047839855848797,51.500766617995325],[-3.0047839772325404,51.5007666188098],[-3.0051070684500787,51.502053197042024],[-3.005107077682353,51.5020531959541],[-3.0054659723426864,51.5033355446659],[-3.0054659679461735,51.5033355452101],[-3.0054660167648266,51.503335703253576],[-3.0054660442020342,51.50333580120477],[-3.005466046839796,51.50333580093312],[-3.005860768202287,51.50461404380121],[-3.0058607594090354,51.50461404488962],[-3.006291275992253,51.50588804656829],[-3.0062912755520212,51.50588804684214],[-3.0062912790437717,51.50588805644597],[-3.006291361929535,51.505888301474734],[-3.006291368964181,51.505888300658846],[-3.0067573804464747,51.50715716350894],[-3.006757376048921,51.50715716432747],[-3.006757432390268,51.50715730591998],[-3.0067574734242637,51.507157417324784],[-3.0067574765024823,51.507157416779236],[-3.007258929755589,51.508421008664584],[-3.007258927556405,51.508421009211006],[-3.0072589559602245,51.50842107534433],[-3.0072590297737514,51.50842126166403],[-3.0072590350505326,51.508421260846355],[-3.0077957799642174,51.509679196329415],[-3.007795775566439,51.50967919714799],[-3.0077958450735522,51.5096793497247],[-3.007795887024685,51.50967944796379],[-3.007795890103064,51.50967944741822],[-3.008367880054581,51.51093159348589],[-3.085721608509103,51.49668609583448],[-3.0855349048089367,51.49627889330892],[-3.099412069106691,51.493880514166044],[-3.0993016149595984,51.49362286184591],[-3.099198411641373,51.49336411918239],[-3.1033989443967678,51.49273541999037],[-3.1033198947399545,51.492521416377336],[-3.1061314677049023,51.492132773526464],[-3.1060688393513565,51.49194863318684],[-3.107479822405184,51.491769632190866],[-3.1074271333646184,51.491600228534026],[-3.107379194322577,51.491430294992014],[-3.1102194068014843,51.49113394148261],[-3.110258632625791,51.49127295670288],[-3.1102586317469276,51.49127295697708],[-3.110258637454001,51.491272975081266],[-3.1102586400876904,51.49127298468193],[-3.110258640527158,51.49127298440767],[-3.1103017553563057,51.49141157898761],[-3.113123644532048,51.49105345787002],[-3.1131601933205877,51.491160871029074],[-3.1131601941994296,51.491160870754854],[-3.1131997328901964,51.4912678477448],[-3.113199732450747,51.49126784801906],[-3.113199735963953,51.491267857071136],[-3.113199740355306,51.49126786914054],[-3.113199740794703,51.49126786914057],[-3.1132422645765914,51.49137439898616],[-3.1132422641371917,51.491374398986125],[-3.1132422645764164,51.49137439980905],[-3.113242272920531,51.49137442038197],[-3.113242273359926,51.49137442038201],[-3.1132877690775618,51.49148047071193],[-3.1132877686381635,51.49148047071189],[-3.1132877743476306,51.491480483330015],[-3.1132877778609904,51.49148049183347],[-3.113287778300386,51.49148049183352],[-3.1133362319191646,51.49158603027622],[-3.1119556452727277,51.491841183984164],[-3.1119002618932794,51.491720544029654],[-3.110512741013016,51.491960600375215],[-3.110454246317554,51.491824229608504],[-3.1103995665602313,51.491687225594646],[-3.1089994654454003,51.49189688930221],[-3.108942983195729,51.49174403253301],[-3.1075372250632545,51.49193839294124],[-3.1075993628993595,51.492106570029144],[-3.1089994764210735,51.491896919750424],[-3.108999472908898,51.49189690987533],[-3.1090602117807173,51.49204910743645],[-3.109060211341311,51.4920491074364],[-3.1090602157321467,51.4920491178602],[-3.1090602240745873,51.49204913815912],[-3.1090602245140726,51.49204913788487],[-3.1091252182919344,51.492200671019525],[-3.1105127528693397,51.49196062780611],[-3.1105127471606546,51.49196061491357],[-3.110575055508766,51.49209634886145],[-3.1119556562518165,51.49184120839758],[-3.1120143927061235,51.49196120266955],[-3.112014392266726,51.4919612026695],[-3.1120143953411494,51.49196120843002],[-3.1120144041248095,51.491961226534414],[-3.1120144050036087,51.49196122653449],[-3.112076499387374,51.49208058663981],[-3.1120765007056463,51.49208058636564],[-3.1121419100010477,51.49219922808605],[-3.112141909561576,51.49219922836032],[-3.1121419179067806,51.4921992428988],[-3.112141923177396,51.492199252225355],[-3.1121419236168655,51.4921992519511],[-3.11221064037975,51.492317162937084],[-3.1122106399403435,51.49231716293704],[-3.1122106447719053,51.492317170892086],[-3.112210653995765,51.49231718625353],[-3.112210654435166,51.49231718625357],[-3.1122826580442013,51.49243433056464],[-3.1109429151297663,51.49276361560005],[-3.110861898618032,51.49263180181793],[-3.1108618981788503,51.492631800995],[-3.1107845795261557,51.49249912350557],[-3.109427232558057,51.49279900320228],[-3.109345462038649,51.49265066988583],[-3.109267851287709,51.492501467750486],[-3.107894556670061,51.492771576017084],[-3.1079799237456083,51.49293569929982],[-3.1066143688607606,51.493220713076234],[-3.1067125036321928,51.49339875136088],[-3.1094272492467123,51.49279903310252],[-3.109427243976579,51.49279902377582],[-3.109513138287765,51.492946423800966],[-3.1095131378483503,51.49294642380092],[-3.109513143997104,51.49294643395059],[-3.109513154976766,51.49294645287829],[-3.1095131558555855,51.49294645287841],[-3.109603170479386,51.493092914665496],[-3.110942930941457,51.492763642208416],[-3.111027604052169,51.49289452753746],[-3.111027603612699,51.4928945278117],[-3.11102761195824,51.4928945401559],[-3.111027620742841,51.49289455387161],[-3.111027621182254,51.49289455387166],[-3.1111159588244894,51.493024522809584],[-3.112436481084116,51.49266624617092],[-3.1125182083130887,51.492780877553955],[-3.112518207873617,51.49278087782821],[-3.1125182179769393,51.49278089126963],[-3.1125182245659277,51.492780900596294],[-3.1125182250053993,51.49278090032203],[-3.112603144722741,51.49289462373372],[-3.112603144283266,51.49289462400797],[-3.112603159658186,51.492894643484384],[-3.112603161854539,51.492894646501824],[-3.1126912486010583,51.49300742709737],[-3.1126912481615903,51.49300742737163],[-3.1126912587045963,51.493007439990194],[-3.1126912661723516,51.49300744986551],[-3.11269126661183,51.493007449591246],[-3.1127825116198546,51.493119275842375],[-3.1140597678442137,51.49270435224532],[-3.1141423168649203,51.49280129510783],[-3.114142315986054,51.49280129538206],[-3.114227580201735,51.492897343359026],[-3.1142275802016792,51.492897343633324],[-3.114227585473544,51.49289734911965],[-3.114227597335028,51.49289736256105],[-3.114227597774439,51.49289736256109],[-3.114315517010981,51.49299244761666],[-3.1143155165715126,51.49299244789092],[-3.114315529311815,51.492992461606676],[-3.1143155345837514,51.49299246681871],[-3.1144061171991835,51.49308659854793],[-3.115633877420612,51.49261705137067],[-3.1157137493285605,51.492696860959676],[-3.1157137524039302,51.49269686397712],[-3.115713765144701,51.49269687686984],[-3.11571376558416,51.49269687659557],[-3.1157958569232407,51.49277580357979],[-3.115795856044382,51.49277580385404],[-3.1158801589131495,51.492853840273796],[-3.1158801584737432,51.49285384027377],[-3.11588016726069,51.4928538482289],[-3.115880175608315,51.4928538556354],[-3.1159666302620117,51.492930946074516],[-3.1159666337768233,51.492930949091985],[-3.115966647396637,51.49293096143614],[-3.115966647836054,51.49293096143616],[-3.1160552446143606,51.49300709793473],[-3.116055244174955,51.493007097934694],[-3.1160552525227194,51.4930071047926],[-3.116055262188458,51.493007113296365],[-3.116055262627915,51.493007113022095],[-3.1161459751746885,51.49308227308146],[-3.1161459742958257,51.49308227335571],[-3.1162388118423863,51.49315646300609],[-3.11736573004531,51.492596996163066],[-3.1172883802025644,51.49253518440388],[-3.1172127689632725,51.492472537995006],[-3.117138910823304,51.49240906873527],[-3.117066863774262,51.49234482627854],[-3.1182535250688,51.491835785145604],[-3.1183111628570717,51.49188717743876],[-3.11831116285704,51.49188717771307],[-3.1183111698868253,51.49188718374786],[-3.1183111742804037,51.491887187862474],[-3.1183702403142335,51.49193794408994],[-3.118370239874819,51.49193794436422],[-3.118370249101453,51.491937952044886],[-3.118370252177002,51.491937954513666],[-3.1184307284447654,51.49198805986059],[-3.11843072800534,51.49198806013488],[-3.118430737232021,51.49198806754122],[-3.1184307403076046,51.491988069735726],[-3.118492607918611,51.492037508564316],[-3.1173657146675997,51.49259698381899],[-3.1174447807089787,51.4926579430948],[-3.1174447802695675,51.49265794309478],[-3.117444792132466,51.49265795214712],[-3.1174447965261396,51.49265795543889],[-3.117444796526169,51.49265795516459],[-3.117525538786201,51.49271803177907],[-3.1175255383467575,51.49271803205334],[-3.117607964735967,51.49277723203795],[-3.117607971765915,51.49277723697562],[-3.117607980992683,51.49277724383345],[-3.1176079814321223,51.49277724355918],[-3.11769205065144,51.49283553646163],[-3.1198152778190766,51.49162115055499],[-3.1198666796849874,51.4916555635184],[-3.1198666792455905,51.491655563518385],[-3.1198666875937713,51.49165556900453],[-3.11986668979066,51.49165557037609],[-3.1198666897906855,51.491655570101784],[-3.119919056250432,51.49168942460036],[-3.1199190566898225,51.49168942460037],[-3.1199723508357553,51.49172269649379],[-3.118963108599961,51.49236374471788],[-3.1190354119143064,51.492407335891706],[-3.119035411474874,51.49240733616599],[-3.1190354228988344,51.49240734274949],[-3.1190354259745092,51.492407344669665],[-3.1190354264139373,51.49240734439538],[-3.119108922920176,51.492450132972785],[-3.1191089334653976,51.492450139007644],[-3.1191089374198606,51.492450141202156],[-3.119183634147674,51.49249213074697],[-3.11918363458711,51.49249213047268],[-3.1192594783701737,51.49253329080836],[-3.119259477930728,51.492533291356935],[-3.1193364766769593,51.49257362741882],[-3.119336476237559,51.49257362741881],[-3.119336492055521,51.492573635648206],[-3.1193364924949667,51.49257363537391],[-3.1194145917190417,51.492613118631276],[-3.1194145912796305,51.492613118631276],[-3.1194145952341406,51.49261312055146],[-3.1194146070976556,51.49261312658635],[-3.1194146070976774,51.49261312631205],[-3.1194937988890445,51.492651752922335],[-3.119493798449611,51.49265175319662],[-3.119574073579368,51.492689518220025],[-3.11957407357935,51.492689518494316],[-3.1195740858823524,51.4926895239806],[-3.1195740898368816,51.49268952590081],[-3.119574090276288,51.492689525900815],[-3.119655392939693,51.49272640327537],[-3.118819197102104,51.49345811427541],[-3.1189221414482162,51.49350311538473],[-3.118922141887663,51.49350311511046],[-3.119026286581012,51.49354697043413],[-3.1190262861415663,51.49354697070841],[-3.119026307672206,51.49354697921234],[-3.1191316632540986,51.49358969313622],[-3.1191316628146875,51.493589693136215],[-3.1191316751179463,51.493589697799656],[-3.1191316839059486,51.49358970164009],[-3.1191316843453873,51.49358970136582],[-3.119238218295548,51.49363126099373],[-3.1192382178561036,51.493631261268014],[-3.1192382292806005,51.49363126538283],[-3.1192382393868536,51.4936312694976],[-3.119238239826289,51.49363126922331],[-3.1193459196239806,51.49367166193344],[-3.119345919184543,51.49367166220772],[-3.1193459367607206,51.493671668517074],[-3.1193459407153727,51.49367166988868],[-3.119345941154784,51.49367166988869],[-3.119454734278907,51.49371088305926],[-3.119454733839486,51.49371088305926],[-3.1194547355971225,51.49371088360789],[-3.11945475580974,51.49371089101451],[-3.1194547558097674,51.4937108907402],[-3.1195646284204717,51.493748912298116],[-3.119564627981036,51.49374891257241],[-3.1195646385268003,51.49374891613857],[-3.119564650830192,51.493748920253374],[-3.119564650830208,51.49374891997907],[-3.1196755699660454,51.49378573894853],[-3.119675569526603,51.49378573922282],[-3.1196755866635337,51.49378574443494],[-3.119675591936411,51.49378574635516],[-3.119675591936429,51.49378574608087],[-3.119787524196136,51.49382135121187],[-3.119787528590226,51.49382135258348],[-3.1197875461665627,51.493821358344185],[-3.1197875466059966,51.4938213580699],[-3.1199004572696993,51.49385573811251],[-3.119900457269681,51.493855738386806],[-3.1199004700125887,51.49385574195299],[-3.119900479679598,51.4938557449705],[-3.1200143349057994,51.49388888977209],[-3.1200143454516636,51.49388889278961],[-3.120014357315768,51.49388889608147],[-3.1201291447938093,51.49392080152455],[-3.120703338790713,51.493096546933366],[-3.120611499145728,51.49307101990662],[-3.1205204013831116,51.493044500419444],[-3.120430048583345,51.49301698902223],[-3.120340501388543,51.49298850464448],[-3.1210053876450523,51.4921912590557],[-3.121072545082886,51.49221262128188],[-3.121072545082876,51.49221262155618],[-3.121072556067812,51.49221262484792],[-3.121072558264793,51.492212625670845],[-3.121072558704212,51.49221262539654],[-3.121140303277544,51.49223325275355],[-3.1211403032775378,51.49223325302784],[-3.1211403107473026,51.492233255222345],[-3.12114031645948,51.492233256868204],[-3.121140316898879,51.49223325686822],[-3.121208627953539,51.4922531427716],[-3.121208627514122,51.4922531430459],[-3.1212086314687197,51.49225314414314],[-3.1212086415748903,51.492253146886256],[-3.1212774975777293,51.49227228530022],[-3.1207033198962937,51.49309654144707],[-3.120795848250795,51.493121060924366],[-3.120795847811356,51.493121061472955],[-3.120889066188593,51.4931445736735],[-3.120889066188607,51.493144573399206],[-3.120982890656667,51.49316705747341],[-3.1209828902172414,51.49316705774769],[-3.121077366469103,51.49318852494101],[-3.121077366908526,51.49318852466673],[-3.121172391238382,51.49320895083789],[-3.1211723907989546,51.49320895111217],[-3.1211724092541373,51.493208954952614],[-3.121172410132962,51.49320895495262],[-3.121267990444408,51.49322834256909],[-3.1212679900049887,51.49322834284337],[-3.121267993080855,51.49322834339202],[-3.121268009778416,51.49322834668383],[-3.121268010217843,51.49322834640954],[-3.1213641179434135,51.49324668998362],[-3.1213641179434046,51.49324669025792],[-3.1213641249739723,51.4932466913552],[-3.121364136838043,51.493246693824034],[-3.1213641372774594,51.49324669354974],[-3.1214607438495454,51.49326398731959],[-3.121460746486007,51.4932639878682],[-3.12146076318361,51.49326399088569],[-3.121460763183617,51.493263990611396],[-3.1215578391556007,51.49328022908946],[-3.1215578387161864,51.49328022908945],[-3.1215578457467656,51.49328023018672],[-3.121557858050272,51.493280232381245],[-3.121557858489692,51.49328023210695],[-3.121655373096548,51.493295410354385],[-3.121655373096541,51.49329541062868],[-3.1216553924306454,51.49329541364618],[-3.1216553928700685,51.49329541337188],[-3.1217533171042624,51.4933095269986],[-3.1217533171042566,51.4933095272729],[-3.1217533355595597,51.49330952974176],[-3.1217533368778008,51.49330952974178],[-3.1218516404134427,51.49332257408338],[-3.1218516404134364,51.49332257435767],[-3.121851647004622,51.49332257518061],[-3.1218516606264077,51.49332257682654],[-3.1218516606264153,51.49332257655224],[-3.121950314016274,51.49333454804168],[-3.1219503140162694,51.49333454831598],[-3.1219503175315726,51.49333454859031],[-3.12195033335043,51.493334550510525],[-3.121950333789848,51.493334550236234],[-3.1220493075865927,51.493345445306545],[-3.1220493071471718,51.493345445580836],[-3.122148590358715,51.4933552620368],[-3.122148590358707,51.49335526231109],[-3.1221485934346003,51.4933552625854],[-3.1221486101323057,51.4933552642313],[-3.122148610132311,51.49335526395701],[-3.122248132885075,51.493363995762834],[-3.1222481407945213,51.49336399631147],[-3.1222481526586856,51.493363997408736],[-3.1223479043997977,51.49337164346658],[-3.122184887761563,51.49426467901207],[-3.1223098520202917,51.494272878254826],[-3.1223098520202828,51.494272878803415],[-3.122435027703144,51.4942797154845],[-3.1224350272637222,51.4942797154845],[-3.1224350382492894,51.49427971603315],[-3.1224350523108146,51.494279716856106],[-3.122435052310818,51.4942797165818],[-3.1225603998586657,51.49428518850601],[-3.1225603998586715,51.494285187957416],[-3.122685856422848,51.49428929265539],[-3.122685856422846,51.494289292929686],[-3.1226858805911117,51.49428929347833],[-3.122685881469958,51.49428929347834],[-3.1228114334171266,51.494292030675375],[-3.122811445720972,51.494292030949694],[-3.1228114584642404,51.49429203122403],[-3.1228114584642417,51.49429203094972],[-3.1229370679927606,51.49429339982261],[-3.1229370802966074,51.49429339982262],[-3.122937093039877,51.49429340009694],[-3.1229370930398774,51.49429339982263],[-3.1230627205903874,51.494293399822624],[-3.123062720590388,51.49429340009693],[-3.1230627460769274,51.494293399822624],[-3.1230627465163505,51.49429339982261],[-3.123188355166024,51.49429203122402],[-3.123188368348716,51.494292030949694],[-3.123188380213139,51.49429203094967],[-3.123313932160308,51.49428929375263],[-3.123313957207419,51.49428929320397],[-3.1233139572074173,51.49428929292968],[-3.123439413771596,51.494285188231714],[-3.123439413771599,51.49428518850601],[-3.1235647613194497,51.4942797168561],[-3.1235647617588724,51.49427971685609],[-3.123564786366545,51.49427971575879],[-3.123564786366543,51.4942797154845],[-3.1236899365628963,51.494272880175046],[-3.1236899506244167,51.49427287935207],[-3.1236899616099807,51.49427287880341],[-3.1238149267475483,51.49426467901206],[-3.1238149267475417,51.49426467873777],[-3.123939618051977,51.49425512104895],[-3.1239396426596056,51.49425511885439],[-3.124064048255561,51.494244203817665],[-3.1240640482555646,51.49424420409195],[-3.124188179117702,51.49423193061094],[-3.124188179117686,51.49423193006235],[-3.1243118985751894,51.494218311579935],[-3.1243119139549242,51.494218309933984],[-3.1243119231827636,51.49421830883671],[-3.1244352422105686,51.494203343982576],[-3.12443524221058,51.49420334425688],[-3.124435262423925,51.494203341787966],[-3.1244352676969624,51.49420334096501],[-3.1245581493732995,51.49418703522682],[-3.1245581542069156,51.494187034403865],[-3.1245581739808257,51.49418703193494],[-3.124558173980816,51.49418703166064],[-3.1246805818234744,51.49416938942901],[-3.1246805980819934,51.49416938696011],[-3.1246806059915526,51.49416938586281],[-3.1248025017608683,51.49415041262574],[-3.1248025087915705,51.494150411528445],[-3.1248025259289123,51.494150408785224],[-3.124923872703711,51.494130110305115],[-3.1249238907198595,51.49413010701327],[-3.124923896871712,51.49413010591597],[-3.125044681459607,51.494108484114825],[-3.1250446814595976,51.49410848384052],[-3.1251648181645324,51.49408555408224],[-3.125164818603962,51.49408555435652],[-3.125164838817144,51.494085550241714],[-3.125164843211316,51.494085549418756],[-3.125284320159695,51.49406131417419],[-3.1252843205991225,51.49406131444847],[-3.1252843421305134,51.49406130978502],[-3.1252843443275995,51.49406130951066],[-3.1254031500854,51.494035770976446],[-3.1249224656162977,51.493188520826266],[-3.1250169040790645,51.49316706213676],[-3.1250169045184917,51.493167062411054],[-3.125016923413015,51.49316705774769],[-3.1251107474416586,51.4931445736735],[-3.1251107513963237,51.49314457285053],[-3.125110765896763,51.493144569284425],[-3.1252039473638193,51.493121066136325],[-3.125203958788388,51.49312106311885],[-3.1252039658188946,51.49312106147294],[-3.125296474839534,51.49309654693335],[-3.1252964801124046,51.49309654556178],[-3.125296493733985,51.493096541995655],[-3.1253883043782165,51.49307102292408],[-3.1259854567539147,51.49388889608145],[-3.1260993339506604,51.49385574497049],[-3.1260993396629915,51.49385574332456],[-3.126099357239397,51.49385573811247],[-3.1260993567999793,51.49385573811248],[-3.126212266145455,51.49382135861849],[-3.1262122665848753,51.49382135861848],[-3.126212284600628,51.493821352857765],[-3.1262122894341386,51.493821351486154],[-3.12632424322484,51.49378573949713],[-3.126324243224818,51.49378573922282],[-3.12643516280007,51.49374892025336],[-3.1264351693911694,51.49374891805879],[-3.126435185649223,51.493748912572386],[-3.126435185209803,51.49374891257241],[-3.126545058259889,51.493710890465884],[-3.1265450586993246,51.49371089074016],[-3.1266538948851035,51.493671661933384],[-3.126653894885083,51.493671661659086],[-3.12676157468281,51.49363126922327],[-3.126761588743691,51.493631263736894],[-3.1267615953347456,51.493631261268014],[-3.1268681297242726,51.49358970136578],[-3.126868129724306,51.49358970164008],[-3.1269735059580706,51.4935469794866],[-3.1269735235340668,51.49354697208002],[-3.12697352748868,51.493546970708394],[-3.1270776726214593,51.49350311538472],[-3.12789330491083,51.49424382103231],[-3.1280168132154134,51.49418982992075],[-3.128016819806408,51.494189826903195],[-3.1280168387006673,51.49418981867351],[-3.1280168382612046,51.49418981839923],[-3.128138794966576,51.49413450072832],[-3.1281387954060293,51.49413450100259],[-3.1282592343407507,51.494077840043545],[-3.1282592339012707,51.49407783949497],[-3.1283780210446026,51.494019898895324],[-3.1283780214840595,51.4940198991696],[-3.128495195938463,51.493960660280344],[-3.128495206483879,51.493960654793916],[-3.128495218347492,51.49396064875885],[-3.1286107181547873,51.493900142034605],[-3.1286107177153286,51.49390014176032],[-3.128724484873305,51.49383839875293],[-3.128724485312761,51.49383839902721],[-3.128836553212551,51.49377540081356],[-3.1288365523336483,51.493775400265015],[-3.1289467961876247,51.493711217076104],[-3.1289467966270723,51.49371121735037],[-3.128946815520532,51.49371120582898],[-3.1289468190356295,51.49371120390873],[-3.1290552735541133,51.49364581572424],[-3.129055273114663,51.493645815449966],[-3.129161862284112,51.4935792689092],[-3.1291618745866976,51.49357926095396],[-3.1291618842530395,51.493579254918934],[-3.1292665962101096,51.49351155661065],[-3.1292666010432226,51.49351155331885],[-3.1292666159820346,51.49351154371767],[-3.1292666155425803,51.4935115434434],[-3.12936941909222,51.49344271476941],[-3.129369425243457,51.49344271065463],[-3.1293694401821517,51.49344270050486],[-3.1293694397426934,51.49344270023058],[-3.129470302372235,51.493372762318465],[-3.1294703028116775,51.49337276259274],[-3.129569233749326,51.493301707766676],[-3.1295692333098706,51.49330170749239],[-3.129666121836984,51.49322961558372],[-3.129666123594429,51.49322961421214],[-3.1296661420477685,51.49322960049627],[-3.129666141608322,51.493229600221994],[-3.1297610013483665,51.493156462457485],[-3.130887947579347,51.493715918419404],[-3.130996234366042,51.49362938075574],[-3.130996234805503,51.49362938103001],[-3.131102087489884,51.493541675205286],[-3.1311020989129523,51.493541665329836],[-3.1311021072606358,51.49354165847185],[-3.131205469611728,51.493452830852604],[-3.131205477519911,51.49345282372035],[-3.1312054907003444,51.49345281247327],[-3.131205490260874,51.49345281219901],[-3.131306372390705,51.49336285511075],[-3.1313063719512346,51.49336285483649],[-3.1314047035722283,51.493271829733004],[-3.1314047040116857,51.49327183000727],[-3.1314047171917214,51.4932718171144],[-3.131404722463823,51.493271812450985],[-3.1315004943584754,51.49317972948825],[-3.131500496115763,51.49317972756805],[-3.131500513689152,51.493179710834696],[-3.1315005132496814,51.49317971056043],[-3.131593714004126,51.49308658044305],[-3.1303659515864024,51.49261703600908],[-3.130443579467478,51.49253636850802],[-3.1304435803463275,51.49253636878226],[-3.1305189571788485,51.49245485078004],[-3.1305189668440017,51.49245484008187],[-3.130518971237245,51.492454835144265],[-3.1305920566106766,51.49237250834083],[-3.1305920557318214,51.492372508066595],[-3.1306628276889956,51.4922893990744],[-3.130662827249544,51.49228939880014],[-3.1307312515327386,51.49220554739855],[-3.130731262076138,51.49220553395734],[-3.1307312642726917,51.49220553121423],[-3.1307973334232444,51.4921209470082],[-3.1307973448450386,51.492120931372554],[-3.1307973466023182,51.49212092945236],[-3.1308610408615034,51.49203563823104],[-3.130861050086764,51.49203562561277],[-3.1308610527225085,51.492035621772445],[-3.1309223523321044,51.49194964932483],[-3.1309223567249687,51.49194964274142],[-3.1309223646322852,51.49194963176903],[-3.1309812502743077,51.49186300580411],[-3.132311543730522,51.49220687045132],[-3.132242839775174,51.492307944768115],[-3.1321713104306887,51.49240826851472],[-3.1321713042806723,51.4924082767441],[-3.1320969815995157,51.49250780437972],[-3.1333966517758967,51.492894647324675],[-3.133481589503662,51.49278090032191],[-3.133481592139237,51.49278089648154],[-3.1334816057567476,51.492780878376756],[-3.133481605317271,51.49278087810249],[-3.133563332546255,51.49266624671945],[-3.1348838548059073,51.493024523358116],[-3.1349722100176947,51.49289452836024],[-3.134972209138806,51.49289452808603],[-3.1350568822493203,51.49276364193411],[-3.1350568831281995,51.49276364220832],[-3.1351378996400263,51.49263182842621],[-3.1351379075457126,51.49263181471059],[-3.135137915890873,51.492631801269205],[-3.1352152336649732,51.49249912460273],[-3.1338579036294525,51.4921992291832],[-3.133923313364192,51.49208058718843],[-3.1339233181954462,51.49208057813622],[-3.1339233265404123,51.49208056277484],[-3.133985407748085,51.4919612276317],[-3.1339854086269563,51.49196122790592],[-3.134044168357838,51.491841185355604],[-3.134099540758054,51.49172056899161],[-3.134099547784564,51.49172055308175],[-3.1340995517369525,51.491720544029604],[-3.134151542980056,51.49159934288426],[-3.1341515434193203,51.49159934233562],[-3.134151553080436,51.491599319293805],[-3.134200147382088,51.49147757012879],[-3.1342001482608834,51.49147757012871],[-3.1342453412554825,51.49135528474338],[-3.1342453456462636,51.49135527185103],[-3.1342453495981863,51.491355261153096],[-3.1342871079391634,51.49123252732941],[-3.135698057834607,51.4914115792619],[-3.1357411731034484,51.4912729857791],[-3.1357411783710587,51.49127296740066],[-3.135741181443986,51.49127295725137],[-3.135780407707607,51.491133941756736],[-3.1357804120967785,51.49113392474989],[-3.135780414730449,51.49113391514922],[-3.1358157480731146,51.49099449328197],[-3.1358157502673807,51.490994483681355],[-3.135815755095302,51.49099446448007],[-3.1358471845789744,51.490854679035124],[-3.1358471867725313,51.490854666965845],[-3.135847190283488,51.490854652153445],[-3.135874706727977,51.49071454537658],[-3.135874707606751,51.49071454537649],[-3.135898307976346,51.49057413345427],[-3.135898307976192,51.490574132905664],[-3.135898312801481,51.4905741046526],[-3.135898311922706,51.4905741046527],[-3.1359179791441574,51.49043348386739],[-3.135917980462315,51.49043348386724],[-3.1359337193935755,51.49029261417301],[-3.134496614648247,51.490237894126295],[-3.134507101521279,51.49011259310383],[-3.1345071024000446,51.49011259310376],[-3.1345140873133808,51.48998717310252],[-3.134514087747719,51.48998715307884],[-3.1345140881856497,51.48998714731857],[-3.134517563720224,51.48986169419472],[-3.1345175645989847,51.489861694194644],[-3.134517532978096,51.489736198073594],[-3.1345175334174753,51.48973619807355],[-3.1345175329741566,51.48973618243869],[-3.1345175329715995,51.489736172289724],[-3.1345139933676984,51.48961072176932],[-3.1345139938070763,51.48961072176929],[-3.134513992924935,51.48961070832884],[-3.134513992482447,51.48961069598555],[-3.134513992043069,51.48961069598558],[-3.1345069449208904,51.489485277076355],[-3.1345069444815135,51.4894852770764],[-3.1344963920825855,51.48935995259138],[-3.133059343409227,51.48941495765938],[-3.133068575135944,51.48952463788535],[-3.133074737420193,51.489634364179764],[-3.1330778311216694,51.48974415025781],[-3.133077855335161,51.48985397637049],[-3.13307481002083,51.48996376214893],[-3.1330686951553592,51.49007350210695],[-3.133059512031005,51.49018317896331],[-3.1330472689537143,51.490292700278665],[-3.131611917857042,51.4902222958501],[-3.1315987922066824,51.49031607986782],[-3.1315830516827976,51.490409677826634],[-3.1315646931969963,51.490503106732135],[-3.1315437268299586,51.49059631638609],[-3.1315437263908277,51.490596317757614],[-3.1315201595903748,51.490689275242545],[-3.1314939984884003,51.49078195861273],[-3.131465244386696,51.49087436210613],[-3.131433917030876,51.49096642180834],[-3.1314339161525964,51.490966424551374],[-3.131400017284376,51.491058134974324],[-3.1313635525980477,51.49114947910901],[-3.1313245528229374,51.49124038151937],[-3.131283006086561,51.49133087073052],[-3.131238944437628,51.49142087377473],[-3.1311923590783626,51.491510410673406],[-3.131143297434188,51.49159939117677],[-3.1297860212754314,51.49129944859065],[-3.1297860203968466,51.49129944996218],[-3.1298269164916346,51.491225283326585],[-3.129826915612803,51.491225283052344],[-3.129865723517352,51.49115070041615],[-3.1299024476329027,51.49107568971208],[-3.129902448950626,51.49107568669475],[-3.1299024546609804,51.49107567517396],[-3.1299370686415604,51.491000290990534],[-3.1299695764501574,51.490924525923354],[-3.129969577767865,51.49092452290601],[-3.1299695825994065,51.49092451138528],[-3.129999960966176,51.49084841892526],[-3.1299999622838905,51.49084841590793],[-3.1299999671152476,51.49084840329001],[-3.1300282134151196,51.490771991667856],[-3.1300282147327425,51.490771988101926],[-3.130028218685557,51.49077197712983],[-3.1300543245837638,51.490695269114184],[-3.1300543250228974,51.490695267468375],[-3.1300543298540147,51.49069525347897],[-3.130078286576924,51.49061827403274],[-3.1300782878944537,51.49061826991822],[-3.130078291407728,51.490618258123256],[-3.130100092817649,51.49054102836896],[-3.130100095013351,51.490541020414234],[-3.130100096769832,51.490541013556715],[-3.1301197358509514,51.49046355790835],[-3.130119736289912,51.49046355516535],[-3.1301197398029514,51.490463541998906],[-3.130137209978872,51.49038588404744],[-3.1301372117350006,51.490385874995546],[-3.1301372130522593,51.490385869235254],[-3.1301525103830774,51.490308032845675],[-3.1301656339998414,51.49023001088719],[-3.130165633121072,51.49023001088724],[-3.130176569866646,51.49015188866756],[-3.1301765711828136,51.49015187604984],[-3.13017657162181,51.49015187358115],[-3.1301853219456306,51.490073644243445],[-3.130185321945331,51.490073642323374],[-3.1301853237006174,51.49007362805984],[-3.1301918854206985,51.489995315468526],[-3.130191886297305,51.48999530175366],[-3.1301918862970894,51.48999530038217],[-3.1301962581101734,51.48991692785292],[-3.1301962589864307,51.48991691194365],[-3.1301984391500466,51.48983850361487],[-3.1301984272375165,51.489760068538466],[-3.1301984267956313,51.4897600526293],[-3.130196222387541,51.48968164593893],[-3.1301962219469965,51.48968163853296],[-3.1301962215062358,51.48968162975549],[-3.130191825054279,51.48960325803412],[-3.1301918250540637,51.489603256662626],[-3.1301918241731497,51.48960324294786],[-3.130191823733772,51.489603242947894],[-3.130185237449985,51.48952493088181],[-3.13018523788936,51.48952493088178],[-3.1301764617862124,51.48944668642522],[-3.1301764600270285,51.48944667572776],[-3.1301764595869623,51.489446671339046],[-3.1301654993963273,51.489368550447665],[-3.1301654980772975,51.48936854468752],[-3.1301654967575785,51.48936853453862],[-3.1301523516107004,51.48929053008015],[-3.130152351171327,51.48929053008017],[-3.1301370303144886,51.48921269554114],[-3.130137029434972,51.48921269060384],[-3.1301370272365148,51.48921268045502],[-3.130119532878957,51.48913502488621],[-3.1301195333183296,51.489135024886195],[-3.1301195298012927,51.48913501172016],[-3.1301195293614934,51.48913500897723],[-3.130099862833521,51.48905754088082],[-3.130099862394147,51.48905754088083],[-3.1300780333785623,51.488980297833756],[-3.1300780329391893,51.488980297833784],[-3.130054053315873,51.48890332015572],[-3.1300540506785017,51.488903312749876],[-3.1300540484804995,51.488903305344],[-3.130027920018579,51.48882660071385],[-3.1300279156231006,51.48882658919365],[-3.130027914304354,51.48882658507929],[-3.1299996462446416,51.48875017763315],[-3.1299996440470346,51.488750172695944],[-3.12999964009107,51.48875016199862],[-3.129969239476992,51.48867407367826],[-3.1299692399163175,51.48867407340394],[-3.129936711152892,51.48859831298496],[-3.129936704559993,51.48859829735045],[-3.129902068754708,51.488522917494784],[-3.1299020691940354,51.48852291722046],[-3.129902062601454,51.488522903506016],[-3.129902062162,51.48852290295745],[-3.1298653254767976,51.488447911891775],[-3.1298653259161284,51.488447911617456],[-3.1298653193237267,51.4884478990002],[-3.129865318005217,51.48844789625731],[-3.1298264909978535,51.48837331784284],[-3.12982648836104,51.48837331372855],[-3.1298264826475988,51.48837330248273],[-3.12978557631449,51.488299157563326],[-3.129785571480203,51.4882991490604],[-3.1297855679644284,51.48829914330038],[-3.1297425862700097,51.48822544010256],[-3.128394087703745,51.48854028298485],[-3.1284284761160954,51.48859925432988],[-3.128461207799888,51.48865858534415],[-3.128461208239325,51.48865858589273],[-3.128492269125961,51.48871825079438],[-3.128521664483246,51.48877825973346],[-3.12854937672606,51.48883857650491],[-3.128575398816722,51.48889918766971],[-3.128599721079747,51.48896006799416],[-3.1286223373558286,51.489021203490466],[-3.1286432419246917,51.48908257825071],[-3.1272324251823336,51.4892618339076],[-3.1272167506367574,51.489215810810876],[-3.127199788772866,51.489169956450155],[-3.1271997878939213,51.489169954255814],[-3.1271997852570195,51.489169947124196],[-3.127181547944522,51.48912429359118],[-3.127181544428832,51.489124285911004],[-3.1271815439893564,51.48912428481384],[-3.1271620329897525,51.48907883677092],[-3.127162032989699,51.489078836222326],[-3.12716202903454,51.48907882744497],[-3.127141250503843,51.48903359888043],[-3.127141247427613,51.48903359202313],[-3.1271412465486947,51.489033590103084],[-3.12711920708221,51.488988595005125],[-3.127095908441221,51.488943838036036],[-3.1270959036073234,51.488943828984425],[-3.1270713620546964,51.488899341412704],[-3.1270713594180553,51.488899336749746],[-3.127071357220857,51.488899332909675],[-3.12704557012318,51.48885511034588],[-3.1256970344074917,51.489169922185226],[-3.1256790262719365,51.489140638154524],[-3.125679024953702,51.48914063623448],[-3.1256790227566134,51.489140632394374],[-3.125660198300239,51.48911154916432],[-3.1256601987395998,51.489111548890016],[-3.125640556645429,51.489082663442986],[-3.1256405562060783,51.48908266371729],[-3.1256201180064886,51.48905400787079],[-3.1255988731569864,51.48902556818411],[-3.1255768453865844,51.488997375377515],[-3.1255768431895414,51.488997372086004],[-3.1255768409925597,51.48899736989169],[-3.125554023711321,51.488969415735966],[-3.1255304331781795,51.48894171997971],[-3.125530429223568,51.48894171504245],[-3.125530428784177,51.48894171476817],[-3.1255060623637485,51.48891427439365],[-3.1255060623637556,51.48891427466794],[-3.125480938511713,51.48888710997226],[-3.1254809367541276,51.48888710805222],[-3.125480933238964,51.48888710448645],[-3.1254550537137926,51.48886021738915],[-3.1254550528350027,51.48886021656629],[-3.1254550484410695,51.48886021217762],[-3.1254284211527517,51.488833611181256],[-3.127856832423291,51.487867672623814],[-3.1278020859875317,51.48781504943602],[-3.1278020842299172,51.48781504779032],[-3.1278020750024482,51.48781503928749],[-3.1277458771101228,51.487763031379615],[-3.1277458749130993,51.48776302918533],[-3.127745865685643,51.487763020682515],[-3.1277458652462857,51.48776302068253],[-3.1276882229304284,51.48771163381245],[-3.127688222930399,51.48771163353815],[-3.1276882163394415,51.48771162805248],[-3.127688211066613,51.487711623115345],[-3.1276291401480707,51.487660870995164],[-3.1276291401480534,51.487660870720866],[-3.1275686485383054,51.48761076075411],[-3.127568648538273,51.487610760479825],[-3.127568637992805,51.48761075197704],[-3.127568635795819,51.487610750057044],[-3.127506763921304,51.48756131597849],[-3.127506764360665,51.48756131597846],[-3.1275067538152816,51.48756130802427],[-3.127506752497067,51.487561306652836],[-3.1274435082685192,51.48751255422023],[-3.127443508268492,51.487512553945926],[-3.1274434964049758,51.48751254516888],[-3.1274434950867995,51.487512544071755],[-3.1273788855360247,51.48746447876856],[-3.1262841826853824,51.48804824917819],[-3.1262347351312085,51.48801274012005],[-3.12623472502537,51.488012732988615],[-3.1261842824296493,51.48797776128339],[-3.126184281990278,51.4879777612834],[-3.1261328799434915,51.487943351066974],[-3.126080513612734,51.48790949959525],[-3.1271073257921094,51.487279481578575],[-3.127036238078481,51.48723510532633],[-3.125018129493359,51.48851731967881],[-3.124981984853325,51.488495530452745],[-3.1249819795807676,51.488495527161284],[-3.1249819773838805,51.48849552606414],[-3.124945229983457,51.488474134018226],[-3.124945225589688,51.488474131549616],[-3.1249452225140306,51.488474129629616],[-3.1249078820194587,51.488453141071965],[-3.1249078771863057,51.48845313832908],[-3.1249078749894212,51.48845313695762],[-3.124869945794269,51.48843255408199],[-3.1248699457942823,51.48843255435628],[-3.1248314551396676,51.48841239197367],[-3.124831453382164,51.48841239115081],[-3.1248314472309078,51.48841238785934],[-3.1247923990708846,51.48839264816352],[-3.1247923916015248,51.48839264459778],[-3.124792391162138,51.488392644049185],[-3.124752797359482,51.488373333073945],[-3.124752797359467,51.488373332799654],[-3.1247126535200094,51.48835444835013],[-3.1247126530806315,51.488354448350144],[-3.124672003141252,51.488336010997415],[-3.1246719969900405,51.488336008528826],[-3.124671995671924,51.48833600770596],[-3.1246308308446022,51.48831801388375],[-3.1246308361170603,51.48831801607804],[-3.126261660150284,51.48683650980517],[-3.126178334273517,51.48680142406999],[-3.1261783347128502,51.48680142379569],[-3.126178323289417,51.48680141940725],[-3.1261783171383084,51.48680141666445],[-3.1260940235615746,51.486767244028805],[-3.1260940235615835,51.48676724430311],[-3.1260088049000885,51.48673400177026],[-3.1260088053394437,51.48673400177025],[-3.126008790401151,51.4867339962847],[-3.1260087873256133,51.4867339949133],[-3.125922651045324,51.486701685498296],[-3.1259226448942874,51.48670168330408],[-3.1259226352283567,51.486701679738474],[-3.125835608566256,51.48667031331333],[-3.125835601097157,51.48667031084485],[-3.1258355905525224,51.48667030700496],[-3.1257477025027915,51.486639894538904],[-3.1257476981092154,51.48663989316752],[-3.1257476844891015,51.486639888504804],[-3.1256589600913345,51.486610438224254],[-3.125658960091321,51.486610437949956],[-3.125658943835097,51.486610432738686],[-3.1256589416383167,51.48661043219013],[-3.1255693892363365,51.48658194711028],[-3.1255693887970026,51.486581947384586],[-3.125479070335898,51.48655444725159],[-3.125479065502993,51.4865544458802],[-3.1254790514436106,51.48655444176605],[-3.1253879800996063,51.48652793069234],[-3.125387973509283,51.486527928772404],[-3.1253879616466853,51.4865279252068],[-3.1252961628977647,51.48650241059612],[-3.1252961628977576,51.48650241032182],[-3.1252961444448966,51.48650240565914],[-3.1252961440055316,51.486502405384854],[-3.1252036464048767,51.48647789464101],[-3.1252036464048616,51.48647789436671],[-3.125110456098437,51.48645438940804],[-3.1251104394030347,51.48645438529389],[-3.125016625803489,51.48643190422109],[-3.12501661701645,51.48643190230117],[-3.1250166064719873,51.48643189955839],[-3.1249221809970664,51.4864104448385],[-3.125402705120669,51.485563175856555],[-3.125283919269114,51.48553764203257],[-3.125283905649471,51.48553763928985],[-3.12528389510523,51.48553763709569],[-3.1251644381385746,51.48551340662143],[-3.1251644337451476,51.48551340579862],[-3.125164413535371,51.485513401684535],[-3.1251644135353858,51.48551340195883],[-3.1250442946706314,51.48549047592932],[-3.1250442951099617,51.485490475655006],[-3.124923507308377,51.48546885379405],[-3.124538816277276,51.48633498573066],[-3.1246354349262413,51.48635228129473],[-3.1247315616195745,51.486370628165396],[-3.1248271313394116,51.48639001345299],[-3.124827132218109,51.48639001345296],[-3.1249221616656,51.48641044045008],[-3.124441624563087,51.48725770816285],[-3.1243703654788995,51.48724239064956],[-3.124370350980082,51.48724238763247],[-3.1242986596402047,51.48722784579139],[-3.1242265861281298,51.48721408977019],[-3.1242265738261272,51.48721408757594],[-3.1242265729474177,51.487214087575964],[-3.12415412560757,51.48720111874533],[-3.1240813141023547,51.48718893902461],[-3.1240813114662194,51.48718893875034],[-3.124081299164236,51.48718893655607],[-3.1240081726981024,51.48717755444733],[-3.1240081612748445,51.48717755280165],[-3.1240081577599934,51.4871775522531],[-3.123934709739002,51.48716696638431],[-3.123860976626065,51.48715718251485],[-3.1237869948839765,51.487148205032696],[-3.1237869874149347,51.48714820420985],[-3.123786979506541,51.487148203387015],[-3.123712744737983,51.487140031743124],[-3.1237127447379884,51.487140032017415],[-3.123638307904341,51.48713267197127],[-3.1238510917158155,51.48624372821176],[-3.1237515652661965,51.486234996109665],[-3.1237515652661916,51.486234995835375],[-3.12365180689562,51.486227349316195],[-3.1238147662176403,51.485334310775734],[-3.123689809867364,51.48532611202657],[-3.123689826122843,51.48532611284935],[-3.123827793782886,51.484431434551276],[-3.1236775855536876,51.484423230477425],[-3.1235646501657874,51.48531927585117],[-3.1236898002019404,51.48532611120374],[-3.1235518324135545,51.4862207894765],[-3.1236517893217774,51.48622734794482],[-3.123488828026295,51.48712038639634],[-3.1235636514275487,51.48712612160246],[-3.1236382925269237,51.48713267059986],[-3.1234255057120985,51.48802161411205],[-3.1234751515645147,51.488026522732596],[-3.1235246322333206,51.488031969502686],[-3.1235739644160057,51.48803795579397],[-3.123286941145941,51.48891872796341],[-3.12326227964929,51.488915735446184],[-3.123237533797961,51.488913011460234],[-3.1232375329192195,51.488913011460234],[-3.123237528525501,51.48891301091165],[-3.123212715454565,51.48891055737696],[-3.123187832527362,51.488908374293494],[-3.1231878294517603,51.4889083740192],[-3.123187827254904,51.4889083737449],[-3.123162891606485,51.488906462484096],[-3.123137901478932,51.48890482277157],[-3.123112869613573,51.488903455430226],[-3.1231128643411155,51.48890345515593],[-3.1230878030399047,51.488902361282875],[-3.1230627101055357,51.48890154005523],[-3.1230375969612156,51.488900992570144],[-3.123012468000207,51.4889007188276],[-3.122987340357538,51.4889007188276],[-3.1229622219414397,51.48890099257014],[-3.1229371087971196,51.48890154005523],[-3.122937105282149,51.488901540329536],[-3.122937104403406,51.48890154032952],[-3.1229120158627515,51.48890236100859],[-3.1228869492890827,51.48890345515593],[-3.122861912151267,51.488904822771566],[-3.1228369272961722,51.4889064622098],[-3.122811986375298,51.488908373744906],[-3.122787098175635,51.488910557376954],[-3.1227622851046974,51.48891301091165],[-3.1227622807109805,51.48891301146024],[-3.122762279832238,51.488913011460234],[-3.122737539253369,51.4889157348976],[-3.122712868090543,51.48891872851199],[-3.1226882940237584,51.48892198956056],[-3.122663805189562,51.4889255188662],[-3.1226394239955177,51.488929313960384],[-3.1226151574711793,51.48893337319741],[-3.122591003419307,51.488937696851664],[-3.122566972823808,51.48894228327744],[-3.122566970626945,51.488942283826034],[-3.1225669688694584,51.48894228410032],[-3.1225430700780348,51.48894713192626],[-3.1225193162715197,51.48895223786096],[-3.122519311438412,51.48895223895811],[-3.122495704373926,51.488957603001644],[-3.119470877934815,51.483906176615776],[-3.119636129508067,51.483868628600746],[-3.119802427589516,51.483832881962286],[-3.119969709372331,51.483798950957734],[-3.1201378830548534,51.48376685340999],[-3.1203069332790268,51.48373659205785],[-3.1204768503982683,51.48370816936601],[-3.120647465730734,51.48368161303135],[-3.12064746748803,51.483681612757074],[-3.120818862328346,51.48365691043469],[-3.1209909031417666,51.483634081593976],[-3.1211635104310655,51.48361313637985],[-3.121336731224288,51.48359406875598],[-3.121510452636328,51.48357689161018],[-3.1216846087899732,51.483561611796894],[-3.121859162364232,51.48354823178256],[-3.122034085263985,51.48353675458239],[-3.122209261090978,51.48352718705141],[-3.1223847236946356,51.48351952726859],[-3.1225603729318836,51.48351378044391],[-3.122736128868547,51.483509948770745],[-3.122911963410241,51.483508032797175],[-3.12308786120288,51.48350803279717],[-3.123263694426617,51.483509949045015],[-3.1234394411375686,51.48351378016962],[-3.1234394406982515,51.48351378044391],[-3.123615089935499,51.483519527268584],[-3.123790552539152,51.48352718677711],[-3.123790552978472,51.483527186777096],[-3.1239657560433214,51.48353675595363],[-3.1241037129045393,51.48264207733074],[-3.124303605548892,51.48265519324964],[-3.136505999660156,51.415676193711256]],[[-3.130203952752984,51.49277580769445],[-3.130119654717096,51.49285384027377],[-3.128932964354688,51.49234481366014],[-3.1290032029530668,51.49227979718667],[-3.129003214815485,51.49227978593991],[-3.1290032161335106,51.49227978456836],[-3.129071626954106,51.49221401273454],[-3.1302860476068113,51.49269687741845],[-3.130203952752984,51.49277580769445]],[[-3.1297430510375497,51.491373169050036],[-3.129698042669619,51.49144638462949],[-3.1296980391553086,51.49144639038993],[-3.1296509759555664,51.49151912577472],[-3.1296509763949913,51.49151912604899],[-3.129601902285207,51.491591314580205],[-3.1295508080324006,51.491662971342144],[-3.128240585146455,51.491290306251685],[-3.1282814540515664,51.49123299237885],[-3.128281455369521,51.49123299045871],[-3.1282814623986734,51.49123298058372],[-3.1283207220928877,51.49117523091209],[-3.1283207278039473,51.491175221860054],[-3.128320730000554,51.49117521884269],[-3.128358369505896,51.49111704928356],[-3.1283583699453312,51.49111704955784],[-3.1283943919027726,51.49105845544961],[-3.128428756340616,51.490999501529544],[-3.1297860133684527,51.49129946285451],[-3.1297430510375497,51.491373169050036]],[[-3.127579247494871,51.49326715021018],[-3.127481616031034,51.49331650839057],[-3.12738259966048,51.49336480528863],[-3.127282265173565,51.49341200743424],[-3.1271806020279906,51.49345812031042],[-3.1270776923943706,51.49350310660654],[-3.1262620825866807,51.49276239656504],[-3.1263444211299642,51.49272640327535],[-3.126344420690535,51.492726403001065],[-3.1264257237933393,51.492689525626474],[-3.126425724232768,51.492689525900765],[-3.1265059989231467,51.49265176087738],[-3.126506004635237,51.49265175813426],[-3.1265060156200155,51.492651752922285],[-3.126585205653794,51.49261312686066],[-3.126585206093227,51.49261312713494],[-3.1266633215747173,51.49257363564818],[-3.126663328604931,51.492573632082106],[-3.126663336513925,51.49257362796741],[-3.1267403198815584,51.492533299586306],[-3.127675493170836,51.4932167307509],[-3.127579247494871,51.49326715021018]],[[-3.12731340462681,51.49218170577075],[-3.1273134041873734,51.492181705496456],[-3.127246149571722,51.49222833888051],[-3.1261845467956157,51.49162114369728],[-3.126133126475859,51.491655569004514],[-3.12613312427897,51.49165557037606],[-3.126080757379829,51.49168942487464],[-3.1271077637448337,51.492319381672765],[-3.1270367045909193,51.492363745266466],[-3.1269644021553966,51.492407336440266],[-3.1269644017159552,51.49240733616599],[-3.1268908762104077,51.49245014147643],[-3.1268161948610826,51.492492122517554],[-3.12681619442166,51.49249212224328],[-3.1267403352600858,51.49253329108263],[-3.1258051864220358,51.491849854576586],[-3.1257474260857787,51.49188011248],[-3.1256888400024216,51.491909730440284],[-3.125629434763677,51.491938705438834],[-3.125569240688331,51.49196702321031],[-3.125508251186671,51.49199468677094],[-3.1254464992141573,51.49202168103248],[-3.1246309418360183,51.4912809597349],[-3.124672110651466,51.49126296339095],[-3.124712760933244,51.49124452514855],[-3.1247127613726535,51.49124452542285],[-3.1247529067412025,51.49122563952212],[-3.124792509408824,51.49120632324481],[-3.1248315588298508,51.49118658207758],[-3.1248315623449145,51.491186580157446],[-3.1248315662993775,51.491186578237304],[-3.1248700655491186,51.491166410534866],[-3.124907987385478,51.491145830561585],[-3.124907988703614,51.49114582973868],[-3.1249079944156053,51.49114582672133],[-3.124945342792775,51.49112483255767],[-3.124982090029459,51.491103439016605],[-3.1249820904688534,51.49110343929089],[-3.1250182493070264,51.49108164006396],[-3.125053778884163,51.49105945874193],[-3.125088696775503,51.491036885176065],[-3.125088696336098,51.491036884901774],[-3.125122971785142,51.49101393856822],[-3.125156592928826,51.49099062714807],[-3.1251565968832127,51.49099062440503],[-3.1251565995194692,51.490990622484915],[-3.125189570751749,51.49096694323566],[-3.12522186746782,51.490942913987595],[-3.125253494940499,51.490918530626715],[-3.125284435155806,51.490893807143024],[-3.1253146802054625,51.490868749846044],[-3.1253442195450347,51.4908433672397],[-3.125373044387645,51.490817666730706],[-3.125373050538815,51.490817661244655],[-3.12540115253708,51.49079165051401],[-3.125428523343665,51.49076533724268],[-3.125455154171978,51.490738729934584],[-3.125481032281244,51.49071184175668],[-3.1255061598691185,51.490684670240775],[-3.1255305233162183,51.49065722965105],[-3.1255541160331055,51.49062952739412],[-3.1255541177905375,51.49062952547401],[-3.125554120866038,51.49062952163379],[-3.1255769309910337,51.49060157224808],[-3.1255769327484564,51.490601569779386],[-3.1255769353846032,51.49060156676207],[-3.125598965554946,51.49057336723072],[-3.125620199076147,51.490544937578186],[-3.125620202151615,51.49054493346368],[-3.1256202030303166,51.49054493209219],[-3.1256406390249687,51.490516275610474],[-3.125640642100401,51.49051627094735],[-3.1256406429791066,51.490516269850154],[-3.125660278372858,51.49048738955701],[-3.125679099547143,51.49045830520247],[-3.1256971082606615,51.49042901459254],[-3.125714295727882,51.49039953199119],[-3.1257306557993485,51.4903698669993],[-3.127096056505354,51.49065502671313],[-3.1270715193235197,51.49069952064332],[-3.127045742553273,51.49074373976579],[-3.127018725752017,51.49078768325685],[-3.1269904882471407,51.49083132066805],[-3.1269610423369913,51.4908746325231],[-3.1269303774747286,51.49091763473064],[-3.1268985208964417,51.490960288064414],[-3.1268654800684454,51.49100258374571],[-3.1268312606996815,51.49104451436739],[-3.1267958689385518,51.49108607169929],[-3.1267593298257905,51.49112722776134],[-3.126721632375313,51.4911679929761],[-3.1267216319359403,51.49116799325042],[-3.126682813490828,51.49120832784263],[-3.1266428617472455,51.491248245252066],[-3.1266018140488723,51.491287707623556],[-3.126559652819634,51.49132673223714],[-3.1265164246304087,51.49136527547712],[-3.126472114541522,51.49140335188048],[-3.1264267480348225,51.491440937855764],[-3.126380330381621,51.49147802956144],[-3.12633288926123,51.4915146050518],[-3.1262844338996314,51.49155065719361],[-3.1273793324808774,51.49213435593519],[-3.12731340462681,51.49218170577075]],[[-3.123815380506196,51.489058758786676],[-3.1237945527656477,51.489049988847334],[-3.123794548371877,51.4890499869273],[-3.1237734745944814,51.48904144328049],[-3.1237521692794648,51.489033132234816],[-3.1237306262753664,51.48902505132152],[-3.123708868868879,51.48901720959209],[-3.123708867550753,51.48901720904351],[-3.1237088640357547,51.48901720794635],[-3.1236868913478784,51.48900960430351],[-3.1236647051358837,51.48900223984432],[-3.1236647033783873,51.48900223929574],[-3.1236647003027675,51.489002238472885],[-3.123642315505127,51.48899511813446],[-3.123642311550758,51.48899511676299],[-3.123619730803459,51.488988241368126],[-3.1236197281672218,51.488988240819545],[-3.123619725970349,51.48898823999668],[-3.123596952788099,51.4889816106424],[-3.1235740021093226,51.48897523144298],[-3.123550871736844,51.48896910212404],[-3.1235508682218605,51.48896910130116],[-3.1235508669037415,51.48896910102687],[-3.123527573094064,51.488963225702655],[-3.123504114528748,51.4889576040988],[-3.1234805021917866,51.48895223895811],[-3.123480497358682,51.48895223786096],[-3.1234567435521603,51.48894713165196],[-3.1239135628134775,51.48809476237694],[-3.123961079753454,51.48810497625226],[-3.124008303231091,51.48811570633693],[-3.1240552161124966,51.488126948517014],[-3.1241018096116857,51.48813870059863],[-3.1241480670340196,51.48815095819354],[-3.1241939857445966,51.48816372130217],[-3.124193986183962,51.48816372130217],[-3.1242395275196375,51.48817697867917],[-3.124284701147669,51.48819073306783],[-3.124329470601614,51.48820497349713],[-3.1243738451092695,51.48821970298469],[-3.1244178000669813,51.48823491302804],[-3.1244613284458262,51.48825060170766],[-3.1245043977332987,51.48826675695541],[-3.1245044008089033,51.48826675832685],[-3.1245470224294927,51.48828338453183],[-3.124589170021745,51.48830047154586],[-3.1246308277689874,51.488318012512295],[-3.123815380506196,51.489058758786676]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231464567122256,51.48980029768287],[-3.122999906539917,51.48979949951172]],[[-3.1229999305416225,51.489799503960434],[-3.1229999270265814,51.48979950341185],[-3.1229999388898397,51.489799505606214],[-3.123011993717521,51.489801878818696],[-3.122999906539917,51.48979949951172],[-3.1229999169208416,51.48979950149177],[-3.122999906539917,51.48979949951172],[-3.1229999208752637,51.48979950231466],[-3.12299992570844,51.489799503137554],[-3.122999924390299,51.48979950286326],[-3.1229999199964986,51.48979950204036],[-3.1230850147300266,51.48981423419881],[-3.1229999305416225,51.489799503960434]],[[-3.122999920435883,51.48979950286326],[-3.122999906539917,51.48979949951172],[-3.123075026306517,51.48981610627907],[-3.122999920435883,51.48979950286326]],[[-3.1229999191177393,51.48979950615481],[-3.122999906539917,51.48979949951172],[-3.123063133628365,51.48983203742523],[-3.1229999191177393,51.48979950615481]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230603334095375,51.48979520133038],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999147239456,51.48979949490866],[-3.1229999173602216,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999913845187,51.489799495731546],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999917799598,51.489799493811475],[-3.1230596413531124,51.48976983686138],[-3.122999906539917,51.48979949951172]],[[-3.1229999186783646,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.1230555586620694,51.489789864346236],[-3.1229999186783646,51.48979949737732]],[[-3.122999917360222,51.489799493811475],[-3.123004784371165,51.489796989210255],[-3.122999917799598,51.489799493811475],[-3.1229999151633288,51.48979949490866],[-3.122999914723944,51.48979949518295],[-3.122999906539917,51.48979949951172],[-3.122999919117746,51.48979949271428],[-3.1230399110185996,51.489778169722406],[-3.122999917360222,51.489799493811475]],[[-3.122999919557122,51.489799499023114],[-3.122999906539917,51.48979949951172],[-3.1230332201591526,51.489798227379914],[-3.122999919557122,51.489799499023114]],[[-3.1229999191177393,51.48979950258895],[-3.122999920435883,51.48979950286326],[-3.12302874683752,51.48980623107792],[-3.1229999191177393,51.48979950258895]],[[-3.122999912966419,51.48979949381147],[-3.1229999125270416,51.489799494085766],[-3.122999906539917,51.48979949951172],[-3.122999914723948,51.48979949161709],[-3.123025929954184,51.489773998774126],[-3.122999912966419,51.48979949381147]],[[-3.122999925269059,51.489799489148446],[-3.1229999147239456,51.48979949490866],[-3.1230189420661705,51.4897886105487],[-3.122999925269059,51.489799489148446]],[[-3.122999919117746,51.48979949271428],[-3.1229999173602216,51.48979949353717],[-3.122999925269059,51.489799489148446],[-3.1230188080555146,51.48978905984636],[-3.122999919117746,51.48979949271428]],[[-3.122999934496037,51.489799480370955],[-3.1229999287841097,51.48979948421108],[-3.1230172820887616,51.489787239066594],[-3.122999934496037,51.489799480370955]],[[-3.1229999322991424,51.48979948201672],[-3.122999934496037,51.489799480370955],[-3.123015093978063,51.4897891525591],[-3.1229999322991424,51.48979948201672]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230147284123317,51.48978379116025],[-3.122999906539917,51.48979949951172]],[[-3.122999912527045,51.48979948750264],[-3.1230111949183534,51.489775709289304],[-3.1229999107695283,51.4897994913428],[-3.122999910330144,51.489799492165695],[-3.1230142020302316,51.489767319931254],[-3.122999912527045,51.48979948750264]],[[-3.122999914723948,51.48979949161709],[-3.122999906539917,51.48979949951172],[-3.1230141914906273,51.489784947319954],[-3.122999914723948,51.48979949161709]],[[-3.122999906539917,51.48979949951172],[-3.12299991736022,51.4897994913428],[-3.123013656327324,51.48978908672812],[-3.122999906539917,51.48979949951172]],[[-3.122999915163316,51.489799501766065],[-3.122999906539917,51.48979949951172],[-3.122999916481459,51.48979950204036],[-3.1229999191177393,51.48979950258895],[-3.123013353598675,51.48980280648923],[-3.122999915163316,51.489799501766065]],[[-3.122999916042079,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.1230112089826116,51.489792319586634],[-3.122999916042079,51.48979949353718]],[[-3.122999919117742,51.48979949765162],[-3.1229999169208424,51.489799497925915],[-3.123011113638571,51.4897979481503],[-3.122999919117742,51.48979949765162]],[[-3.12299991736022,51.4897994913428],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230100428683536,51.48979154442491],[-3.12299991736022,51.4897994913428]],[[-3.1229999147239456,51.48979949463437],[-3.1229999164814606,51.48979949353718],[-3.123009739257355,51.489793674337065],[-3.1229999147239456,51.48979949463437]],[[-3.122999909451387,51.489799493811475],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123009342493486,51.489774964300246],[-3.122999909451387,51.489799493811475]],[[-3.1229999388898397,51.489799505606214],[-3.1229999305416225,51.489799503960434],[-3.1230089518901454,51.489801172231246],[-3.1229999388898397,51.489799505606214]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230082168055695,51.48979033011456],[-3.122999906539917,51.48979949951172]],[[-3.1229999191177433,51.48979949106851],[-3.1229999160420836,51.48979949298858],[-3.122999906539917,51.48979949951172],[-3.122999913845183,51.48979949463437],[-3.1229999160420836,51.48979949298858],[-3.122999915602706,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123007379348247,51.48979403750576],[-3.1229999191177433,51.48979949106851]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230057523243318,51.48979149176027],[-3.122999906539917,51.48979949951172]],[[-3.1229999090120057,51.48979949216569],[-3.123002218831768,51.48979171202047],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908133246,51.48979949381147],[-3.1229999081332434,51.48979949298858],[-3.1230003114839806,51.48979758086785],[-3.122999908572625,51.48979949216568],[-3.1230049891200995,51.48977827012162],[-3.1229999090120057,51.48979949216569]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123003926261847,51.48979241339651],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230027522390125,51.48979386579637],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999907254485,51.48979949353718],[-3.1230006032321023,51.48978954644983],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123000507886813,51.489799582683524],[-3.122999906539917,51.48979949951172]],[[-3.1229999257084455,51.48979948640547],[-3.1229999287841097,51.48979948421108],[-3.1229999322991424,51.48979948201672],[-3.1229999257084455,51.48979948640547]],[[-3.1229999235115447,51.48979948805124],[-3.1229999226327743,51.48979948859984],[-3.122999924390304,51.48979948722835],[-3.1229999235115447,51.48979948805124]],[[-3.1229999208752695,51.489799489971325],[-3.122999915602706,51.48979949353717],[-3.1229999191177433,51.48979949106851],[-3.1229999217540234,51.489799489148425],[-3.1229999226327743,51.48979948859984],[-3.1229999208752695,51.489799489971325]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999169208424,51.489799497925915],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907673,51.48979949326287],[-3.1229999098907624,51.48979949298858],[-3.122999910330144,51.489799492165695],[-3.1229999098907673,51.48979949326287]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907624,51.48979949298858],[-3.122999909451387,51.489799493811475],[-3.1229999098907637,51.48979949271428],[-3.1229999098907624,51.48979949298858]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12295844910747,51.48981796053995],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229918622075026,51.4898047915733],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999905057586,51.48979950780058],[-3.1229949725762536,51.48982289788369],[-3.122999906539917,51.48979949951172],[-3.122999905057586,51.48979950780058]],[[-3.122992426804906,51.48984048330472],[-3.122999905057586,51.48979950780058],[-3.122999906539917,51.48979949951172],[-3.122992426804906,51.48984048330472]],[[-3.1229602132032297,51.489835554190634],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229602132032297,51.489835554190634]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998958306058,51.48979949682873],[-3.1229998927549514,51.489799496005844],[-3.1229998905580514,51.489799495457255],[-3.1229998874823868,51.48979949463437],[-3.1229998852854894,51.489799494085766],[-3.1229998822098275,51.48979949326288],[-3.1229998734222297,51.48979949106851],[-3.122999874740373,51.4897994913428],[-3.1229998694678134,51.489799489971325],[-3.122999862877108,51.48979948832553],[-3.122928545397545,51.489780129007244],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229965600584517,51.48979845779364],[-3.122999896269991,51.489799496280135],[-3.1229577219631346,51.48978579022631],[-3.122999906539917,51.48979949951172],[-3.1229965600584517,51.48979845779364]],[[-3.122999906539917,51.48979949951172],[-3.1229867724272853,51.48981460123763],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229869174239875,51.48981006739124],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924419134795,51.48980908703206],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122962453614494,51.489821687407485],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122960609101872,51.48981573709347],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986585367784,51.489800444797346],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229599482803065,51.4898088259193],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229599482803065,51.4898088259193]],[[-3.122999906539917,51.48979949951172],[-3.122816220712529,51.48975432883289],[-3.122999868149681,51.489799489697035],[-3.122999878694792,51.48979949243998],[-3.1229998800129355,51.48979949271428],[-3.122999883967356,51.489799493811475],[-3.1229998870430027,51.48979949463437],[-3.1229998892399093,51.48979949518296],[-3.1229998923155637,51.489799496005844],[-3.122999894512467,51.48979949655443],[-3.122999897588123,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229946922546548,51.48979726213524],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229598230826365,51.48977959496686],[-3.1229998971487465,51.48979949463437],[-3.122999897588128,51.48979949490867],[-3.122999906539917,51.48979949951172],[-3.1229598230826365,51.48977959496686]],[[-3.122999894512468,51.489799499845994],[-3.1229370293515255,51.489801213359215],[-3.122999906539917,51.48979949951172],[-3.122999894512468,51.489799499845994]],[[-3.122999897588128,51.48979949490867],[-3.122999898466888,51.48979949518296],[-3.122999898906269,51.489799495457255],[-3.122999897588128,51.48979949490867]],[[-3.1229998949518483,51.48979949518296],[-3.122999895830607,51.489799495457255],[-3.122999906539917,51.48979949951172],[-3.1229998949518483,51.48979949518296]],[[-3.1229998971487465,51.48979949463437],[-3.122999896269986,51.489799494085766],[-3.122999898466888,51.48979949518296],[-3.1229998971487465,51.48979949463437]],[[-3.1229998923155713,51.48979949353718],[-3.1229946175600687,51.48979731397728],[-3.1229998984668796,51.489799496005844],[-3.1229998923155713,51.48979949353718]],[[-3.122999895830607,51.489799495457255],[-3.122999892754947,51.489799494360064],[-3.1229998883611505,51.489799492714276],[-3.1229911565649506,51.489796152057195],[-3.1229998918761854,51.48979949381147],[-3.12292401628936,51.489769317060215],[-3.1229998923155713,51.48979949353718],[-3.122999898466892,51.489799496280135],[-3.122999895830607,51.489799495457255]],[[-3.122999894512467,51.48979949655443],[-3.1229998936337084,51.489799496280135],[-3.1229998958306058,51.48979949682873],[-3.1229998967093673,51.48979949710302],[-3.122999894512467,51.48979949655443]],[[-3.122999889679291,51.48979949079421],[-3.122957393315392,51.48977683197761],[-3.122999896269986,51.489799494085766],[-3.122999889679291,51.48979949079421]],[[-3.1229998949518483,51.489799500120284],[-3.122986492107007,51.489800305728274],[-3.122999891436809,51.48979950012029],[-3.122969523693721,51.489800992014885],[-3.122999894512468,51.489799499845994],[-3.122999896269987,51.489799499845994],[-3.1229998949518483,51.489799500120284]],[[-3.1229427180373666,51.489774033598735],[-3.1229998826492067,51.489799488599836],[-3.1229998953912244,51.489799494360064],[-3.1229427180373666,51.489774033598735]],[[-3.1229998826492067,51.489799488599836],[-3.1229805648761126,51.48979056491103],[-3.12299988660363,51.48979949024562],[-3.1229998826492067,51.489799488599836]],[[-3.122999883967356,51.489799493811475],[-3.1229998830885903,51.48979949353718],[-3.1229998852854894,51.489799494085766],[-3.122999883967356,51.489799493811475]],[[-3.1229745440531396,51.489792941140244],[-3.122999862877108,51.48979948832553],[-3.122999868149681,51.489799489697035],[-3.1229745440531396,51.489792941140244]],[[-3.121452686373269,51.49131559243724],[-3.121410545521726,51.49129850787088],[-3.121368877066869,51.491280961655065],[-3.1213277034181552,51.491262963390966],[-3.1212870443486365,51.49124452158259],[-3.1212469152373408,51.491225643362405],[-3.121207304221415,51.49120632297052],[-3.1211682486490004,51.49118657878595],[-3.121168247330861,51.49118657796302],[-3.121129751596187,51.491166411906406],[-3.1210918227297033,51.491145828367166],[-3.121054478746342,51.49112483667224],[-3.1210544765494324,51.49112483557501],[-3.1210177156918992,51.491103434627725],[-3.120981571792691,51.49108164417854],[-3.121990753457291,51.49044057597751],[-3.1220088291244155,51.490451473380766],[-3.1220272066627555,51.49046217219308],[-3.1220458772846733,51.49047266692833],[-3.1220458794815755,51.49047266802554],[-3.122045880799718,51.49047266884844],[-3.122064841429472,51.49048295868357],[-3.1220840911882575,51.49049304224697],[-3.122084090748872,51.49049304224695],[-3.122103619530827,51.49050291460103],[-3.1221234211845093,51.49051257272836],[-3.122123420745122,51.490512572728356],[-3.122143493073502,51.4905220155316],[-3.1221638185011527,51.49053123450732],[-3.12216381937992,51.49053123478161],[-3.122163822455605,51.49053123615311],[-3.1221844066943514,51.49054023404416],[-3.1222052391988413,51.49054900646156],[-3.122226309423702,51.490557548467834],[-3.121452686373269,51.49131559243724]],[[-3.1219730101640106,51.48916950845512],[-3.1219555544619317,51.48918079258485],[-3.121938419929355,51.48919226323649],[-3.1219216061269153,51.48920392068448],[-3.1219216048087763,51.48920392150736],[-3.1219216026118612,51.48920392315311],[-3.121905120084774,51.489215759717375],[-3.121888967954327,51.489227776495234],[-3.1218731510537894,51.489239969921],[-3.121857683443522,51.4892523290231],[-3.121857683004135,51.48925232929739],[-3.121857680367835,51.48925233149174],[-3.121842557654108,51.48926485956182],[-3.1218277908216407,51.48927754782263],[-3.1218133776736705,51.48929039764578],[-3.1218133745979673,51.48929040038872],[-3.1217993256798695,51.48930340299694],[-3.1217993230435583,51.48930340546558],[-3.1217856396736496,51.48931655921324],[-3.1145005760571114,51.486418652253626],[-3.114596385658473,51.48632656543335],[-3.1146947393688773,51.48623555148772],[-3.1147956486051895,51.48614559834212],[-3.114899048325804,51.48605676605653],[-3.1150049086441967,51.48596907903473],[-3.1151132168114173,51.48588254796685],[-3.1152238998811392,51.48579723126648],[-3.1153369802582844,51.48571311109917],[-3.115452381483746,51.485630245604],[-3.1155700684034913,51.48554865808716],[-3.1156900339847753,51.48546835457588],[-3.1158122356054063,51.4853893641361],[-3.115936600766586,51.48531173311263],[-3.1219907782479623,51.489158416333005],[-3.1219730101640106,51.48916950845512]],[[-3.1197153700644016,51.49155064978736],[-3.119666923929624,51.4915146047775],[-3.1196194744612016,51.491478022703795],[-3.119619474021803,51.49147802270378],[-3.119573073064684,51.49144094389052],[-3.119527699528096,51.49140335188051],[-3.1194833938328297,51.49136527986603],[-3.119440160371244,51.49132673168855],[-3.120626769242604,51.490817666182124],[-3.120655588812775,51.490843362027974],[-3.120655588373388,51.490843362027974],[-3.1206555892521415,51.49084336257658],[-3.120655594085193,51.49084336723972],[-3.1206555945245937,51.49084336696543],[-3.120685127712951,51.490868744634305],[-3.1206851277129313,51.49086874490861],[-3.1207153723232053,51.49089380193129],[-3.1207153723232057,51.49089380220558],[-3.1207153762775652,51.49089380522292],[-3.1207153780350483,51.49089380686873],[-3.120715378474435,51.49089380686875],[-3.1207463186897066,51.49091853090102],[-3.12074631912912,51.490918530626736],[-3.1207779400111932,51.49094290850156],[-3.1207779395717856,51.49094290877584],[-3.120777943965552,51.4909429117932],[-3.1207779461624288,51.490942913439014],[-3.120810243757253,51.49096694323569],[-3.1197153700644016,51.49155064978736]],[[-3.118142571125239,51.491731124190444],[-3.1180893116411696,51.491677909296946],[-3.1180893107624583,51.491677908474024],[-3.1180375546424175,51.49162412856891],[-3.11798730100422,51.4915697836541],[-3.1179385762050194,51.491514901985205],[-3.117891387270695,51.4914594895989],[-3.117845763632683,51.491403582979785],[-3.117801710558746,51.491347188164404],[-3.117759236831034,51.49129031694963],[-3.119069436594917,51.49091763445639],[-3.1191012861436906,51.490960279012434],[-3.1191012857042977,51.49096027901242],[-3.1191012887796794,51.49096028312696],[-3.1191012922944092,51.490960287790124],[-3.119101292733831,51.49096028751583],[-3.1191343361978507,51.49100258703738],[-3.1191343366372486,51.4910025870374],[-3.119168557763373,51.49104452012779],[-3.119168558202784,51.4910445198535],[-3.1192039394194913,51.49108606539032],[-3.119203938980099,51.4910860653903],[-3.1192039420555497,51.491086068956264],[-3.1192039464490597,51.49108607389373],[-3.119203946449078,51.49108607361944],[-3.119240484243863,51.49112722721279],[-3.1192404838044583,51.49112722748707],[-3.119240485561882,51.491127229132914],[-3.1192404912734744,51.491127235441894],[-3.119278174225299,51.491167984747015],[-3.1192781737858946,51.49116798474701],[-3.1192781816943067,51.49116799297614],[-3.1192781816943334,51.49116799270185],[-3.119316997942642,51.4912083253739],[-3.119316997503242,51.49120832537388],[-3.1193170040936087,51.49120833195722],[-3.119317005411685,51.49120833332873],[-3.11931700585108,51.49120833332874],[-3.119356943535171,51.49124823674863],[-3.118142571125239,51.491731124190444]],[[-3.1150185519347433,51.49186298742551],[-3.114962096941936,51.4917757323604],[-3.114908069951257,51.4916878429868],[-3.1148565232242027,51.49159940352063],[-3.114807444448996,51.49151039256918],[-3.1147608731456264,51.491420882278234],[-3.114716809300704,51.49133087374795],[-3.114675268713137,51.49124039934923],[-3.116062744988755,51.49100029044197],[-3.1160973589694128,51.491075674076804],[-3.1160973585300145,51.49107567407678],[-3.1161340822061954,51.49115068450653],[-3.1161340844024177,51.491150689443984],[-3.116134089673609,51.49115069959326],[-3.1161340901130457,51.49115069931899],[-3.1161729050454667,51.49122529813909],[-3.116172905484858,51.49122529813911],[-3.116213792354967,51.49129944749348],[-3.1162137919155257,51.491299447767766],[-3.116213798065538,51.49129945791709],[-3.1162138007012152,51.49129946258027],[-3.116256754685591,51.4913731553348],[-3.1162567542461566,51.49137315560907],[-3.1162567603962747,51.4913731652098],[-3.1162567630319202,51.49137317014729],[-3.1162567634713523,51.49137316987301],[-3.1163017714001255,51.491446383806654],[-3.1163017705213347,51.49144638380661],[-3.1163488275708,51.491519110413584],[-3.1150185519347433,51.49186298742551]]],[[[-3.135996080090974,51.49366826085528],[-3.1346963637190908,51.4932814495082],[-3.134597229114068,51.49340837982029],[-3.1358859338184195,51.49380929558869],[-3.135996080090974,51.49366826085528]]],[[[-3.135933440380829,51.48930495899101],[-3.1359176252552445,51.48916411990224],[-3.1359176239344086,51.48916411030202],[-3.1359176221719522,51.48916409274723],[-3.135917621732579,51.48916409274728],[-3.135897875262651,51.48902347626555],[-3.135897875702024,51.4890234762655],[-3.1358978739412042,51.48902346447095],[-3.135897871300173,51.48902344746486],[-3.1358978708608,51.48902344746491],[-3.1358741922000712,51.4888830404221],[-3.1344437418365634,51.488984939008105],[-3.134464788750039,51.48910976627815],[-3.134482339281743,51.48923477409691],[-3.134496395164699,51.48935997837495],[-3.135933440380829,51.48930495899101]]],[[[-3.132499719300091,51.487698910843086],[-3.132439528115322,51.4875957077756],[-3.1310910667002667,51.48791058169932],[-3.1311426564971323,51.48799904206189],[-3.132499719300091,51.487698910843086]]],[[[-3.130555431559462,51.481110426945264],[-3.130311410540802,51.48102943184502],[-3.1303114105407146,51.481029431296434],[-3.1303113679268946,51.481029417858544],[-3.130311360019134,51.48102941511606],[-3.130065113053107,51.48095109101842],[-3.1300651126138903,51.480951091567036],[-3.129816707762464,51.480875460397975],[-3.1291971085436914,51.481686753571395],[-3.1289694492320907,51.48162048291661],[-3.128969446156877,51.48162048209388],[-3.1289694026643957,51.481620469478436],[-3.128969402225132,51.48162046975275],[-3.1287399256208337,51.48155668935967],[-3.1287399260601,51.481556689085345],[-3.1287398970652887,51.48155668140645],[-3.128739878614044,51.48155667647002],[-3.1285086549775336,51.48149540607413],[-3.12850865541677,51.481495405525514],[-3.1282757005322255,51.481436650053276],[-3.128275700971493,51.481436649778956],[-3.128275679445249,51.48143664484259],[-3.128275659676165,51.48143663963184],[-3.128275659236899,51.48143663990616],[-3.128041146600562,51.481380442953],[-3.1280411470398337,51.48138044267868],[-3.1280411158488146,51.4813804355483],[-3.1280410982764066,51.48138043143461],[-3.1280410982764346,51.4813804317089],[-3.1278050581669987,51.481326800121714],[-3.128285475006454,51.4804795185912],[-3.1280241723494777,51.480423351052046],[-3.1280241723494164,51.48042335050345],[-3.1280241345696482,51.48042334282476],[-3.128024118754856,51.480423339533864],[-3.1277612861143007,51.480370027453475],[-3.1273285144427954,51.48122726070847],[-3.127567474734965,51.4812757308748],[-3.1278050089644474,51.481326789426156],[-3.1273245791520514,51.48217406941379],[-3.127537084025414,51.482222353536486],[-3.127748171062363,51.48227293703575],[-3.1272206631522446,51.483109231672906],[-3.1274070306362622,51.48315623709263],[-3.127592060548807,51.48320526740133],[-3.1277757041445646,51.483256309166784],[-3.1279578621544375,51.483309335244236],[-3.1281385420655403,51.48336434728606],[-3.12813854206552,51.48336434701175],[-3.1283176147318583,51.4834213058061],[-3.1284951043337674,51.48348021903945],[-3.1286709019320766,51.48354105024274],[-3.1288449974374055,51.48360379640677],[-3.1290172797111198,51.48366841749743],[-3.1291877470093232,51.48373491242553],[-3.12935632861034,51.483803253773125],[-3.129522990257044,51.48387342810961],[-3.130338256952738,51.483132643144266],[-3.130150782828679,51.48305370607438],[-3.1301507678910343,51.483053700040756],[-3.1301507441664227,51.48305368989323],[-3.130150744166476,51.48305369016752],[-3.1299611311051168,51.48297682331606],[-3.129961128469061,51.48297682221902],[-3.129961092443078,51.48297680768342],[-3.129961092003842,51.48297680823206],[-3.1297693606390484,51.482902018993514],[-3.130521396584345,51.48213560733866],[-3.130305985666253,51.482054810365064],[-3.1303059852269937,51.48205481063938],[-3.1300884329516965,51.48197640307257],[-3.1300884333909558,51.48197640279826],[-3.1300884065919288,51.48197639347378],[-3.130088388579415,51.48197638689175],[-3.130088388140148,51.48197638716607],[-3.1298686843799044,51.48190036350881],[-3.130555431559462,51.481110426945264]]],[[[-3.124566884181321,51.377450850228385],[-3.121432925064509,51.37745085022832],[-3.1214454305165575,51.378349648049436],[-3.1214456181140076,51.37834964805194],[-3.1183382312304793,51.37838350929214],[-3.118338231230758,51.37838350654913],[-3.1183379669279643,51.378383512298946],[-3.118337591732371,51.37838351639852],[-3.118337591731953,51.37838352051305],[-3.115231163186857,51.378451242507005],[-3.115293663437633,51.37934922288266],[-3.1183751008681875,51.379282045759616],[-3.1184501222325474,51.381079091686445],[-3.121483133913565,51.38104604094955],[-3.1245168598720787,51.381046040947204],[-3.1245418727872476,51.37924844573061],[-3.121458570708031,51.37924844573892],[-3.1214460700134707,51.37834964805792],[-3.1245543787291967,51.3783496480495],[-3.124566884181321,51.377450850228385]]],[[[-3.1229999090120057,51.48979949216569],[-3.1229999085726248,51.48979949326288],[-3.1229999085726248,51.48979949353718],[-3.1229999090120057,51.48979949216569]]],[[[-3.1229999085726248,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999085726248,51.48979949353718]]],[[[-3.116839290983609,51.34244236994229],[-3.116764405790065,51.34064530667811],[-3.1126090974183955,51.34073589527748],[-3.112609096980628,51.34073589445452],[-3.1126090098273513,51.34073589746412],[-3.1126083568365934,51.34073591166991],[-3.112608357710885,51.34073591880188],[-3.108457037685233,51.34087174077069],[-3.1084570372481473,51.34087173802759],[-3.1084567775377603,51.34087174951605],[-3.108456183665931,51.34087176891777],[-3.108456184539753,51.340871775501164],[-3.1043085117042395,51.341052839707835],[-3.104532988331071,51.34284500835394],[-3.1086314266530644,51.342666093346736],[-3.112733806772836,51.34253187246631],[-3.116839290983609,51.34244236994229]]],[[[-3.1166303945380345,51.49344271476944],[-3.1165294941225734,51.49337275024851],[-3.1164305807597583,51.49330170776674],[-3.115335595206418,51.493885373199774],[-3.1154509914507447,51.49396825519001],[-3.1154509910113237,51.49396825518998],[-3.115450994526281,51.49396825765887],[-3.115451013858447,51.49396827164923],[-3.1154510142979155,51.49396827137496],[-3.115568710656234,51.49404988340444],[-3.1166303945380345,51.49344271476944]]],[[[-3.1053551045490937,51.49369858663],[-3.1052487965060394,51.49350571066602],[-3.105147918302578,51.49331174454928],[-3.10377457455407,51.49358180453987],[-3.1038832286352624,51.493790734314004],[-3.1038832299536305,51.49379073403992],[-3.1039976872169173,51.49399840644899],[-3.1053551045490937,51.49369858663]]],[[[-3.105118491674686,51.49560852278276],[-3.104958820414999,51.49541279648961],[-3.104804678802269,51.495215401189114],[-3.1048046792417034,51.49521540118918],[-3.1046560505317524,51.49501631468237],[-3.104513013723915,51.49481564123504],[-3.1043756328781997,51.494613472766915],[-3.1042439355993174,51.49440985181807],[-3.1041179099676053,51.49420475865622],[-3.1027690567992057,51.49451930382468],[-3.102904051398208,51.494739003768935],[-3.1029040500796845,51.4947390043173],[-3.1030451678863242,51.49495719980179],[-3.103045167446786,51.494957200076016],[-3.103045181499427,51.494957220924924],[-3.103045196429974,51.49495724396833],[-3.1030451968695174,51.49495724369412],[-3.1031923659383964,51.49517382551483],[-3.1018716978917698,51.49553199490301],[-3.1020351425058488,51.49576131775506],[-3.102035141626853,51.4957613180292],[-3.1020351622679483,51.495761345188214],[-3.102035175003199,51.495761363568334],[-3.1020351758822,51.495761363294186],[-3.102204974641157,51.49598882483896],[-3.1022049733227117,51.49598882511303],[-3.102381155725856,51.496214463181275],[-3.1023811425497856,51.496214447269764],[-3.099803390064194,51.4970160604949],[-3.100008680949127,51.497267742109315],[-3.102563632692078,51.496438160330115],[-3.1023811794425815,51.49621449226083],[-3.103670019358573,51.49581366134566],[-3.103841073558715,51.49602334852719],[-3.105118491674686,51.49560852278276]]],[[[-3.1018717290703486,51.49553204099038],[-3.101714703520345,51.495300943821185],[-3.1015641716073774,51.49506818209251],[-3.100224274273443,51.49539734454334],[-3.100384195868432,51.4956446365172],[-3.1003841949894224,51.495644636791326],[-3.1003842121150744,51.49564466175559],[-3.1003842279225653,51.495644686445296],[-3.1003842288015653,51.49564468617116],[-3.100551008705418,51.49589014939899],[-3.0992302992586573,51.496248288728246],[-3.09941418064866,51.496506306884385],[-3.0994141617657123,51.49650628137105],[-3.098103639352412,51.49687874118067],[-3.0983053375098093,51.4971489655201],[-3.0983052962300563,51.497148912572264],[-3.097005359869073,51.49753557962024],[-3.097225548025879,51.49781761668412],[-3.0972255471468038,51.49781761695823],[-3.097225565591479,51.497817639180255],[-3.097225591939711,51.497817673198774],[-3.097225593258235,51.49781767292476],[-3.0974536364459055,51.49809726811669],[-3.098731170072801,51.49768251208467],[-3.0985144968173572,51.49741686639775],[-3.098305338388112,51.49714896661748],[-3.0996052505561806,51.49676228239375],[-3.0994141999710467,51.49650633239781],[-3.1007246975090967,51.496133855452705],[-3.100551043397343,51.49589019768177],[-3.1018717290703486,51.49553204099038]]],[[[-3.0992303339475904,51.496248340577246],[-3.099053679181225,51.49598833248055],[-3.097723142921537,51.49633201278251],[-3.097909605555997,51.496606468031565],[-3.0992303339475904,51.496248340577246]]],[[[-2.998405762765002,51.35730142591618],[-2.9962263216373186,51.354975691600806],[-2.9924854473504925,51.35637747054931],[-2.992485446476628,51.35637746972543],[-2.992485380688125,51.35637749543655],[-2.9924847925656923,51.35637771586889],[-2.992484799119267,51.356377722185165],[-2.9887841013262832,51.357819750570414],[-2.988014974494483,51.357060791788754],[-2.98433315974879,51.35855167581666],[-2.9835430462736587,51.357801199123145],[-2.979882335344959,51.35934069710121],[-2.979882334033142,51.359340696276696],[-2.979882256378175,51.359340730195306],[-2.9798815812091686,51.35934101409612],[-2.9798815895105335,51.359341021512456],[-2.976264845830476,51.36091984626152],[-2.9762648418968256,51.36091984323925],[-2.9762645580051785,51.360919971805686],[-2.9762641012574886,51.36092017119986],[-2.976264106936698,51.36092017641873],[-2.97269093871103,51.36253850128812],[-2.973542611401222,51.3632621264409],[-2.9770955047048404,51.361652971160126],[-2.9787583741638395,51.363118537997146],[-2.9823142886827188,51.36156623158994],[-2.983125232642125,51.36230794926993],[-2.9867028682743717,51.36080334508645],[-2.987493080248173,51.361553790202734],[-2.9910914198877556,51.36009666874917],[-2.994729198231848,51.35867913104544],[-2.998405762765002,51.35730142591618]]],[[[-2.9802135271109926,51.38873555324984],[-2.9783139617715815,51.387386848767946],[-2.975476758407945,51.38897882847854],[-2.974508365622331,51.38831491917324],[-2.9716974369079288,51.389948221426906],[-2.9697239789689367,51.388641665330084],[-2.966922698003074,51.39032704526571],[-2.9669226830648703,51.390327054572055],[-2.9669221198477573,51.390327393406714],[-2.9669221294716372,51.39032739972848],[-2.964168643279438,51.39204269445261],[-2.963146123089714,51.39141130129567],[-2.960422124385307,51.39316829183022],[-2.962502116481393,51.39440858838457],[-2.9651906392759906,51.39267443035267],[-2.966213209215873,51.39330579729623],[-2.968931721857032,51.391612242981836],[-2.9699365510777302,51.39225464553304],[-2.972683623841987,51.390601815726626],[-2.973670423084305,51.39125506802562],[-2.976444620025213,51.38964306996296],[-2.9774130627572735,51.39030695460576],[-2.9802135271109926,51.38873555324984]]],[[[-2.967465428384443,51.367299668218855],[-2.9656825044864217,51.36589041164084],[-2.9622480433266047,51.36762363888164],[-2.964069958836051,51.36901325138252],[-2.967465428384443,51.367299668218855]]],[[[-2.966803722646043,51.3710972712724],[-2.9658926725466834,51.370402488055305],[-2.962583688018022,51.37213273967278],[-2.9635139614137733,51.372817489095745],[-2.9635142516314605,51.37281733725329],[-2.960273094335082,51.374572928963175],[-2.9621716056775536,51.37592192494399],[-2.965375259306948,51.37418660930063],[-2.963514642831559,51.372817132882346],[-2.966803722646043,51.3710972712724]]],[[[-2.9621236327986042,51.390779899974525],[-2.9611011710916304,51.390148489939236],[-2.9583427338906736,51.391927642791146],[-2.956262960218215,51.39068726036491],[-2.953519957056345,51.39251911841239],[-2.9535201377210423,51.39251899331804],[-2.9524631514142343,51.391910215412764],[-2.94975480407597,51.39378316191036],[-2.949754797511534,51.393783158609025],[-2.9497544734889662,51.39378339073738],[-2.9497542422546883,51.39378355058739],[-2.9497542470673643,51.39378355333752],[-2.9470988894770027,51.39568532962768],[-2.947098885537042,51.395685327975954],[-2.947098714482491,51.39568545472061],[-2.9470983389892096,51.395685723794955],[-2.947098346866001,51.395685727921304],[-2.9444962224928863,51.39761615115744],[-2.944496212426727,51.39761614620466],[-2.9444957475429328,51.39761650373373],[-2.944495688614825,51.39761654725783],[-2.9444956899271024,51.397616548082745],[-2.941947072343388,51.399575435138864],[-2.943069423105674,51.400136699435805],[-2.9456021956159195,51.3981899554861],[-2.946708726347308,51.398763351285154],[-2.949279027039614,51.39685646919574],[-2.9503694016555437,51.397441820403685],[-2.9529760109801075,51.39557486363031],[-2.955633647680802,51.393736897818386],[-2.9566907146754535,51.394345640348995],[-2.9593821670194025,51.39254812727497],[-2.9593821705191465,51.39254812947427],[-2.9621236327986042,51.390779899974525]],[[-2.9519024644020457,51.394977489621965],[-2.9519024578372894,51.39497748632075],[-2.951902148765031,51.394977707779084],[-2.951901909179794,51.39497787338143],[-2.9519019139927285,51.39497787613148],[-2.9492793836591473,51.396856204200986],[-2.9492795591093746,51.396856074168085],[-2.948189212347269,51.3962707078249],[-2.950828290772898,51.394380558450656],[-2.953519584738422,51.39251937599132],[-2.9545766021807567,51.3931281418406],[-2.9519024644020457,51.394977489621965]]],[[[-2.9433897383646865,51.39704272611517],[-2.942283291532038,51.39646929552284],[-2.9397024523562947,51.39845287468824],[-2.940824748613966,51.39901416031405],[-2.9433897383646865,51.39704272611517]]],[[[-2.930725549792471,51.39396183110638],[-2.928481485335142,51.39283905003917],[-2.925801337111175,51.39497334505306],[-2.925801571649367,51.39497315151672],[-2.923526594964637,51.39387494717171],[-2.9208755026353224,51.39606332664732],[-2.9231808235862693,51.39713657196473],[-2.9258010365654705,51.39497359361288],[-2.928076121799425,51.396071744820944],[-2.930725549792471,51.39396183110638]]]]} \ No newline at end of file diff --git a/benchmarks/cardiff.bt b/benchmarks/cardiff.bt new file mode 100644 index 0000000..55912b7 Binary files /dev/null and b/benchmarks/cardiff.bt differ diff --git a/benchmarks/cardiff.json b/benchmarks/cardiff.json deleted file mode 100644 index 21792ad..0000000 --- a/benchmarks/cardiff.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"MultiPolygon","coordinates":[[[[-3.359260141630376,51.467508041401906],[-3.3585945504683137,51.4649368509056],[-3.354339095286881,51.465390374811115],[-3.3549924286489103,51.4679151214652],[-3.359260141630376,51.467508041401906]]],[[[-3.3027585320019743,51.538404066845665],[-3.2961429862654215,51.53662202132142],[-3.2948097777221608,51.53850132669526],[-3.2934968689261406,51.53813051353644],[-3.292121712521109,51.53998073198018],[-3.2908193616444295,51.539595656492274],[-3.2894034390300413,51.541416501829644],[-3.2881120453571437,51.541017281009],[-3.2866566109059394,51.54280839214903],[-3.28537657418585,51.54239514853079],[-3.283882845566654,51.544156239668666],[-3.2826145677691936,51.543729102695416],[-3.2810836763536018,51.54546000754052],[-3.279504300557438,51.547174132313415],[-3.2832353900851134,51.54853764157877],[-3.2848520413413707,51.54678290473209],[-3.287364564177692,51.54766460719438],[-3.288955930408269,51.54586504551815],[-3.290224334459331,51.546292120089795],[-3.2917766919305276,51.54446160564095],[-3.2930568525390798,51.54487478531538],[-3.2945689621835306,51.54301360655183],[-3.2971520056416677,51.54381190058656],[-3.298633518399263,51.54190629144182],[-3.2986335245649854,51.54190629335266],[-3.298633690421345,51.54190607010297],[-3.2986338230494874,51.54190589956759],[-3.2986338186443573,51.541905897928395],[-3.300061375258808,51.53998480752288],[-3.301374398690768,51.54035555258257],[-3.3027585320019743,51.538404066845665]]],[[[-3.301531391464732,51.518469225613714],[-3.2987401159364897,51.5180233525932],[-3.297927299714386,51.519934165307866],[-3.3007057838076097,51.52041038805932],[-3.301531391464732,51.518469225613714]]],[[[-3.301208722622451,51.522594675297015],[-3.298443844391619,51.52208829136379],[-3.297517431259187,51.523994862741795],[-3.296142257091922,51.52372662311727],[-3.295170029530287,51.525608253451814],[-3.297905063267958,51.52617460630842],[-3.2988924177485526,51.5242634779601],[-3.300267633497971,51.52453169052153],[-3.301208722622451,51.522594675297015]]],[[[-3.2992703137104216,51.467267777493205],[-3.2986100846280526,51.46535033788914],[-3.2943976427134243,51.46594019785524],[-3.294397691997558,51.46594034151544],[-3.2937014263413036,51.46407644236503],[-3.2909045908052406,51.46450013512317],[-3.291589425152851,51.46633373298005],[-3.294397775907391,51.46594058442096],[-3.295041738089484,51.467811282552816],[-3.292222718846301,51.46817377979944],[-3.2928047424170437,51.47002104816104],[-3.293335071009318,51.47187426394698],[-3.296172856529978,51.47157341412439],[-3.295633615458274,51.469689460452386],[-3.2970480209707977,51.46952357368431],[-3.2964513495911003,51.46763037150415],[-3.2992703137104216,51.467267777493205]]],[[[-3.2920168337497926,51.522921807729944],[-3.289266632181807,51.52238518357951],[-3.288332934667826,51.524191720609146],[-3.284230761056335,51.523341841606474],[-3.2851414512721457,51.52158012652173],[-3.282391411780455,51.5210433410827],[-3.2814960632060535,51.52277517576222],[-3.2801287516176267,51.52249182123131],[-3.279193012610565,51.52419896139083],[-3.2782097775527355,51.52589531070371],[-3.276859074408512,51.52558232139839],[-3.275837264599215,51.527253210623016],[-3.273153748979168,51.526597847085796],[-3.2721039482171776,51.528228186823604],[-3.270771561086181,51.527885915720404],[-3.2696859690939677,51.529490104631044],[-3.2683633370575484,51.52913335241845],[-3.2672428642788853,51.53071143597203],[-3.2698678500739007,51.531453643112776],[-3.2686825748923494,51.53304727927909],[-3.2674525355680286,51.53462810213446],[-3.268743562823642,51.53502755266613],[-3.267458175627976,51.536608575910144],[-3.268737889051771,51.53702201922574],[-3.2700346179624953,51.535426990604044],[-3.2713257014246064,51.535826415947035],[-3.2725884362010493,51.534203396111465],[-3.2725884419239315,51.53420339774995],[-3.272588589488764,51.53420319924672],[-3.272588696352061,51.53420306196312],[-3.272588692829126,51.53420306059613],[-3.273805729026549,51.53256653079646],[-3.2724931533068147,51.53219548008305],[-3.273653757719314,51.530560608532085],[-3.2736537656424383,51.53056061071628],[-3.2736539551391823,51.530560330417835],[-3.2736539958496245,51.53056027331222],[-3.273653994528497,51.53056027276533],[-3.274768579519741,51.52891302862731],[-3.2800985146103945,51.53028186084984],[-3.278944747366078,51.53198730449211],[-3.2815903541207097,51.532700559725654],[-3.2803686702588055,51.5344218885771],[-3.281681368322284,51.534792852969154],[-3.282913192468367,51.533057166167985],[-3.2855589395405422,51.53377033587772],[-3.2867616296128186,51.53199219480199],[-3.2854290046668337,51.53165008574767],[-3.286572100618845,51.52987405102101],[-3.2852301784309756,51.52954649985354],[-3.2863141944940217,51.527773291000976],[-3.28631419977585,51.52777329236512],[-3.286314310348248,51.527773101301776],[-3.2863144178973784,51.527772925603166],[-3.286314413055286,51.527772924238434],[-3.287348567057148,51.525988179288774],[-3.2887079092131786,51.5262862995032],[-3.2897001678513966,51.52447535685106],[-3.2910676061702797,51.52475860465754],[-3.2920168337497926,51.522921807729944]]],[[[-3.2913903518638077,51.4701870167047],[-3.2908131911546366,51.4683550030036],[-3.2894036496617245,51.46853620953808],[-3.288780884255579,51.466726442234325],[-3.287376661185981,51.466922961761156],[-3.2867093776099465,51.46513591539699],[-3.288107844012207,51.46492413015092],[-3.287384307163701,51.46312868602175],[-3.284599728356476,51.46358265369141],[-3.283839551831817,51.46182597901766],[-3.2796823865749256,51.46255221149763],[-3.280422787740139,51.46426354899288],[-3.2811153665015236,51.46598282261768],[-3.281759794435608,51.46770922611896],[-3.2845683145213584,51.46731631278474],[-3.2851750823578487,51.46908006549006],[-3.287994211115452,51.46871774403084],[-3.2885614559952994,51.47051863582757],[-3.2913903518638077,51.4701870167047]]],[[[-3.287384944411426,51.52006210363762],[-3.2860026509860965,51.519808756965],[-3.285141275369715,51.52158049020631],[-3.286516318063943,51.52184886161753],[-3.287384944411426,51.52006210363762]]],[[[-3.2673679444643287,51.514691047331794],[-3.26459015190822,51.51421404069481],[-3.265249062430026,51.51266769488609],[-3.263853766035073,51.51244433406381],[-3.2644631729786027,51.510906578103175],[-3.2658644594265396,51.511114706466635],[-3.2664365140175518,51.50955462798504],[-3.2650296670873518,51.50936180160651],[-3.2655527297354143,51.507811384984095],[-3.2641407578606914,51.507633898291296],[-3.2646155396702623,51.50609376813216],[-3.264615545826317,51.506093768947615],[-3.264615605818228,51.50609355464994],[-3.264615637583807,51.50609345120196],[-3.264615634944894,51.50609345065656],[-3.2650473312998196,51.50454806460194],[-3.263626403772495,51.50440143073255],[-3.2631989783448945,51.50593135809262],[-3.2617823344354426,51.50576924841267],[-3.2613167805873027,51.50727914114689],[-3.260809113167412,51.50878351095867],[-3.262215915683974,51.50897638990241],[-3.2616607746080524,51.510489962669354],[-3.2588583047830855,51.510073596940074],[-3.2582726294321565,51.511551012574984],[-3.259667862455035,51.511774441742766],[-3.259034614748112,51.51326013460338],[-3.2604234374024395,51.51349871402656],[-3.259741984538369,51.51499207046177],[-3.258360004185653,51.51473839898988],[-3.257643965051112,51.51620937004315],[-3.257643964171037,51.51620936976985],[-3.256886684981768,51.517672614777766],[-3.2582537198651864,51.5179562461409],[-3.2574476348857937,51.519425568331705],[-3.258806577970425,51.519724033644735],[-3.257950929948418,51.521199128107945],[-3.2606518378839144,51.5218255338146],[-3.259737147740618,51.52332039263167],[-3.26242027546118,51.52397606915735],[-3.263352823006914,51.52245187809217],[-3.2633528278469157,51.52245187918356],[-3.2633529245082142,51.52245171284499],[-3.2633530155066177,51.52245156379378],[-3.2633530115460085,51.522451562701335],[-3.264242715228679,51.520917443879625],[-3.2628836918658943,51.52061904297998],[-3.263722194425498,51.51909029596943],[-3.2637221843065376,51.5190902937872],[-3.264517566709483,51.51755297918648],[-3.2645175759479996,51.5175529810954],[-3.2652699461035293,51.516006896942365],[-3.266652009386795,51.516260491337405],[-3.2673679444643287,51.514691047331794]]],[[[-3.259769514134836,51.48897446334846],[-3.2554505514628254,51.489002955948244],[-3.2554547337965616,51.490446175250916],[-3.2525752485240793,51.490433707649466],[-3.252539776269046,51.49184548061069],[-3.2524648343692637,51.49325670513055],[-3.2553420536067743,51.49333190869941],[-3.255418561308919,51.49188949736435],[-3.256857964663629,51.49191139351714],[-3.2568944793801364,51.49045266300808],[-3.2597739740646783,51.49046503059828],[-3.259769514134836,51.48897446334846]]],[[[-3.2580695462796574,51.484563966715726],[-3.257900455763594,51.483093152773804],[-3.2579004601559287,51.483093152494455],[-3.2579004363866564,51.48309298794351],[-3.257900422860015,51.483092870285574],[-3.2579004197856194,51.483092870563404],[-3.2576902544218584,51.48162412257521],[-3.2562576325485524,51.48171190857052],[-3.256465517129125,51.483165034127275],[-3.255030612579602,51.483237180131894],[-3.2551960478227007,51.484676980312],[-3.2580695462796574,51.484563966715726]]],[[[-3.2370575244355364,51.44606842789733],[-3.235817030025517,51.44483215468507],[-3.2346051207073727,51.44531625377671],[-3.2333445809533274,51.44410729712115],[-3.2333445835836665,51.44410729574717],[-3.233344473603178,51.44410719408585],[-3.233344337216154,51.4441070633737],[-3.2333443337079326,51.4441070647485],[-3.2320502576018475,51.442911995740815],[-3.232050293230264,51.44291202725203],[-3.233234395835728,51.442401821992384],[-3.2318922687383407,51.44120776741003],[-3.230722613184899,51.44173079877304],[-3.232050019636012,51.44291178392917],[-3.2308658998636806,51.443421977448274],[-3.2321461223861645,51.444604281490484],[-3.230947888547547,51.445101484295535],[-3.232181478601622,51.44628465458186],[-3.233393435680574,51.44580058556317],[-3.2346069666677133,51.44701005108827],[-3.2370575244355364,51.44606842789733]]],[[[-3.2365515227610477,51.54213850644371],[-3.235391517729504,51.541604992725155],[-3.2339256278007005,51.54282186081561],[-3.235070534032834,51.543367934188886],[-3.2365515227610477,51.54213850644371]]],[[[-3.2321591835076444,51.47338251050197],[-3.2316823620061648,51.47219569449836],[-3.2316823672740864,51.47219569339629],[-3.2316822860109444,51.4721955047549],[-3.231682270106168,51.4721954655451],[-3.2316822692283984,51.47219546582022],[-3.231172379658299,51.471014024774654],[-3.2256272365760705,51.47197981038085],[-3.226110944891087,51.473100903458686],[-3.2302895277426575,51.47242202136075],[-3.230760202060942,51.473593627840586],[-3.2321591835076444,51.47338251050197]]],[[[-3.225912334273066,51.53899880099175],[-3.2236229815435054,51.537906469275846],[-3.2222623851488965,51.53899553982243],[-3.2208714163699836,51.54006964677522],[-3.221984830595647,51.540640425923584],[-3.2205479883656176,51.541711124981596],[-3.2216452922267798,51.542293936879275],[-3.2201621617365594,51.5433606839887],[-3.2223239084150914,51.54455000956348],[-3.2207774464405308,51.54562382055822],[-3.222905701525372,51.54683648120918],[-3.2244860766048333,51.54573908606412],[-3.2234051268818606,51.54514444846541],[-3.224937696602348,51.54404208517367],[-3.2238402989582116,51.543459303425564],[-3.2253255495847832,51.542352471705954],[-3.223098569097475,51.54121096817955],[-3.224520684769436,51.54011276757891],[-3.2245206878521406,51.54011276922201],[-3.224520832749089,51.5401126530702],[-3.2245209535047787,51.54011255998],[-3.224520951302414,51.54011255861044],[-3.225912334273066,51.53899880099175]]],[[[-3.2223538150257878,51.47137752451208],[-3.2218227297587223,51.47029785864587],[-3.2218227345874717,51.47029785754461],[-3.22182263756457,51.470297672201205],[-3.2218226199186564,51.47029763600881],[-3.2218226190408603,51.470297636283846],[-3.2212615851883197,51.46922414076406],[-3.2212615865046863,51.469224140214365],[-3.221261557404955,51.46922408729932],[-3.2212614700886815,51.469223920599525],[-3.221261465260038,51.46922392170077],[-3.2206705389168873,51.46815668767059],[-3.2206705415501626,51.46815668684551],[-3.220670483368076,51.468156587872514],[-3.220670424731,51.46815648149386],[-3.2206704216579745,51.46815648204502],[-3.2200497933580396,51.4670958501256],[-3.2200497955520997,51.467095849300875],[-3.2200497391450713,51.46709575773214],[-3.2200496650976684,51.46709563134217],[-3.2200496615861214,51.467095632167975],[-3.219399519559832,51.46604192074561],[-3.2193995120694026,51.46604190895697],[-3.2193993948551523,51.466041719239286],[-3.2193993895882342,51.46604172061511],[-3.218719934307238,51.46499525188833],[-3.220048653375602,51.46465019661588],[-3.219330090364402,51.463596666911265],[-3.220648915893353,51.46323717381017],[-3.21989078271015,51.462177306658],[-3.219890790170446,51.462177304457455],[-3.2191032059708338,51.461125871294094],[-3.2204010765128017,51.460737849021],[-3.2195732013307334,51.459681060082055],[-3.220859988858431,51.45927894198719],[-3.2199913146564896,51.4582173898557],[-3.2199913155334756,51.45821738930638],[-3.21999128472139,51.45821735312451],[-3.2199911359281397,51.45821717138795],[-3.219991130662716,51.45821717303809],[-3.2190931460767684,51.45716544805822],[-3.2190931478313107,51.45716544723389],[-3.2190930804946354,51.457165371308484],[-3.2190929735388916,51.4571652463162],[-3.2190929700286635,51.457165247416256],[-3.218165591559219,51.45612325161218],[-3.2169143162463163,51.45656686428359],[-3.2159706279302336,51.45554871078059],[-3.2147319334411453,51.45600587401459],[-3.2137731506081133,51.455011774645044],[-3.213773153239669,51.45501177327151],[-3.2137730476603554,51.45501166829703],[-3.2137729662688104,51.455011583601895],[-3.2137729640752077,51.455011584426494],[-3.212786395240046,51.45402787862734],[-3.2115739993691306,51.45451173886043],[-3.210574064616272,51.45355226396021],[-3.2105740668093246,51.45355226286138],[-3.210573972690182,51.45355217597913],[-3.2105738710870395,51.45355207840483],[-3.2105738684549485,51.453552079503986],[-3.209547328985556,51.452603647043674],[-3.2095473294235433,51.45260364649475],[-3.2095473003993034,51.45260362073213],[-3.2095471174459163,51.45260345162512],[-3.2095471126202892,51.45260345354877],[-3.2084942930156855,51.4516663607602],[-3.2084942952087054,51.4516663596614],[-3.2084941997900875,51.451666277990086],[-3.208494076221321,51.45166616781225],[-3.2084940731507943,51.45166616918598],[-3.207415059562205,51.45074049869105],[-3.2051042358648507,51.45181142098626],[-3.206153786335611,51.45271185468908],[-3.2071778314671646,51.45362337692939],[-3.205993155681108,51.454133318813376],[-3.2069776727946744,51.45504299190746],[-3.205778891475566,51.45553993710566],[-3.2067242087903547,51.45644709623199],[-3.2076440668003343,51.457364406529315],[-3.2085382776358458,51.45829168467508],[-3.2097770936763728,51.45783459144192],[-3.210657767584848,51.45878489812602],[-3.211511758710281,51.45974461401549],[-3.212338942689464,51.460713604554314],[-3.2131389415840115,51.46169143336455],[-3.214425836919781,51.46128938766798],[-3.2152094080949105,51.462289766775676],[-3.215964912425077,51.463298486873654],[-3.2146562920501025,51.4636722535347],[-3.215373344541048,51.46467485065277],[-3.21273551270061,51.46539370863455],[-3.2120391267304575,51.46441993021236],[-3.2120391333132186,51.46441992801297],[-3.211315387037542,51.46345349927715],[-3.2100173641859957,51.463841423818316],[-3.209278109797092,51.462897489120095],[-3.2092781124297534,51.46289748802098],[-3.2092780345258007,51.46289739289694],[-3.2092779680581276,51.462897307913515],[-3.209277965864081,51.46289730873802],[-3.20851248214302,51.46196157123336],[-3.2085124825816234,51.461961570958735],[-3.2085124689388977,51.46196155478511],[-3.208512324580428,51.461961378516854],[-3.208512319753267,51.461961380166144],[-3.2077206888924454,51.46103394708516],[-3.2064569831614484,51.46146373457326],[-3.2072367805101285,51.46237733339097],[-3.205961222465328,51.46279327161083],[-3.2067040381417806,51.46370136158717],[-3.2074213479529003,51.46461734265993],[-3.2081130160377023,51.46554104230982],[-3.20942173673817,51.46516735400699],[-3.2100977093742222,51.46611266455364],[-3.2107471130286385,51.467065077434825],[-3.211370045019217,51.468024748267034],[-3.212708339037452,51.46769431524072],[-3.2133132778257907,51.46867499679879],[-3.213890846951955,51.469662290146324],[-3.2152468192028025,51.46936120142437],[-3.215804898281143,51.47036932937573],[-3.2163347019885182,51.47138330035924],[-3.2168362546888125,51.47240317672596],[-3.21821566401905,51.47214678864705],[-3.2186955502998473,51.47318683952736],[-3.2191463566193694,51.47423204367576],[-3.2219322331777955,51.473779637138655],[-3.2214683210627317,51.472704197930724],[-3.2214683223791973,51.472704197381034],[-3.221468294579896,51.47270413760752],[-3.221468225717428,51.472703977475625],[-3.221468221327044,51.472703978302214],[-3.2209744437493653,51.471633962677394],[-3.2223538150257878,51.47137752451208]]],[[[-3.206472815016685,51.55518740722314],[-3.2055739840623008,51.55448463145495],[-3.2037509082863793,51.55537458792266],[-3.2019038239411657,51.55624421650041],[-3.201044934415596,51.555522278944416],[-3.199193521706727,51.55636265216859],[-3.197318828764086,51.557182710875225],[-3.1981367401028766,51.557922919710315],[-3.20003187121668,51.5570939138072],[-3.200870426141208,51.557825094364546],[-3.202762372200212,51.55696630839279],[-3.202762379251185,51.55696631442246],[-3.204629892837192,51.556087059627956],[-3.2046298932776978,51.55608705990193],[-3.204629915259452,51.55608704918921],[-3.204630279288,51.55608687777701],[-3.20463027444044,51.55608687366598],[-3.206472815016685,51.55518740722314]]],[[[-3.200186074726998,51.5548003369315],[-3.1993272426706136,51.55407838854347],[-3.1975163770381467,51.55490034331098],[-3.19835484908988,51.55563154019854],[-3.200186074726998,51.5548003369315]]],[[[-3.174323455381287,51.443121715096694],[-3.1730117657538717,51.44256963854323],[-3.1730117675074836,51.442569636622395],[-3.1730116129367762,51.44256957387393],[-3.173011496128715,51.44256952482431],[-3.1730114948134287,51.44256952619637],[-3.1716846184941616,51.44203182435731],[-3.1709126370507343,51.44279020441622],[-3.1695925310569324,51.44227544236016],[-3.169592532810395,51.442275440165076],[-3.1695923536611703,51.442275373033105],[-3.16959225749866,51.44227533549241],[-3.169592256621931,51.44227533658996],[-3.1682577339151026,51.44177493323703],[-3.16752852223939,51.44254966466858],[-3.1688416206983816,51.44304203726982],[-3.1701408478315405,51.44354866149527],[-3.1714256756888255,51.44406933092579],[-3.1722187332706375,51.443319488150735],[-3.1735096132975973,51.443862810411645],[-3.174323455381287,51.443121715096694]]],[[[-3.166033391379588,51.50437336799714],[-3.164767305746402,51.50394494977348],[-3.165156222639101,51.50348782938372],[-3.1651562243976574,51.503487829931686],[-3.165156273128258,51.50348777011768],[-3.1651563021046285,51.50348773609458],[-3.165156301225097,51.503487735546294],[-3.165532373721081,51.50302644150854],[-3.1655323754796254,51.50302644205649],[-3.165532420694718,51.50302638388937],[-3.1655324465962633,51.50302635233595],[-3.165532445716731,51.50302635178767],[-3.16589562756335,51.50256093580905],[-3.1632952049091454,51.501787962859034],[-3.162953992618955,51.50222519344641],[-3.162600619541944,51.50265861439937],[-3.162235212308047,51.50308807415518],[-3.1609692009855896,51.50265961566559],[-3.161322786919468,51.50224406308303],[-3.1613227882384254,51.502244063631196],[-3.1613228321430573,51.50224400958056],[-3.161322858926294,51.50224397830208],[-3.161322858046835,51.502243977753764],[-3.1616648346631657,51.50182454990487],[-3.1603756751666534,51.50142392042819],[-3.160694804826677,51.50101501611592],[-3.1606948061455906,51.50101501666409],[-3.160694846533891,51.50101496261482],[-3.160694870241101,51.501014932160345],[-3.1606948698013873,51.50101493188618],[-3.1610025111526894,51.500602612669525],[-3.1610025124713603,51.500602612943396],[-3.1610025423213592,51.500602570966436],[-3.161002570417062,51.50060253337878],[-3.161002569537636,51.500602532830484],[-3.161298689895228,51.50018683913133],[-3.159977752326832,51.49982886364784],[-3.160252395996193,51.49942445835717],[-3.1589216778834444,51.49908091354165],[-3.159175524782338,51.498688203472575],[-3.1591755269801083,51.498688204020496],[-3.1591755730646818,51.498688129123444],[-3.1591755735034965,51.49868812830044],[-3.159418396580817,51.49829271267765],[-3.1594183978994232,51.49829271295154],[-3.159418425108869,51.49829266631275],[-3.1594184466145023,51.49829263119617],[-3.1594184457353625,51.49829263092215],[-3.1596502158259274,51.49789455398441],[-3.156934932940873,51.49729531355519],[-3.15672029136263,51.49766393372963],[-3.156495411715103,51.498030094603486],[-3.15515535998674,51.49770105476268],[-3.1549296058558602,51.4980502561584],[-3.154694209465278,51.49839681219771],[-3.1533733753845303,51.498038761958306],[-3.15313846063571,51.49836845568873],[-3.152894372210899,51.49869552213968],[-3.15264117977128,51.49901986962185],[-3.1523789156610156,51.499341454455525],[-3.1536565411688824,51.49975615443532],[-3.153373573715327,51.50008864683606],[-3.1533735745944727,51.50008864711013],[-3.153081387630091,51.50041796153385],[-3.1527800113203894,51.500744066360475],[-3.1527800108807287,51.500744066086284],[-3.1524694850541826,51.50106691213654],[-3.152150020838226,51.50138627930048],[-3.1518216708253295,51.5017021161994],[-3.15302290268521,51.50219790406411],[-3.152671737370021,51.502523115242525],[-3.152311551619763,51.50284442903747],[-3.151942358512119,51.50316183055127],[-3.153100408243198,51.50369617439705],[-3.1527073103929206,51.50402201159289],[-3.1561362778032778,51.50566258425667],[-3.1565747212851867,51.50529913758968],[-3.1565747217249176,51.50529913786385],[-3.156574741051893,51.50529912112628],[-3.1565748047448796,51.505299068443264],[-3.156574803425689,51.505299067620754],[-3.157002920811933,51.50493097516479],[-3.157002922130919,51.50493097571299],[-3.1570029686897807,51.504930934280836],[-3.157003009100188,51.50493089943355],[-3.157003008220731,51.50493089888521],[-3.157420752195001,51.50455820465363],[-3.1574207526347275,51.5045582049278],[-3.157420765811084,51.50455819258062],[-3.157420839162035,51.5045581272767],[-3.157420837403323,51.50455812645432],[-3.1578280938968337,51.50418093317757],[-3.1590294578645266,51.504676659867066],[-3.159439849988473,51.50428184667964],[-3.159439850428213,51.504281846953795],[-3.1594398719475913,51.504281825552034],[-3.1594399334330032,51.50428176628505],[-3.159439932113789,51.50428176546256],[-3.159839136774632,51.50388261825569],[-3.1598391372143673,51.50388261852984],[-3.1598391587324794,51.50388259603083],[-3.159839213188586,51.50388254170315],[-3.1598392118693757,51.50388254088069],[-3.160227185333538,51.50347910613758],[-3.1602271884110165,51.503479107233794],[-3.160603893101024,51.5030714221073],[-3.1656194098171104,51.50484009904108],[-3.166033391379588,51.50437336799714]]],[[[-3.164752836240602,51.505759403547074],[-3.1635243926287346,51.50529020730158],[-3.1630852046057116,51.50572936746059],[-3.1618700897199434,51.505246847092934],[-3.161432262254863,51.50566807565918],[-3.1626337035575087,51.506163765034856],[-3.1630851233630985,51.505729448405596],[-3.1630851150194363,51.50572945691162],[-3.1643002546989556,51.50621196849355],[-3.164752836240602,51.505759403547074]]],[[[-3.164682503100249,51.509038897301714],[-3.1612076110502416,51.50743618159356],[-3.161694859519009,51.50701721216905],[-3.1605218568488977,51.5064956517856],[-3.1600493686178237,51.50690192060133],[-3.1588911545955325,51.50636764839819],[-3.1584223927483377,51.506756243512754],[-3.159565489289411,51.507303055396584],[-3.1590705595971724,51.507698775047984],[-3.1624536315589933,51.509376260202096],[-3.1619002713867586,51.50980313806995],[-3.163012211158498,51.51037448000832],[-3.1635813772829446,51.509935400130956],[-3.1635813786021565,51.509935400679076],[-3.163581438781075,51.50993535265655],[-3.163581484904616,51.509935316982165],[-3.1635814840249807,51.50993531643388],[-3.164138157031245,51.50949019431109],[-3.164138159230079,51.5094901954075],[-3.164138262452027,51.50949011006538],[-3.1641382721153732,51.50949010210742],[-3.164682503100249,51.509038897301714]]],[[[-3.142691635632965,51.41621890178753],[-3.140634912242881,51.41601554613058],[-3.140634913118325,51.41601554119305],[-3.138572844111022,51.415834624623066],[-3.1385728445484786,51.41583462105711],[-3.138572525626852,51.41583459668681],[-3.1385724203428036,51.415834587374604],[-3.1385724199045058,51.41583458847185],[-3.1365059994338016,51.41567619479592],[-3.136505999433396,51.41567619342441],[-3.1365058937121906,51.41567618657911],[-3.1365056305049204,51.41567616631124],[-3.136505630067059,51.415676169054294],[-3.134435115700507,51.41554031447716],[-3.134435116138286,51.415540310911204],[-3.134434813453593,51.41554029448275],[-3.1344346897473003,51.41554028626582],[-3.134434689747642,51.41554028763733],[-3.1323603394747543,51.415426991945196],[-3.1323603385986547,51.41542699797988],[-3.130283579441575,51.41533633878984],[-3.130283579441008,51.415336335223955],[-3.130283276321532,51.415336325367996],[-3.1302831521783046,51.41533631988972],[-3.130283152178523,51.415336321261215],[-3.1282041846144732,51.41526830281822],[-3.1282041846138804,51.41526829760652],[-3.1261231555915807,51.41522292967195],[-3.1261231555914866,51.415222928300466],[-3.1261230415386283,51.415222926931996],[-3.126122784480868,51.41522292145285],[-3.126122784481055,51.41522292419585],[-3.124041236772477,51.4152002420246],[-3.1240412367724395,51.4152002403788],[-3.1240411095598026,51.41520024037993],[-3.124040808197378,51.415200237091014],[-3.124040808197453,51.4152002403826],[-3.121958573771547,51.41520024037877],[-3.1219710998262933,51.41609903369273],[-3.119914647276187,51.416121442721625],[-3.119914646837643,51.41612144080151],[-3.119914492424496,51.416121444089036],[-3.1199142235176915,51.41612144709925],[-3.1199142239561612,51.416121450116556],[-3.117858649926819,51.41616626245517],[-3.1178586494881766,51.416166262180845],[-3.117858628431755,51.41616626300282],[-3.11785828319487,51.41616627039377],[-3.1178582836331126,51.41616627423399],[-3.1158042676886426,51.416233476530266],[-3.115804267250184,51.41623347515874],[-3.115804153632802,51.41623348008916],[-3.1158038448046024,51.41623349021929],[-3.115803845242717,51.416233493785214],[-3.1137520669594267,51.41632306230921],[-3.1137520660832387,51.41632305654883],[-3.111702668987668,51.416434989518535],[-3.11170266854933,51.41643498814699],[-3.1117025439632933,51.416434996363975],[-3.1117022474142715,51.41643501251907],[-3.111702248290812,51.416435015810755],[-3.1096566967941337,51.41656923313988],[-3.1096566959178173,51.416569229573874],[-3.1096563932236445,51.4165692528549],[-3.1096562752171972,51.41656926052185],[-3.109656275655474,51.4165692618934],[-3.107614348337817,51.416725777468294],[-3.1078016822514303,51.41761694139148],[-3.1057891703056004,51.417793509885975],[-3.1057891716199153,51.41779351454928],[-3.103782344980452,51.41799193715557],[-3.10378234410399,51.41799193496101],[-3.1037821458064623,51.41799195687246],[-3.1037819317164033,51.41799197795844],[-3.103781932592749,51.41799198042727],[-3.1017809314794125,51.41821223770473],[-3.101780929727305,51.4182122319441],[-3.09978553989764,51.41845435679581],[-3.0997855416497835,51.41845436200786],[-3.0977979539691507,51.41871808939353],[-3.097797953092662,51.418718087747536],[-3.0977978219115716,51.418718106646],[-3.0977975990367295,51.41871813622244],[-3.097797599912768,51.418718138691325],[-3.095817655074826,51.4190034815809],[-3.095817652884252,51.419003476642985],[-3.0938451885240896,51.41931046638321],[-3.0938451907144655,51.419310471321154],[-3.091881968846849,51.41963883774742],[-3.092265560173685,51.42050507428901],[-3.0903362625853847,51.42085039841753],[-3.0903362608328564,51.42085039512545],[-3.0903359716781678,51.42085045017907],[-3.0903358668109893,51.42085046907651],[-3.090335867687448,51.42085047044825],[-3.0884164174423088,51.42121677293499],[-3.0884164170042103,51.42121677211197],[-3.0884163661046045,51.42121678252033],[-3.0884160743125526,51.42121683811703],[-3.088416076064958,51.421216841409155],[-3.0865071109578834,51.4216040016945],[-3.086507110081529,51.42160400032273],[-3.086506993799376,51.42160402524779],[-3.086506719990284,51.42160408084533],[-3.086506721742785,51.42160408386318],[-3.0846088721851816,51.422011973467434],[-3.084608871308872,51.422011972095646],[-3.084608769065377,51.42201199537762],[-3.0846084820846027,51.42201205700101],[-3.0846084842754884,51.42201206029332],[-3.0827222767608102,51.42244056472883],[-3.0827222754463,51.422440562808276],[-3.082722115713529,51.422440601155316],[-3.0827218875265037,51.42244065291949],[-3.082721889279025,51.42244065566309],[-3.0808478929410086,51.422889646224306],[-3.080847891188579,51.42288964348068],[-3.0808476511432077,51.422889704014544],[-3.080847509399589,51.422889737976696],[-3.080847510714289,51.42288973962297],[-3.078986245618873,51.423359092281636],[-3.078986243428329,51.42335908898923],[-3.0789859524681087,51.42335916595811],[-3.078985911655061,51.423359176366176],[-3.0789859120932737,51.423359176914936],[-3.077137994497914,51.4238487378114],[-3.0771379936215157,51.42384873671385],[-3.077137906725444,51.4238487608182],[-3.077137615319988,51.42384883805663],[-3.077137617949177,51.42384884134925],[-3.0753036580624777,51.424358447328025],[-3.075303655871289,51.42435844485843],[-3.075303433795431,51.424358509502724],[-3.075303277993382,51.424358552778635],[-3.075303279307642,51.42435855469927],[-3.073483409481001,51.4248881732777],[-3.074101500893706,51.42569969988285],[-3.07231955026758,51.42624209818604],[-3.072319548514927,51.426242095990894],[-3.072319361972158,51.42624215515888],[-3.0723191815767206,51.42624221021506],[-3.0723191833293684,51.4262422124102],[-3.0705525574687162,51.4268039576203],[-3.070552554401369,51.42680395405303],[-3.070552243191277,51.42680405732464],[-3.070552242313418,51.42680405759853],[-3.070552242751878,51.42680405787304],[-3.068801521583118,51.42738496716751],[-3.0688015193918114,51.427384964972106],[-3.0688013319554646,51.42738502989437],[-3.0688011616416317,51.42738508632127],[-3.0688011633944816,51.42738508824219],[-3.067066929585611,51.42798496703176],[-3.0670669291471646,51.42798496675726],[-3.067066914221715,51.427984972236125],[-3.06706657182347,51.427985090570026],[-3.0670665753290716,51.42798509441189],[-3.065349308936867,51.42860377633793],[-3.0653493058694568,51.42860377304482],[-3.0653490262267367,51.428603877689596],[-3.065348953792828,51.42860390398671],[-3.0653489546693753,51.42860390481003],[-3.063649122241135,51.42924122297915],[-3.0636491213646035,51.42924122215581],[-3.063649069999218,51.429241242153644],[-3.0636488245913567,51.42924133419393],[-3.063648827220593,51.42924133693826],[-3.0619669990167684,51.42989707899759],[-3.061966997702179,51.429897077625405],[-3.0619668905760316,51.429897120908905],[-3.0619666513027104,51.42989721432035],[-3.0619666543706967,51.42989721706495],[-3.0603033950640164,51.430571161355374],[-3.060303389805043,51.43057115641516],[-3.058658808000283,51.431263264287885],[-3.0586588071234173,51.43126326373881],[-3.058658762336241,51.43126328346377],[-3.0586584690324243,51.4312634067374],[-3.0586584725383443,51.43126341003092],[-3.0570337482692715,51.431973184799496],[-3.057033746516342,51.43197318315271],[-3.0570336139047396,51.4319732431496],[-3.057033414113427,51.43197333053858],[-3.0570334167432067,51.43197333273446],[-3.055428660592506,51.43270072206961],[-3.0554286570859075,51.432700719324615],[-3.0554284085347287,51.432700836032744],[-3.0554283756000897,51.43270085110021],[-3.055428376038116,51.43270085164905],[-3.0538441246098182,51.433445614202796],[-3.0538441241713827,51.433445613928235],[-3.0538441105574434,51.433445620503385],[-3.053843796564391,51.43344576816535],[-3.053843800947395,51.43344577173383],[-3.052280574287572,51.434207662050845],[-3.052280569904194,51.434207658756605],[-3.052280283113567,51.43420780368779],[-3.052280255445495,51.434207817111755],[-3.0522802558834967,51.43420781766062],[-3.0507384850124746,51.43498662535816],[-3.050738484574059,51.4349866250836],[-3.0507384700802027,51.434986632480744],[-3.050738168346671,51.434986785079296],[-3.050738172730013,51.43498678837359],[-3.0492183353403988,51.43578227321066],[-3.049218332271904,51.43578227101434],[-3.049218139443435,51.43578237540089],[-3.049218020411272,51.435782437866145],[-3.0492180226033705,51.43578243923901],[-3.047720534581901,51.43659438426281],[-3.0477205284449536,51.43659437987007],[-3.0462453195086394,51.43742283636053],[-3.046245327838104,51.43742284185198],[-3.0447940212789604,51.43826689748937],[-3.044794014703184,51.438266893096205],[-3.0433661521380824,51.439126809583684],[-3.043366151699662,51.43912680930909],[-3.0433661385185617,51.4391268175291],[-3.0433658568926636,51.43912698712879],[-3.043365861714764,51.43912699042366],[-3.0419624614306855,51.440002154060224],[-3.035814921463967,51.436217772553384],[-3.034331047050521,51.43717585876814],[-3.034331040474838,51.43717585492297],[-3.0328741248108826,51.43814993569679],[-3.032874122619166,51.43814993432361],[-3.03287401934001,51.43815000611053],[-3.032873825097979,51.43815013570461],[-3.032873829043609,51.43815013790204],[-3.0314445697837593,51.43913973859161],[-3.031444566276457,51.43913973666878],[-3.031444397938979,51.43913985722883],[-3.0314442731199502,51.4391399438098],[-3.0314442757505673,51.43913994518334],[-3.030042808618832,51.4401449662335],[-3.030042806426541,51.44014496513456],[-3.03004271763393,51.440145031170175],[-3.0300425180812884,51.44014517419597],[-3.030042522465869,51.440145176393834],[-3.0286692694154524,51.441165316308144],[-3.028669263715238,51.44116531356056],[-3.0286690153350815,51.4411655048213],[-3.028668987201714,51.44116552564537],[-3.028668988078415,51.44116552619468],[-3.0273243307685758,51.442200504015815],[-3.0273243294535273,51.44220050319185],[-3.027324276695108,51.4422005451165],[-3.0273240924895926,51.44220068705295],[-3.027324096874235,51.44220068925093],[-3.026008486573662,51.443250161261915],[-3.0260084839429644,51.443250159888244],[-3.026008377974224,51.44325024757618],[-3.0260082174924148,51.44325037554093],[-3.026008221438739,51.44325037746429],[-3.024722098592502,51.444313991982426],[-3.024722096838503,51.44431399115805],[-3.0247220335135414,51.44431404569042],[-3.024721832120262,51.444314212020906],[-3.024721836943928,51.44431421421935],[-3.023465556849487,51.445391678187235],[-3.023465553341439,51.445391676538456],[-3.023465420080368,51.44539179519665],[-3.023465298263102,51.44539189960101],[-3.0234653013327897,51.44539190097511],[-3.0222392440586408,51.44648289007924],[-3.0222392387965127,51.44648288760603],[-3.022239033821631,51.446483077244515],[-3.0222389915990013,51.44648311451285],[-3.022238992914684,51.44648311506258],[-3.021043288391424,51.44758752310627],[-3.0210432945315633,51.4475875255803],[-3.019878769603013,51.44870459358495],[-3.01987876477851,51.44870459166063],[-3.0198785927491643,51.44870476294592],[-3.0198785289579164,51.448704824332665],[-3.019878530712005,51.44870482515711],[-3.0187453569653133,51.44983438166105],[-3.0187453552112067,51.44983438083659],[-3.0187452958068337,51.449834442226624],[-3.0187451255280946,51.44983461214029],[-3.0187451303526744,51.44983461406467],[-3.0176436233561854,51.45097634508448],[-3.017643615461019,51.4509763420601],[-3.016573673252262,51.45213037456787],[-3.016573680270803,51.45213037704293],[-3.0155364817563717,51.45329544352313],[-3.0155364778083293,51.45329544214802],[-3.015536356742379,51.453295583849304],[-3.0155362687040728,51.453295682790326],[-3.0155362717746983,51.453295683890325],[-3.0145315435836957,51.45447208393521],[-3.015806668912078,51.45488828517725],[-3.0148465583218163,51.45606125579715],[-3.0148465570059484,51.456061255247356],[-3.0148465235372477,51.45606129773269],[-3.0148463610557714,51.456061496449045],[-3.0148463667589582,51.45606149837439],[-3.0139191207914267,51.457244750543744],[-3.01391911684244,51.457244749442886],[-3.0139190203801363,51.45724487799899],[-3.013918929655789,51.45724499394273],[-3.0139189331657055,51.45724499504318],[-3.0130248118310345,51.45843820226669],[-3.013024806126966,51.45843820061555],[-3.01302466030223,51.45843840428231],[-3.01302465237311,51.45843841497249],[-3.0130246528115316,51.458438415247215],[-3.0121637796657237,51.45964142999752],[-3.01216378668651,51.45964143192425],[-3.011336802688807,51.46085335968091],[-3.0113367947903513,51.460853357479],[-3.010543587572661,51.46207436424619],[-3.0105435853784397,51.4620743636955],[-3.0105435408513697,51.46207443551887],[-3.010543424925033,51.46207461424999],[-3.0105434301910137,51.46207461562653],[-3.0097845719363185,51.46330382488086],[-3.009784568425359,51.463303824054584],[-3.009784496985729,51.46330394577389],[-3.0097844154197686,51.46330407818104],[-3.009784419369175,51.46330407928205],[-3.009059961845752,51.46454140121598],[-3.009059960968163,51.46454140094083],[-3.0090599499391866,51.46454142122816],[-3.009059831748399,51.46454162272226],[-3.009059837453764,51.464541624099304],[-3.0083700229845705,51.46578665252302],[-3.008370017717535,51.46578665142068],[-3.0083699246110758,51.46578682934896],[-3.0083698813786097,51.46578690748158],[-3.008369883572975,51.46578690803232],[-3.007714942728764,51.46703922849056],[-3.0077149409728134,51.46703922821452],[-3.0077149171357758,51.4670392767418],[-3.0077148072552222,51.46703948674588],[-3.007714813400017,51.467039488123405],[-3.007094930117965,51.46829875137219],[-3.0070949270451464,51.46829875082056],[-3.007094882002086,51.468298848426045],[-3.007094801659082,51.46829901155377],[-3.0070948064872005,51.468299012655734],[-3.00651017100085,51.46956483953162],[-3.0065101652942388,51.46956483842875],[-3.0065100826790427,51.46956502980647],[-3.0065100508823854,51.46956509862361],[-3.006510053076909,51.46956509917438],[-3.0059608305826493,51.470837139536776],[-3.00596082268061,51.47083713815741],[-3.0054470047658146,51.472115458047206],[-3.005447012668059,51.47211545942662],[-3.004969066221087,51.47339891704969],[-3.006373702068897,51.47359486175733],[-3.0059370586653342,51.47486773750733],[-3.0059370507618905,51.474867736402246],[-3.005535941015447,51.476145437569095],[-3.0055359361851233,51.476145437015646],[-3.0055358887564974,51.476145604015265],[-3.0055358581996625,51.47614570081162],[-3.0055358612729903,51.47614570136331],[-3.005170564394639,51.477427349189334],[-3.005170563077569,51.477427348913714],[-3.005170551097379,51.477427395532224],[-3.005170499234602,51.47742757761354],[-3.0051705045043113,51.47742757816744],[-3.004841064681771,51.47871301119176],[-3.0048410638039336,51.478713010916586],[-3.004841056696183,51.478713041630726],[-3.0048409967890497,51.47871327582023],[-3.004841003376018,51.47871327664976],[-3.004547530526383,51.48000206765151],[-3.0045475248170965,51.48000206709715],[-3.004547485204127,51.480002266471224],[-3.004547470097892,51.480002332287285],[-3.0045474722936065,51.48000233256381],[-3.0042900498335263,51.481294124758044],[-3.004290048077049,51.48129412448198],[-3.0042900396007846,51.48129417439547],[-3.0042899964270293,51.48129439077223],[-3.00429000257577,51.481294391327054],[-3.004068712732109,51.48258879113965],[-3.004068707901124,51.48258879058615],[-3.0040686832909915,51.48258896281977],[-3.0040686672310963,51.48258905688739],[-3.0040686698662435,51.48258905716436],[-3.0038835772299217,51.48388570662943],[-3.0038835702021918,51.4838857060737],[-3.003734684241631,51.485184672845534],[-3.0037346934662343,51.485184673403516],[-3.003622179140599,51.486484529245594],[-3.0036221703543653,51.48648452896236],[-3.0035459879582493,51.48778568016947],[-3.003545984004727,51.487785679891154],[-3.003545980156554,51.48778580743528],[-3.0035459718810933,51.48778594786684],[-3.0035459758346166,51.48778594814517],[-3.0035061822469458,51.4890874855488],[-3.0035061809295454,51.48908748527317],[-3.003506180822708,51.489087526143294],[-3.003506174576681,51.48908773048802],[-3.003506180287806,51.48908773076815],[-3.0035027765542375,51.49038977097978],[-3.0049425208816327,51.49038338381007],[-3.0049751546564987,51.4916693047585],[-3.0049751511413207,51.491669304754964],[-3.0049751574227668,51.49166942462893],[-3.0049751610224993,51.49166956205517],[-3.0049751649770746,51.49166956205916],[-3.00504376137149,51.492955188356596],[-3.0050437692815715,51.49295518809025],[-3.005148282251877,51.494239613897996],[-3.005148272583178,51.49423961443687],[-3.005288716259205,51.49552296200775],[-3.0052887127430257,51.495522962278514],[-3.0052887278392246,51.49552307256084],[-3.005288744160475,51.49552321905154],[-3.0052887481160915,51.49552321878122],[-3.005465025449141,51.49680458462902],[-3.0054650219328627,51.49680458489979],[-3.005465042707442,51.49680470890259],[-3.0054650608255917,51.496804840583025],[-3.0054650643418706,51.49680484031225],[-3.00567715317777,51.49808409094418],[-3.005677153177065,51.49808409121847],[-3.005677153608779,51.49808409423616],[-3.005677195589144,51.49808434635652],[-3.0056772026218956,51.49808434581495],[-3.005925090465952,51.49936134552094],[-3.0073531311487747,51.49924544137685],[-3.0076332279335616,51.50050375204689],[-3.0076332195813182,51.50050375286156],[-3.007948601575779,51.50175932158635],[-3.007948610368433,51.50175932049778],[-3.008298932738563,51.503010760911174],[-3.0082989283421226,51.50301076145547],[-3.008298972374902,51.503010903858204],[-3.008299002430927,51.50301101141167],[-3.0082990055088463,51.50301101086608],[-3.0086842900713795,51.504258443641206],[-3.0086842812782653,51.504258444729814],[-3.009104497277144,51.5055017375568],[-3.00910449683693,51.50550173783067],[-3.0091044990188562,51.5055017441416],[-3.009104581046781,51.50550198642459],[-3.009104588082005,51.505501985334234],[-3.009559442423643,51.50674026255052],[-3.0095594380261774,51.50674026336916],[-3.0095594983056944,51.506740415387384],[-3.0095595332334266,51.50674051032755],[-3.0095595363115826,51.50674050978194],[-3.0100489765989376,51.507973642016346],[-3.0100489748400423,51.507973642288945],[-3.0100489988751398,51.50797369909134],[-3.0100490744487267,51.507973888976835],[-3.010049080165639,51.50797388788515],[-3.010573065398256,51.50920174492493],[-3.011961635554319,51.50896286805904],[-3.0125129406702533,51.51016949316176],[-3.0125129336337326,51.510169494526615],[-3.0130980517267716,51.511370172363385],[-3.0130980482080982,51.51137017318299],[-3.01309810684019,51.51137028652202],[-3.013098167643161,51.51137041110923],[-3.0130981711618308,51.511370410289636],[-3.0137168133642587,51.51256453005341],[-3.041047793230127,51.50688282721773],[-3.0405833306346888,51.50598734483601],[-3.0845461028109202,51.49736103955565],[-3.0843407148097066,51.49694092752785],[-3.094006645235382,51.49515676616768],[-3.0938613786466598,51.49484006310968],[-3.0966367528974343,51.49436032162276],[-3.0967682011353244,51.494646859303316],[-3.0981489555370203,51.49439188147311],[-3.0980244050061043,51.49412039633749],[-3.0979074911069633,51.49384765559069],[-3.099301630532202,51.49362289914078],[-3.0994120688793543,51.49388051470201],[-3.1021873274659293,51.4934006415272],[-3.1020898686853267,51.49317333622963],[-3.1034839660933105,51.49294853004305],[-3.1033989450484216,51.492735420252195],[-3.1061992358674084,51.492316203848645],[-3.106131456504444,51.4921327419682],[-3.1060688391241085,51.491948633722835],[-3.1074798226173517,51.4917696327269],[-3.1075372248359305,51.491938393751525],[-3.1075372252749567,51.491938394848766],[-3.1075372362490206,51.49193842721719],[-3.1075372371278194,51.491938427217306],[-3.107599362232722,51.49210657056508],[-3.1089994761937723,51.49189692056071],[-3.108942985163646,51.49174403910379],[-3.108890794179888,51.49159061475179],[-3.1088428891524504,51.49143660855863],[-3.108799295940409,51.49128209678704],[-3.1087600412720438,51.49112718340337],[-3.110184065330222,51.49099449272082],[-3.110219405256031,51.49113394229274],[-3.1102194061348936,51.49113394201854],[-3.110258632398591,51.49127295723887],[-3.110258631519728,51.49127295751307],[-3.1102586372268033,51.491272975617264],[-3.1102586398604903,51.49127298521792],[-3.11025864029996,51.49127298494368],[-3.110301746788293,51.491411551818764],[-3.1103017459094255,51.49141155209298],[-3.110301753811991,51.491411575683316],[-3.1103017551291052,51.49141157952361],[-3.110301755568581,51.49141157924935],[-3.110348729584826,51.49154965525767],[-3.1103487291453535,51.49154965553191],[-3.1103487322189287,51.49154966348684],[-3.110348738804415,51.49154968323689],[-3.1103487396832854,51.49154968296269],[-3.1103995667724322,51.49168722613069],[-3.110399566332958,51.49168722640494],[-3.1103995716020254,51.49168723984602],[-3.1103995768709476,51.491687253835714],[-3.1103995773104205,51.49168725356145],[-3.1104542430168975,51.49182422164099],[-3.1104542425774233,51.49182422191524],[-3.1104542535548783,51.49182424934606],[-3.1104542544337512,51.49182424907184],[-3.110512741225293,51.49196060063696],[-3.110512740346416,51.49196060091116],[-3.1105127482508355,51.49196061846696],[-3.1105127526421406,51.491960628342106],[-3.11051275308162,51.49196062806786],[-3.1105750429858454,51.492096321692216],[-3.1105750421069693,51.492096321966415],[-3.110575053525082,51.49209634528281],[-3.1105750552816427,51.49209634912315],[-3.110575055721119,51.4920963488489],[-3.110641129886004,51.49223134338005],[-3.1106411294465253,51.49223134365429],[-3.1106411373517813,51.49223135846713],[-3.110641143060758,51.49223137053678],[-3.110641143500239,51.49223137026253],[-3.110710983072947,51.49236562454768],[-3.1093454618115115,51.49265067014753],[-3.1092678585261964,51.49250148227647],[-3.1091944246345355,51.49235144315081],[-3.106433143014989,51.492861636732435],[-3.1065212460334823,51.49304166872812],[-3.1065212451546573,51.49304166872798],[-3.106521254375861,51.493041686558534],[-3.1065212631576555,51.49304170438903],[-3.106521264036474,51.49304170438916],[-3.1066143866367515,51.493220748998965],[-3.10797994152355,51.492935732205076],[-3.108069867112475,51.493098867437354],[-3.108069866233561,51.49309886771154],[-3.1080698829219737,51.49309889596619],[-3.1080698851175965,51.49309890035522],[-3.108069885557098,51.493098900080966],[-3.108164358722404,51.49326103079323],[-3.108164358282904,51.49326103106746],[-3.1081643617963377,51.49326103682812],[-3.108164377167252,51.49326106316252],[-3.108164378046165,51.49326106288834],[-3.1082633904865373,51.49342217233654],[-3.1096031702522557,51.493092914927196],[-3.1096972481263077,51.49323834437674],[-3.109697247247408,51.49323834465094],[-3.1096972577887705,51.49323836028703],[-3.10969726657311,51.49323837372854],[-3.1096972670126077,51.4932383734543],[-3.1097953971883965,51.49338275574332],[-3.109795396748901,51.49338275601757],[-3.1097954165142205,51.493382784820916],[-3.1097954173931295,51.49338278454671],[-3.1098975902394828,51.493526104577775],[-3.1112079186303734,51.493153509774565],[-3.1113034505629327,51.49328144949575],[-3.111303449244554,51.49328145004422],[-3.1114025645218786,51.493408354570526],[-3.1114025640823892,51.49340835484478],[-3.111402565400223,51.49340835649068],[-3.111402583849642,51.493408380082],[-3.1114025847285514,51.49340837980778],[-3.1115052328570605,51.493534185488514],[-3.1140597676170616,51.492704352781324],[-3.1141423161983495,51.4928012956438],[-3.114142315758886,51.49280129591807],[-3.1141423293776316,51.492801311005394],[-3.1141423328920483,51.492801315394395],[-3.114142333331515,51.49280131512014],[-3.1142275966684556,51.49289736309702],[-3.114227597547329,51.49289736282279],[-3.1143155167838223,51.492992448152656],[-3.1143155159049436,51.49299244842689],[-3.114406098959751,51.493086579881876],[-3.1144060985202975,51.493086580156145],[-3.114406116972013,51.493086599083945],[-3.114406117411482,51.493086598809676],[-3.1144992997141023,51.49317971054785],[-3.1144992992746316,51.49317971082212],[-3.114499312454666,51.4931797234407],[-3.114499318165945,51.49317972920133],[-3.1144993186054197,51.49317972892707],[-3.114595090500162,51.49327181134122],[-3.114595089621288,51.49327181161544],[-3.114595107194842,51.493271827800186],[-3.114595109391501,51.49327182999472],[-3.1145951098309674,51.493271829720456],[-3.114693441451956,51.493362854823935],[-3.1146934410124993,51.49336285509821],[-3.1146934550715075,51.493362867442535],[-3.1146934607828904,51.49336287292886],[-3.1146934612223545,51.49336287265461],[-3.1147943437914716,51.493452830840056],[-3.1159666476089996,51.49293096142357],[-3.1160552443873506,51.49300709764784],[-3.116055243947906,51.49300709792212],[-3.1160552479020946,51.493007101213905],[-3.1160552619614026,51.49300711328378],[-3.116055262400862,51.49300711300951],[-3.1161459749476808,51.49308227279458],[-3.116145974068771,51.493082273343134],[-3.1162388111759207,51.49315646299347],[-3.11623881249424,51.493156462444965],[-3.116333671355469,51.49322960020942],[-3.1163336748704076,51.493229602678284],[-3.1163336906874735,51.49322961502252],[-3.116333691126921,51.49322961474826],[-3.116430580972114,51.49330170775418],[-3.116430580532659,51.49330170802846],[-3.116529491698675,51.49337274859003],[-3.1165295000467332,51.49337275435071],[-3.116529511470346,51.49337276258023],[-3.1166303943109805,51.493442714756846],[-3.117692050424383,51.49283553644904],[-3.117607964508908,51.492777232025375],[-3.1175255543763454,51.49271804411056],[-3.118620480922344,51.49213435564833],[-3.118555860935884,51.49208627564798],[-3.1184926208726376,51.492037518426905],[-3.1196194834609257,51.49147803009748],[-3.1196669140363884,51.49151459735865],[-3.1196669157938786,51.49151459873018],[-3.1196669237025736,51.49151460476492],[-3.119715369837354,51.49155064977479],[-3.119715369397932,51.491550650049064],[-3.119764825380854,51.49158616896606],[-3.1197648306533723,51.49158617253206],[-3.119764835486486,51.49158617609804],[-3.1198152674863815,51.491621143410434],[-3.119815267046968,51.49162114368472],[-3.1198666891242173,51.49165557036349],[-3.11986668956363,51.49165557008921],[-3.119919056023364,51.491689424862074],[-3.119972350169302,51.4917226964812],[-3.1189631079334754,51.49236374497958],[-3.1190354116872605,51.49240733587912],[-3.1190354112478325,51.492407336153406],[-3.119035422671783,51.49240734273691],[-3.1190354257474486,51.49240734465709],[-3.1190354261868762,51.492407344382805],[-3.1191089371927823,51.49245014146387],[-3.119108937632209,51.49245014118959],[-3.119183633920624,51.49249213073439],[-3.119183634360053,51.4924921304601],[-3.1192594781430967,51.492533291070075],[-3.119259477703677,51.49253329134435],[-3.119336476449927,51.492573627131954],[-3.1193364760104996,51.49257362740624],[-3.119336479086215,51.4925736290521],[-3.1193364918284785,51.492573635635615],[-3.1193364922679074,51.49257363536133],[-3.1194146064311945,51.49261312657376],[-3.119414606870648,51.49261312602517],[-3.119493798661987,51.49265175290976],[-3.1194937982225572,51.49265175318405],[-3.119574073791729,51.492689518207456],[-3.119574073352297,51.49268951848174],[-3.1195740878522518,51.49268952506527],[-3.119574089609824,51.49268952588821],[-3.11957409004925,51.49268952561393],[-3.1196553927126414,51.49272640326279],[-3.118819196875057,51.49345811426282],[-3.118922140781739,51.49350311537215],[-3.118922141221206,51.493503114823575],[-3.119026286353948,51.49354697042155],[-3.1190262859145106,51.49354697069583],[-3.1191316630270465,51.49358969312364],[-3.1191316625876024,51.49358969339794],[-3.1191316836788943,51.49358970162751],[-3.119131684118324,51.49358970135324],[-3.1192382180684874,51.49363126098115],[-3.1192382176290487,51.49363126125544],[-3.1192382290535416,51.493631265370254],[-3.119238239159789,51.49363126948502],[-3.1192382395992233,51.49363126921073],[-3.1193459404883153,51.4936716698761],[-3.12007678376478,51.49289724490577],[-3.1201638170124424,51.4929286150219],[-3.1201638165730206,51.49292861529618],[-3.1201638183306284,51.492928615844825],[-3.1201638341490274,51.49292862160544],[-3.1201638345884573,51.492928621331146],[-3.120251731454148,51.49295903794872],[-3.1202517310147195,51.49295903822301],[-3.1202517450755676,51.492959042886376],[-3.120251749030178,51.49295904425795],[-3.120251749469609,51.49295904398367],[-3.120340483145988,51.49298849887127],[-3.1203404884188233,51.49298850051717],[-3.1203405007220786,51.49298850463189],[-3.1204300632959825,51.493016993947315],[-3.1205203906103502,51.493044497389384],[-3.120611491448777,51.49307101797382],[-3.1206115037521256,51.49307102126562],[-3.120611509903782,51.493071023185834],[-3.1207033192298175,51.49309654170877],[-3.120703322305655,51.49309654253173],[-3.120703338124254,51.493096546920775],[-3.1207958475842963,51.49312106146038],[-3.1207958651605625,51.493121065849444],[-3.1207958660393715,51.493121066123756],[-3.1208890470670343,51.49314456899756],[-3.1208890554157738,51.49314457091777],[-3.1208890659615394,51.49314457366092],[-3.1209828899901786,51.49316705773512],[-3.120982900975377,51.49316706020398],[-3.12098290888472,51.49316706212418],[-3.1210773662420452,51.49318852492844],[-3.12107736624207,51.49318852437984],[-3.121172390571902,51.4932089510996],[-3.121172409027094,51.49320895466574],[-3.1211724094664954,51.49320895494004],[-3.1212680095513505,51.49322834694555],[-3.121268009551371,51.49322834639695],[-3.121364117716348,51.49324669024534],[-3.1213641212316348,51.49324669079399],[-3.1213641366109814,51.49324669381146],[-3.121460762956551,51.49326399087312],[-3.1214607629565703,51.49326399032452],[-3.1215578384891196,51.49328022935117],[-3.1215578569443823,51.49328023236866],[-3.121557857823214,51.49328023236866],[-3.1216553922035875,51.49329541363361],[-3.1217533168771956,51.493309527260315],[-3.121753320831905,51.493309527808954],[-3.121753336211327,51.493309530003486],[-3.1218516599599297,51.49332257708825],[-3.1218516599599404,51.49332257653967],[-3.1219503133497977,51.493334548303395],[-3.1219503313657224,51.493334550223636],[-3.1219503331233716,51.49333455049795],[-3.122049306920112,51.493345445568266],[-3.1221485901316504,51.49335526229852],[-3.1221485932075423,51.49335526257283],[-3.1221486099052504,51.493355264218735],[-3.122248152431622,51.49336399767045],[-3.122248152431633,51.49336399712187],[-3.1223479041727353,51.493371643728295],[-3.12234791735515,51.49337164455126],[-3.1223479239463563,51.493371645099884],[-3.122447894122887,51.49337820458623],[-3.1225480317557666,51.49338367366019],[-3.1226482876234902,51.493388050126846],[-3.122648292896461,51.49338805040115],[-3.122648307836546,51.49338805094979],[-3.1227486709466077,51.49339133426016],[-3.122685855756361,51.49428929291711],[-3.1228114331900625,51.4942920309371],[-3.1228114577977544,51.494292031211444],[-3.1229370673262737,51.49429340008433],[-3.1230627462892877,51.494293400084345],[-3.123188354938961,51.494292031211444],[-3.123188379986076,51.4942920309371],[-3.1233139569803567,51.49428929319141],[-3.1233139569803527,51.49428929264282],[-3.123439413544536,51.49428518849344],[-3.1235647610923873,51.49427971684353],[-3.1236899363358326,51.49427288016247],[-3.1238149265204838,51.49426467899949],[-3.1239396173854908,51.49425512103638],[-3.1240640480285014,51.49424420407938],[-3.124188154283037,51.494231932792985],[-3.1241881573589882,51.49423193251866],[-3.124188178890634,51.49423193032407],[-3.1243118983481257,51.494218311567366],[-3.124435241983513,51.4942033442443],[-3.124435259560336,51.49420334204972],[-3.124435267469901,51.49420334095243],[-3.1245581733143384,51.49418703192237],[-3.1245581733143197,51.49418703137378],[-3.124680581596411,51.49416938941645],[-3.124680588627121,51.49416938831916],[-3.124680605764486,51.49416938585024],[-3.1248025015337935,51.494150412338875],[-3.1248025081250757,51.494150411241584],[-3.1248025257018366,51.494150408498356],[-3.1249238724766344,51.49413011001824],[-3.124923878628491,51.49413010892096],[-3.1249238966446455,51.4941301059034],[-3.125044657503987,51.4941084884914],[-3.1250446812325463,51.49410848410225],[-3.1251648183769065,51.494085554343954],[-3.1251648385900777,51.494085550229144],[-3.1251648429842547,51.494085549406186],[-3.1252843203720593,51.49406131443591],[-3.1252843304786286,51.494061312241335],[-3.1252843441005407,51.49406130949811],[-3.1254031498583412,51.494035770963876],[-3.125403149418902,51.494035770689585],[-3.1255212000488424,51.494008947247394],[-3.125521215867761,51.4940089434069],[-3.125521223337815,51.49400894176096],[-3.125638505648787,51.49398083615629],[-3.125638519710024,51.49398083259011],[-3.1256385289377215,51.49398083039554],[-3.1257550068893614,51.493951451134706],[-3.1257550196323383,51.49395144784287],[-3.1257550301782455,51.49395144509964],[-3.1258706681699713,51.493920801511976],[-3.12587066992762,51.49392080096335],[-3.1258706918982346,51.49392079520259],[-3.1259854784974017,51.4938888897595],[-3.1260993570123365,51.4938557380999],[-3.1260993565729005,51.49385573782561],[-3.1262122663578165,51.49382135860592],[-3.1262122791006637,51.493821354491125],[-3.1262122892070816,51.493821351473585],[-3.1263242214667852,51.49378574634258],[-3.1263242219061826,51.493785746068276],[-3.1263242429977764,51.49378573948456],[-3.126435162573005,51.49374892024078],[-3.1264351797098557,51.493748914205774],[-3.1264351849827423,51.49374891255983],[-3.1265450580328262,51.493710890453315],[-3.1265450584722614,51.4937108907276],[-3.126653894658047,51.493671661920814],[-3.1266538942186073,51.49367166164654],[-3.126761574455745,51.49363126921072],[-3.1267615885166267,51.493631263724325],[-3.1267615951076735,51.493631261255445],[-3.1268681294972462,51.49358970162751],[-3.126868136527675,51.493589698884314],[-3.12686815102792,51.4935896931236],[-3.126973505291592,51.493546979474054],[-3.127768303665226,51.49429645923226],[-3.1278933288509165,51.49424381086976],[-3.127893328411471,51.49424381059549],[-3.12801681298835,51.494189829908194],[-3.128016819579355,51.49418982689064],[-3.1280168384735965,51.49418981866094],[-3.12801683803415,51.49418981838668],[-3.1281387947395083,51.494134500715745],[-3.128138795178968,51.49413450099002],[-3.1282592090680446,51.49407785182684],[-3.128259221810531,51.49407784551746],[-3.1282592336742665,51.494077840031],[-3.12837802037812,51.49401989888277],[-3.1283780208175753,51.49401989915705],[-3.128378036635774,51.49401989120174],[-3.1283780449842853,51.494019887086914],[-3.1284951957114036,51.49396066026778],[-3.1284952062568143,51.49396065478137],[-3.1284952181204226,51.493960648746274],[-3.1286107179277307,51.49390014202204],[-3.128610717488269,51.49390014174775],[-3.1287244846462414,51.49383839874037],[-3.1287244850856943,51.49383839901465],[-3.1288365529854922,51.493775400801],[-3.128836552106585,51.49377540025244],[-3.1289467959605664,51.49371121706355],[-3.128946796400023,51.493711217337825],[-3.1290552522367157,51.4936458283304],[-3.1290552601455706,51.49364582339266],[-3.1290552728876375,51.4936458157117],[-3.129161861617598,51.49357926862237],[-3.1291618620570496,51.49357926889664],[-3.1292665959830432,51.4935115565981],[-3.129266600816162,51.493511553306284],[-3.129266615754975,51.49351154370511],[-3.1292666153155277,51.49351154343085],[-3.1293694188651617,51.49344271475685],[-3.1293694258951446,51.493442710093426],[-3.129369439515708,51.49344270076661],[-3.1293694390762625,51.49344270049235],[-3.1294703017057546,51.49337276230594],[-3.1294703021452084,51.4933727625802],[-3.1294703148869414,51.49337275352772],[-3.129470321477497,51.49337274886432],[-3.129569212871953,51.49330172256726],[-3.129569224295488,51.49330171406343],[-3.12956923308285,51.49330170775412],[-3.1296661220493287,51.49322961557114],[-3.1296661260036087,51.493229612553655],[-3.129666141820753,51.49322960075801],[-3.129666141381295,51.493229600483744],[-3.1297610015607678,51.4931564627192],[-3.1297610050756592,51.493156459976035],[-3.1297610195745964,51.493156448729046],[-3.129761019135141,51.49315644845477],[-3.129853820214935,51.49308228843052],[-3.1298538290020548,51.49308228102401],[-3.129853839107331,51.49308227306882],[-3.129944551654098,51.49300711300944],[-3.129944553850861,51.493007111089234],[-3.1299445687889516,51.49300709874503],[-3.129944568349499,51.49300709847075],[-3.1300331655671423,51.49293096142357],[-3.130033166006595,51.49293096169784],[-3.130033179187074,51.492930949902295],[-3.1300331840199576,51.49293094578757],[-3.1301196549294845,51.492853840535474],[-3.130119654490032,51.492853840261205],[-3.1302039402243813,51.492775819751685],[-3.13020394154244,51.49277581865442],[-3.1302039564801247,51.492775804664376],[-3.1302039560406785,51.49277580439012],[-3.130286047819171,51.492696877405876],[-3.130286051333858,51.492696873839805],[-3.13028606451408,51.49269686122135],[-3.130286064074625,51.49269686094708],[-3.1303659364220224,51.492617051632344],[-3.1303659474053864,51.49261704038551],[-3.130365951359391,51.49261703627082],[-3.1304435792404184,51.492536368495465],[-3.130443580119279,51.492536368769706],[-3.1305189569517875,51.49245485076749],[-3.1305189666169477,51.492454840069314],[-3.1305189710101877,51.492454835131696],[-3.130592056383624,51.49237250832828],[-3.1305920555047635,51.49237250805404],[-3.1306628134038728,51.492289416069134],[-3.1306628230687275,51.492289403999465],[-3.1306628274619426,51.492289399061846],[-3.1307312513056837,51.49220554738601],[-3.1307312517449466,51.492205546563085],[-3.1307312644850396,51.49220553120165],[-3.1307973331961976,51.49212094699565],[-3.1307973353927365,51.492120944252534],[-3.130797346814658,51.49212092943978],[-3.130861040634448,51.492035638218475],[-3.1308610498597047,51.49203562560022],[-3.130861052495448,51.49203562175989],[-3.1309223521050957,51.491949649586566],[-3.1309223604515695,51.491949637242676],[-3.1309223644052184,51.49194963175647],[-3.1309812500472534,51.49186300579154],[-3.130981255318664,51.49186299783659],[-3.130981261907937,51.491862987961476],[-3.13103771690069,51.491775732622074],[-3.132377419449758,51.49210505104286],[-3.1323115461392157,51.492206867147004],[-3.1322428320804665,51.492307955728],[-3.1335633327586705,51.492666246981166],[-3.1334815976228527,51.492780889336764],[-3.1333966515488325,51.49289464731211],[-3.1346963437251683,51.49328147583007],[-3.134791895863929,51.49315350950011],[-3.13479190464892,51.49315349688161],[-3.1347919138734652,51.493153484811636],[-3.134883853699953,51.49302452307136],[-3.1348838545788413,51.493024523345575],[-3.13497219178181,51.49289455495627],[-3.1349721930993932,51.49289455248747],[-3.134972209790638,51.49289452834769],[-3.1349722089117473,51.492894528073485],[-3.1350568824616616,51.49276364192152],[-3.1350568833405514,51.492763642195726],[-3.1351378998523716,51.49263182841362],[-3.135137907758065,51.49263181469799],[-3.1351379161032193,51.4926318012566],[-3.135215219383816,51.492499150375515],[-3.135215228606796,51.49249913336818],[-3.13521523387732,51.492499124590154],[-3.1352888309819233,51.49236562427328],[-3.133923325873954,51.49208056276232],[-3.1339854075210334,51.49196122761915],[-3.133985408399905,51.49196122789336],[-3.13404415715143,51.49184120865928],[-3.1340441637389773,51.49184119439524],[-3.1340441681307856,51.491841185343056],[-3.134099540531002,51.49172056897906],[-3.134099547557514,51.4917205530692],[-3.134099551509898,51.491720544017056],[-3.1341515431924014,51.49159934287166],[-3.1341515436316656,51.49159934232303],[-3.1341515532927784,51.49159931928121],[-3.1342001480338335,51.49147757011615],[-3.134200153303156,51.49147755612653],[-3.1342001576943606,51.49147754487997],[-3.134245341467831,51.49135528473079],[-3.1342453458586084,51.49135527183844],[-3.1342453498105303,51.4913552611405],[-3.1342871164937525,51.49123250208074],[-3.134287115614968,51.49123250208083],[-3.1343254358169523,51.49110933326329],[-3.1357411733157914,51.4912729857665],[-3.135780407919946,51.491133941744145],[-3.1357804123091184,51.491133924737284],[-3.1357804149427912,51.49113391513662],[-3.1358157553076427,51.49099446446748],[-3.135815754428861,51.49099446446758],[-3.1358471847913134,51.49085467902254],[-3.135847186984872,51.49085466695325],[-3.135847190495828,51.49085465214086],[-3.135874706940392,51.49071454563828],[-3.135874707819169,51.49071454563819],[-3.13589831301382,51.490574104640004],[-3.1358983116956574,51.49057410464015],[-3.135917978917109,51.49043348385484],[-3.1359179802352672,51.490433483854694],[-3.135933719605914,51.49029261416041],[-3.1344966144212014,51.49023789411375],[-3.134507101733617,51.49011259309125],[-3.1345071026123823,51.490112593091155],[-3.1345140870863366,51.48998717308997],[-3.134514087520674,51.48998715306629],[-3.134514087958604,51.48998714730601],[-3.13451756437201,51.48986169445638],[-3.134517564369798,51.48986168567889],[-3.1345175648052392,51.48986167004396],[-3.1345175327511905,51.48973619860965],[-3.1345175331905697,51.4897361986096],[-3.1345175327471817,51.48973618270045],[-3.1345175327446246,51.489736172551474],[-3.134513993140725,51.489610722031074],[-3.1345139935801023,51.489610722031024],[-3.1345139926978915,51.489610708316306],[-3.134513992255474,51.4896106962473],[-3.134513991816095,51.48961069624733],[-3.134506944693918,51.4894852773381],[-3.1330685735861783,51.48952461702638],[-3.1330747371949634,51.4896343723961],[-3.133077830896138,51.48974415710268],[-3.1330778551081173,51.48985397635794],[-3.1330748097937855,51.48996376213638],[-3.1330686953676965,51.49007350209437],[-3.1330595122433444,51.49018317895072],[-3.133047268287283,51.490292700266146],[-3.1330319586551676,51.49040211513917],[-3.133013599995111,51.49051130177954],[-3.132992187020613,51.49062029557053],[-3.1315646964821116,51.49050309108442],[-3.1315437309934553,51.49059629854395],[-3.131543730554528,51.490596301012644],[-3.1315201624370497,51.4906892645322],[-3.1314939947485803,51.49078197121806],[-3.131465241085793,51.490874372242764],[-3.131433915047427,51.490966428104734],[-3.131400017057327,51.49105813496177],[-3.1313635514926133,51.49114948129088],[-3.131324547764603,51.491240392753305],[-3.1312830058595056,51.49133087071797],[-3.1312389446499735,51.49142087376214],[-3.129865731197062,51.49115068504252],[-3.12990244740585,51.49107568969952],[-3.1299024487235734,51.491075686682194],[-3.129902454433935,51.4910756751614],[-3.129937068414506,51.49100029097798],[-3.1299370688537747,51.49100029015505],[-3.129937075442439,51.49100027561696],[-3.1299695766624938,51.490924525910756],[-3.1299695779802046,51.490924522893415],[-3.129969582811748,51.49092451137268],[-3.129999961178564,51.490848419186975],[-3.130028213627466,51.49077199165528],[-3.1300282149450798,51.490771988089335],[-3.1300282188978983,51.49077197711724],[-3.130054324356716,51.49069526910162],[-3.130054324795846,51.49069526745583],[-3.130054329626965,51.490695253466406],[-3.130078286789269,51.49061827402016],[-3.130100093029992,51.490541028356375],[-3.1301000952256897,51.49054102040164],[-3.130100096982175,51.49054101354412],[-3.1301197356239063,51.49046355789578],[-3.130119736062867,51.490463555152786],[-3.1301197395759055,51.49046354198635],[-3.130137210191212,51.490385884034865],[-3.130137211947341,51.490385874982955],[-3.1301372132646,51.49038586922266],[-3.130152510156033,51.49030803283312],[-3.1301656311389854,51.490230026783976],[-3.130165631138771,51.49023002541249],[-3.130165633772794,51.49023001087462],[-3.1301765692002164,51.490151888655014],[-3.1301765700789845,51.49015188865497],[-3.1301853239129995,51.49007362832156],[-3.130185323034234,51.49007362832161],[-3.130191885633037,51.48999531545595],[-3.130191886509642,51.48999530174107],[-3.1301918865094263,51.48999530036959],[-3.1301962583225107,51.48991692784031],[-3.1301984393600515,51.48983848879026],[-3.13019842701056,51.4897600690745],[-3.1301984265686325,51.48976005289103],[-3.1301962221605426,51.48968164620067],[-3.1301962217199977,51.489681638794686],[-3.1301962212792365,51.48968163001724],[-3.130191824827238,51.48960325802155],[-3.1301918248270217,51.48960325665008],[-3.1301918239461513,51.48960324320961],[-3.1301918235067734,51.489603243209636],[-3.130185237222985,51.48952493114354],[-3.1301852376623622,51.489524931143514],[-3.130185235902611,51.48952491688021],[-3.1301852359023097,51.48952491496013],[-3.130176461119839,51.48944668668699],[-3.13017645980003,51.489446675989505],[-3.1301764593599652,51.489446671600774],[-3.130165499169329,51.48936855070939],[-3.130165497850169,51.489368544126364],[-3.13016549653058,51.48936853480037],[-3.1301523513837037,51.489290530341876],[-3.1301523505049507,51.48929053034193],[-3.1301370296481608,51.489212696077196],[-3.130137030087536,51.48921269607717],[-3.1301370274493197,51.48921268345969],[-3.130137027009563,51.48921268099105],[-3.1301195326520026,51.48913502542224],[-3.130119533091376,51.489135025422215],[-3.130119530013924,51.48913501362765],[-3.1301195291345363,51.489135009513255],[-3.1300998665632647,51.48905755650291],[-3.130099865244463,51.48905755211425],[-3.1300998626065692,51.489057541416834],[-3.1300780331516065,51.48898029836978],[-3.130054052649588,51.48890332096608],[-3.1300540500121707,51.48890331328594],[-3.130054047814217,51.488903306154356],[-3.1300279197916665,51.48882660152418],[-3.1300279162751377,51.488826591375414],[-3.130027914077403,51.488826585615314],[-3.1299996398641547,51.48875016280895],[-3.1299692396893657,51.488674073939976],[-3.12996923485455,51.488674062419804],[-3.1299692335359808,51.488674059402626],[-3.129936710925898,51.488598313246705],[-3.1299367043331636,51.48859829870938],[-3.129936703893672,51.48859829788652],[-3.1299020689670853,51.4885229177565],[-3.129902063253566,51.488522906236376],[-3.1299020619350078,51.48852290321919],[-3.1298653252498068,51.48844791215351],[-3.1298653186574104,51.48844789953626],[-3.1298653173388966,51.48844789679338],[-3.12982649033149,51.488373318104614],[-3.131191756049895,51.48808803414855],[-3.131142656270146,51.487999042323636],[-3.131142650996191,51.48799903327221],[-3.1311426466011403,51.487999025317905],[-3.1310910770212144,51.487910600338196],[-3.1324395406341736,51.487595729431455],[-3.132376473823123,51.487493197764955],[-3.132376472944459,51.48749319803932],[-3.1323105766708657,51.48739140963124],[-3.1323105771101694,51.48739140935691],[-3.1322418175492714,51.4872903145575],[-3.129601375214836,51.48800729897621],[-3.1296504752712275,51.48807949599366],[-3.1283204015731427,51.48842352680552],[-3.1283580607987513,51.488481704758364],[-3.1270185513184807,51.48881117636567],[-3.1269903140074184,51.48876755156512],[-3.1269608500561734,51.48872422386199],[-3.1269301911063283,51.48868124098195],[-3.1269301915456733,51.48868124070765],[-3.126898329690202,51.488638590032345],[-3.126898328811373,51.4886385889352],[-3.1268983230989202,51.488638581255074],[-3.126865274159594,51.48859628445248],[-3.1268310469272738,51.488554353316026],[-3.1267956537078674,51.48851280210772],[-3.126759103731322,51.48847164234669],[-3.126721416773122,51.48843089624924],[-3.126721417212465,51.488430895974936],[-3.1266825884411578,51.4883905577799],[-3.126682588880502,51.4883905575056],[-3.126642639389329,51.48835064860634],[-3.126642636313551,51.488350645863456],[-3.126642631040715,51.488350640377696],[-3.1266015797257807,51.48831118052185],[-3.126601574013616,51.488311175310386],[-3.1266015718166122,51.488311173116074],[-3.1265594239522563,51.48827216641677],[-3.1265594186795154,51.48827216175388],[-3.1265594151643397,51.48827215846243],[-3.1265161834946924,51.488233617810046],[-3.1265161839340383,51.48823361753573],[-3.1264718719755935,51.488195545123354],[-3.1264718706574164,51.48819554402621],[-3.1264718636271245,51.48819553799189],[-3.126426503896296,51.48815796206989],[-3.1264265021387394,51.488157960698466],[-3.1264264942296944,51.48815795411557],[-3.126380081894308,51.48812087111704],[-3.126380081454966,51.48812087139135],[-3.126332649030822,51.488084306549396],[-3.1263326494701618,51.488084306275084],[-3.1262841916854867,51.48804825629708],[-3.126284191246101,51.48804825602279],[-3.1262841824583685,51.48804824943992],[-3.1262347344648127,51.4880127401075],[-3.126234729192206,51.48801273654178],[-3.126234724358963,51.48801273297607],[-3.1261842923084453,51.48797776840225],[-3.126184284838937,51.48797776346514],[-3.1261842817632437,51.487977761270834],[-3.126132879716457,51.48794335105442],[-3.126132871807588,51.48794334584298],[-3.1261328696106827,51.48794334447156],[-3.1260805133857095,51.48790949958268],[-3.126027197710169,51.48787621700295],[-3.125018128826975,51.488517319940556],[-3.124981984626287,51.488495530440176],[-3.1249819789143665,51.488495527148714],[-3.124981977156852,51.48849552605157],[-3.124945222286996,51.488474129617046],[-3.1249078747623784,51.48845313694506],[-3.124907874323026,51.48845313721936],[-3.1248699455672306,51.48843255406942],[-3.124831447003865,51.488412387846786],[-3.124831446564512,51.488412388121084],[-3.1247923984044967,51.48839264842526],[-3.1247923988438533,51.488392648150956],[-3.1247527887843254,51.48837332894706],[-3.124712661201707,51.488354452177596],[-3.1255689976825543,51.4876319191109],[-3.1255080104897504,51.48760425789544],[-3.1255080078535347,51.48760425679833],[-3.1255079995055013,51.48760425295835],[-3.1254462611194938,51.487577265947714],[-3.1254462558470752,51.487577263753444],[-3.1254462483778016,51.487577260462054],[-3.1253837662664434,51.487550950946456],[-3.125383756600346,51.4875509468322],[-3.1253837535247793,51.48755094573508],[-3.1253205457006317,51.4875253208447],[-3.125320536913306,51.48752531755332],[-3.1253205325196323,51.48752531563332],[-3.1252566183132195,51.48750038359553],[-3.1252566117227367,51.48750038112699],[-3.1252566046928716,51.48750037838416],[-3.125192001677091,51.487476146054874],[-3.1259226503789592,51.48670168548574],[-3.1258356078998935,51.486670313575075],[-3.1258356083392296,51.48667031330076],[-3.1257477022757705,51.486639894526334],[-3.1257476882163058,51.48663988986362],[-3.1257476842620697,51.486639888492235],[-3.125658959424965,51.486610438211684],[-3.125658959864294,51.48661043793739],[-3.1255693890093155,51.486581947097704],[-3.125569388569983,51.48658194737201],[-3.125479070108875,51.486554447239016],[-3.1253879798725843,51.48652793067977],[-3.125387978993874,51.4865279304055],[-3.125387960980313,51.48652792519423],[-3.1252961626707396,51.48650241058355],[-3.1252961595952655,51.48650240976072],[-3.1252961437785074,51.48650240537228],[-3.125203645738505,51.48647789462844],[-3.125203646177836,51.486477894354145],[-3.1251104558714218,51.48645438966976],[-3.125110447963074,51.48645438774983],[-3.1251104391760234,51.48645438555561],[-3.125016625137116,51.48643190420854],[-3.124922161438577,51.486410440437496],[-3.124441624336071,51.48725770869888],[-3.124370350313702,51.4872423876199],[-3.1242986594131836,51.48722784605311],[-3.1242265854617504,51.48721408975762],[-3.124154125380539,51.48720111873276],[-3.124081313435972,51.48718893901204],[-3.1240813107998355,51.48718893873778],[-3.1240812984978485,51.48718893654352],[-3.124008172471071,51.48717755443476],[-3.1240081610478168,51.48717755278908],[-3.1240081575329635,51.48717755224053],[-3.1239347244500757,51.48716696856599],[-3.123860989579707,51.48715718442226],[-3.123860980353243,51.48715718332513],[-3.123860976399041,51.487157182776585],[-3.1237869942175913,51.487148205020134],[-3.1237869792795148,51.487148203374446],[-3.1237127445109567,51.48714003173055],[-3.123712744510966,51.487140032279136],[-3.123638307677314,51.48713267195869],[-3.1236382944966716,51.48713267086158],[-3.123638292299897,51.48713267058729],[-3.1235636613056785,51.48712612241273],[-3.123488841419254,51.487120387206616],[-3.123413874375369,51.48711546798564],[-3.123338781259067,51.48711136666958],[-3.1233387795016507,51.48711136666958],[-3.1233387658816687,51.48711136584673],[-3.123263569535369,51.48710808353247],[-3.1231756854823436,51.48800522222903],[-3.123225827317188,51.488007411304],[-3.1232758799694946,51.48801014483641],[-3.12332586013683,51.4880134244721],[-3.1231628865463623,51.48890646192293],[-3.1231379012518956,51.488904822484706],[-3.1231128693865364,51.488903455417656],[-3.1231128680684224,51.48890345541765],[-3.12311286411408,51.48890345514335],[-3.123087802812868,51.48890236099601],[-3.1230627094391283,51.48890154004266],[-3.1230375967341795,51.488900992557575],[-3.1230124677731705,51.48890071881503],[-3.1229873454029566,51.48890071881503],[-3.122962216441948,51.48890099255757],[-3.12293710417637,51.48890154004266],[-3.122912015196343,51.488902360996015],[-3.1228869490620466,51.48890345514336],[-3.122886945107705,51.48890345541765],[-3.1228869437895903,51.48890345541765],[-3.1228619119242316,51.488904822759004],[-3.1228369270691356,51.48890646192293],[-3.1228119861482626,51.488908373732336],[-3.122787097948598,51.488910557364385],[-3.1227622848776613,51.48891301117337],[-3.122524672383358,51.48802652189716],[-3.1225743076910613,51.48802161409948],[-3.122624063808406,51.48801724856546],[-3.1226739539180226,51.48801342419781],[-3.1225109871342704,51.48712038665808],[-3.122585954178153,51.48711546743711],[-3.1226610472944527,51.48711136612102],[-3.1225481030522446,51.48621532151448],[-3.1226483625976673,51.48621094463202],[-3.1225604854429756,51.48531380552771],[-3.1226859411675973,51.48530970108078],[-3.1228114961541538,51.48530696386876],[-3.122773818686515,51.48440845638875],[-3.122924546446444,51.48440681409366],[-3.1229119882244394,51.48350803278462],[-3.1230878495535648,51.4835080327846],[-3.1232637065005546,51.483509949306715],[-3.1232637069398725,51.48350994903242],[-3.123439440471239,51.48351378015704],[-3.123439443985795,51.48351378015703],[-3.1236151081599144,51.48351952753021],[-3.1237029806792864,51.48262238808857],[-3.123903483678732,51.48263114117216],[-3.124016411058382,51.48173509505907],[-3.1242416641399013,51.48174739784713],[-3.124517550869668,51.479958038829366],[-3.1247923869301095,51.479976072168505],[-3.1252811117060753,51.47729694838073],[-3.1256301982541492,51.47732370670315],[-3.126381446637549,51.47375917958603],[-3.1268291966958808,51.47379846355961],[-3.1289554222905838,51.46490892815322],[-3.129649978260959,51.46497760264792],[-3.142691635632965,51.41621890178753]],[[-3.1268654798413906,51.49100258373315],[-3.126831260472636,51.49104451435482],[-3.126795866954109,51.491086073881156],[-3.126795867393532,51.49108607415545],[-3.12675932959875,51.491127227748784],[-3.1267216321482603,51.49116799296355],[-3.126721631708889,51.49116799323785],[-3.1266828132637796,51.49120832783005],[-3.126642861520197,51.4912482452395],[-3.1266018059133334,51.49128771529152],[-3.126559652592585,51.49132673222458],[-3.126516415616074,51.49136528341941],[-3.1264721143144842,51.491403351867916],[-3.126426749565253,51.49144093647167],[-3.1263803389420044,51.49147802296551],[-3.1263328890341766,51.49151460503922],[-3.126284433672587,51.49155065718106],[-3.1262349873558866,51.49158616896607],[-3.1261845386597575,51.49162114862225],[-3.126133133718216,51.49165556378012],[-3.126080756713371,51.491689424862074],[-3.126027452022323,51.49172270333888],[-3.1259732354628222,51.49175538960852],[-3.125973234144675,51.49175539043142],[-3.1259180991261144,51.49178748860722],[-3.125862079920598,51.49181897838913],[-3.1258051791648085,51.49184985813003],[-3.125747425858729,51.49188011246743],[-3.1256888516388353,51.49190972466722],[-3.1256294345366245,51.491938705426264],[-3.125569240021898,51.49196702347205],[-3.1247127686151726,51.491244522118606],[-3.124752906074766,51.491225639509565],[-3.124792509181778,51.49120632323225],[-3.1247925087423707,51.49120632295795],[-3.124831566072339,51.49118657822474],[-3.1248315656329293,51.49118657795045],[-3.1248700574131716,51.491166414636865],[-3.1249079867190392,51.49114583054904],[-3.124907987158435,51.49114583082332],[-3.1249453425657263,51.49112483254508],[-3.1249453421263165,51.4911248322708],[-3.124982089802403,51.49110343900403],[-3.124982090241809,51.49110343927832],[-3.12501824204988,51.49108164416596],[-3.125053778657124,51.491059459003665],[-3.125088696548454,51.491036885163496],[-3.1250886961090503,51.491036884889205],[-3.1251229715580995,51.49101393855567],[-3.1251565927017784,51.49099062713551],[-3.125156596656171,51.49099062439247],[-3.1251565992924273,51.490990622472346],[-3.1251895634946805,51.490966948160555],[-3.1252218672407714,51.490942913975026],[-3.125253500425313,51.49091852622529],[-3.1252844349287554,51.490893807130455],[-3.1253146856902525,51.49086874517033],[-3.125344219317988,51.49084336722713],[-3.1253730441605985,51.49081766671815],[-3.12537305031177,51.49081766123209],[-3.125401147037625,51.49079165571318],[-3.1254285231166232,51.490765337230116],[-3.125455149111939,51.490738735133746],[-3.125481032054198,51.490711841744115],[-3.1254810373265665,51.49071183625808],[-3.1255061644750612,51.49068466501648],[-3.1255305283615202,51.49065722387815],[-3.125554115806051,51.49062952738156],[-3.125554117563494,51.49062952546144],[-3.1255541206389945,51.49062952162122],[-3.12557693120338,51.490601572235505],[-3.1255989609343544,51.490573372978474],[-3.1268985211087803,51.49096028805184],[-3.1268654798413906,51.49100258373315]],[[-3.122999915815043,51.489799496267565],[-3.122999906539917,51.48979949951172],[-3.1230801047906644,51.48976881892239],[-3.122999915815043,51.489799496267565]],[[-3.122999919769461,51.489799498461934],[-3.123022394929178,51.48979715048196],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123065544662322,51.48979190536856],[-3.122999919769461,51.489799498461934]],[[-3.122999906539917,51.48979949951172],[-3.1229999267995368,51.489799497090445],[-3.1230569824679737,51.489792250438015],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230563668937092,51.489789724716374],[-3.122999906539917,51.48979949951172]],[[-3.1229999171331824,51.48979949928482],[-3.122999919330082,51.48979949901053],[-3.1230366637912774,51.48979769358538],[-3.1229999171331824,51.48979949928482]],[[-3.1229999267995368,51.489799497090445],[-3.1229999175725656,51.489799498187644],[-3.1230226945858552,51.48979634597034],[-3.1229999267995368,51.489799497090445]],[[-3.1229999171331846,51.48979950093061],[-3.122999906539917,51.48979949951172],[-3.1230137870391586,51.489801262461754],[-3.1229999171331846,51.48979950093061]],[[-3.122999906539917,51.48979949951172],[-3.1229996337331674,51.4897955957717],[-3.122999906539917,51.48979949951172],[-3.1230019879302233,51.48978962927476],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999171331824,51.48979949928482],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229048493150233,51.48983172003015],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122969385935968,51.48980818268434],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122969385935968,51.48980818268434]],[[-3.122999906539917,51.48979949951172],[-3.122938062102121,51.48980458253079],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229998942854285,51.48979950010771],[-3.1229373815062607,51.48980188701897],[-3.122999906539917,51.48979949951172],[-3.1229998942854285,51.48979950010771]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122996696916075,51.48982495975776],[-3.1229999052699253,51.4897995086109],[-3.1229999052699253,51.48979950723942],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122996696916075,51.48982495975776]],[[-3.1229999052699253,51.48979950723942],[-3.122999904830545,51.4897995088852],[-3.1229986424918885,51.48980642581939],[-3.1229999052699235,51.489799506142234],[-3.1229999052699253,51.48979950723942]],[[-3.122983764645393,51.48981011839741],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122983764645393,51.48981011839741]],[[-3.1229999008761222,51.48979950477076],[-3.122999898679227,51.48979950696513],[-3.1229998999973647,51.489799505593645],[-3.1229998934066714,51.48979951162816],[-3.122973872436992,51.489822284815716],[-3.122999906539917,51.48979949951172],[-3.1229999008761222,51.48979950477076]],[[-3.122973583320564,51.48982976542906],[-3.1229999008761316,51.48979950586794],[-3.122999906539917,51.48979949951172],[-3.122973583320564,51.48982976542906]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229740850979772,51.48982050737461],[-3.122999899997373,51.48979950477076],[-3.122999906539917,51.48979949951172],[-3.1229740850979772,51.48982050737461]],[[-3.122999906539917,51.48979949951172],[-3.122862956947867,51.48986510186937],[-3.1229998815434135,51.489799511079575],[-3.1229998863765926,51.4897995088852],[-3.1229998898916307,51.48979950723942],[-3.1229998885734873,51.48979950778802],[-3.1229998934066656,51.489799505593645],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229747081407444,51.48981728000245],[-3.1229998982398457,51.48979950531935],[-3.122999906539917,51.48979949951172],[-3.1229747081407444,51.48981728000245]],[[-3.122999906539917,51.48979949951172],[-3.1229998978004674,51.489799503399276],[-3.1229998956035643,51.48979950449647],[-3.1229998942854316,51.48979950504505],[-3.122999892088527,51.489799506142234],[-3.1229998850584484,51.4897995094338],[-3.1229775755389424,51.48980944335276],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122973514348809,51.4898108233375],[-3.1229998929672833,51.489799505319354],[-3.1229998982398417,51.48979950312498],[-3.1229998986792245,51.48979950285068],[-3.122999906539917,51.48979949951172],[-3.122973514348809,51.4898108233375]],[[-3.122962193713018,51.48982263536344],[-3.1229998964823245,51.489799505593645],[-3.122999899118605,51.48979950422217],[-3.122962193713018,51.48982263536344]],[[-3.122999894724805,51.489799501753495],[-3.12299988286155,51.489799503673574],[-3.122881888660689,51.489817188056456],[-3.122999906539917,51.48979949951172],[-3.122999894724805,51.489799501753495]],[[-3.122997475498962,51.48980134063702],[-3.1229998982398413,51.48979950586794],[-3.1229998986792222,51.489799505593645],[-3.122997475498962,51.48980134063702]],[[-3.1229740139169753,51.489823018833114],[-3.1229998934066714,51.48979951162816],[-3.122999898679227,51.48979950696513],[-3.1229740139169753,51.489823018833114]],[[-3.1229998942854293,51.48979950038201],[-3.1229693942887575,51.48980133377568],[-3.122999906539917,51.48979949951172],[-3.1229998942854293,51.48979950038201]],[[-3.1229823722528933,51.48980295103034],[-3.12299988769473,51.489799503399276],[-3.1229998920885276,51.48979950257638],[-3.1229823722528933,51.48980295103034]],[[-3.1229998815434135,51.489799511079575],[-3.122982259769813,51.48980765137472],[-3.1229998850584484,51.4897995094338],[-3.1229998815434135,51.489799511079575]],[[-3.1219555542349022,51.48918079257228],[-3.1219384161872696,51.48919226541826],[-3.121921605899877,51.489203920671905],[-3.1219216045817406,51.48920392149479],[-3.1219216023848304,51.48920392314054],[-3.121905116782057,51.489215762173444],[-3.121888964651609,51.4892277789513],[-3.121873150826749,51.489239969908425],[-3.1218576836558483,51.48925232928483],[-3.120715487629042,51.48870514756158],[-3.120746428800568,51.48868042499134],[-3.12077805094367,51.48865604749074],[-3.1208103619668752,51.4886320092992],[-3.120843330673564,51.48860833373077],[-3.120876961457346,51.4885850172191],[-3.1209112301520023,51.48856207649533],[-3.1209461411512116,51.48853950854168],[-3.1219730099369656,51.489169508716834],[-3.1219555542349022,51.48918079257228]]],[[[-3.1303060236611464,51.482054824887854],[-3.1300884322853872,51.48197640306005],[-3.130088432724653,51.48197640278573],[-3.130088396699753,51.481976390444544],[-3.1300883879131502,51.48197638715351],[-3.1298686837136307,51.48190036377058],[-3.129868684152899,51.481900363496244],[-3.1298686520820977,51.48190035280056],[-3.1298686384629684,51.4819003481383],[-3.129646843821128,51.4818267300446],[-3.129646844260393,51.48182672977028],[-3.129646808235846,51.48182671825186],[-3.1296467981313882,51.48182671496087],[-3.1294229341099444,51.48175551009808],[-3.1294229336707122,51.4817555106467],[-3.1291971548845896,51.481686767545526],[-3.1291971403870718,51.48168676343183],[-3.1291971083166867,51.481686753558854],[-3.129197107877427,51.48168675383315],[-3.1289694490050874,51.481620482904056],[-3.128969430553755,51.48162047769335],[-3.1289694019980963,51.4816204694659],[-3.128969401558826,51.481620469740214],[-3.128739925393867,51.4815566896214],[-3.1287399258331012,51.48155668907278],[-3.1287398819015477,51.48155667728017],[-3.12873987838704,51.48155667645746],[-3.1285086547505685,51.48149540633586],[-3.1285086551898016,51.48149540578725],[-3.1282756590098675,51.48143663961929],[-3.1282756585706317,51.4814366401679],[-3.1280411463735347,51.48138044266613],[-3.1280411191363333,51.48138043663277],[-3.128041098049403,51.48138043142204],[-3.127805009176689,51.481326788864976],[-3.1278050087374742,51.48132678968789],[-3.127567505259511,51.481275737718455],[-3.127567505698753,51.48127573716986],[-3.1273285142157947,51.48122726069591],[-3.126895726756479,51.48208449250216],[-3.1271107901788366,51.48212811536399],[-3.1273245784857906,51.482174069949835],[-3.1268441308678177,51.48302134784626],[-3.127033029898339,51.48306426867586],[-3.127220680937606,51.48310923632275],[-3.127407026894675,51.48315623653159],[-3.127592060321802,51.48320526738876],[-3.127775711386207,51.48325631162258],[-3.127957872032055,51.483309338248525],[-3.128138509327898,51.483364337400225],[-3.12749626325928,51.48416874506111],[-3.1276529899005516,51.484218596219975],[-3.1278082822206787,51.48427014183302],[-3.1279621296877846,51.48432337779189],[-3.1286709214753494,51.48354105736094],[-3.1288449862268846,51.4836037925546],[-3.1290172702579366,51.483668414193765],[-3.129187764356102,51.48373491926948],[-3.1299611308781055,51.4829768233035],[-3.1297693599727325,51.48290201898098],[-3.129769360412005,51.48290201870665],[-3.129769326143628,51.48290200581669],[-3.1297693204322274,51.482902003622634],[-3.129575523468835,51.48282931310463],[-3.1303060236611464,51.482054824887854]]],[[[-3.124566883954836,51.37745085021581],[-3.121432924838025,51.37745085021575],[-3.1214454302900694,51.37834964803687],[-3.121445617449207,51.37834964803934],[-3.118337591505911,51.37838351611163],[-3.1184501220060468,51.38107909167387],[-3.1214831214136116,51.3810460409368],[-3.1245168596455763,51.38104604093463],[-3.1245418725607537,51.379248445718034],[-3.1214585704815385,51.37924844572635],[-3.1214460697869826,51.37834964804536],[-3.1245543785027077,51.378349648036924],[-3.124566883954836,51.37745085021581]]],[[[-3.116801847428455,51.34154383823575],[-3.116764405125812,51.34064530666549],[-3.112609097192157,51.340735894990566],[-3.112609096754328,51.34073589444192],[-3.1126090218638516,51.340735896904],[-3.1126083566103544,51.34073591138299],[-3.112608357046632,51.34073591878925],[-3.108457037458933,51.340871740758075],[-3.108457037021848,51.34087173801499],[-3.108456765486615,51.34087174977628],[-3.108456183439631,51.34087176890518],[-3.1084561843134546,51.340871775488566],[-3.1043085114779405,51.34105283969523],[-3.1045329881047627,51.34284500834134],[-3.1086314378141764,51.34266609278693],[-3.1127338858196856,51.34253186971763],[-3.1126714905055826,51.34163388285141],[-3.116801847428455,51.34154383823575]]],[[[-3.1103458739205045,51.494087602366044],[-3.1102279188315065,51.493949066395054],[-3.110113857182326,51.49380926759547],[-3.108825128113036,51.49421016643365],[-3.108950580737956,51.49436393199045],[-3.108950585569931,51.49436393747695],[-3.108950605775754,51.49436396244034],[-3.1089506066546826,51.494363962166155],[-3.109080340109938,51.49451633741066],[-3.1103458739205045,51.494087602366044]]],[[[-3.104958835559886,51.49541281732588],[-3.104804676379139,51.49521539843321],[-3.1046560503045817,51.49501631494405],[-3.1045130134966286,51.49481564177103],[-3.1043756392380644,51.49461348372721],[-3.10424390858393,51.49440981147963],[-3.1015641713801947,51.49506818235421],[-3.101714691436778,51.495300926251474],[-3.1003841956412295,51.49564463677888],[-3.100224306100293,51.49539739418456],[-3.100071294097789,51.495148347288286],[-3.097373457362131,51.49577732864682],[-3.097544423234803,51.496055623183466],[-3.097544421037295,51.49605562373158],[-3.0977231435732118,51.496332013044366],[-3.097723142694174,51.496332013318465],[-3.0977231554276994,51.49633203197336],[-3.097723179137273,51.49633206873415],[-3.09772318045575,51.49633206846014],[-3.0979096053286237,51.49660646856754],[-3.097909607086712,51.49660646801932],[-3.098103640004236,51.496878741168246],[-3.098103639125189,51.49687874144236],[-3.0981036571294043,51.49687876558423],[-3.0981036786459164,51.49687879576138],[-3.0981036795249643,51.49687879548726],[-3.0983052977607968,51.497148912560014],[-3.098305296002691,51.497148913108234],[-3.098514479901947,51.49741684608374],[-3.098514483854233,51.49741685129618],[-3.0985145220606345,51.49741689985457],[-3.0985145238187477,51.49741689930635],[-3.098731126806762,51.49768245994686],[-3.098731133833539,51.49768246845151],[-3.0987311698455904,51.49768251234634],[-3.098731171164102,51.49768251207231],[-3.0989551691814627,51.49794567153105],[-3.098955167862798,51.497945672079375],[-3.0989552100258257,51.497945719541235],[-3.098955214417659,51.49794572475376],[-3.099186585158804,51.498206455280226],[-3.1004401363697482,51.49776410490203],[-3.100220938177257,51.497517099211116],[-3.1000086477831816,51.49726770231729],[-3.0998034315590446,51.49701611123532],[-3.10109231669129,51.496615308973894],[-3.1012861293196035,51.496852911540806],[-3.10128613854292,51.49685292224006],[-3.1012861679687225,51.49685295845259],[-3.101286169287317,51.496852957904245],[-3.101486638192911,51.49708846025339],[-3.102752314464934,51.496659807332485],[-3.102563633343906,51.49643816031766],[-3.103841073331533,51.49602334878888],[-3.1036700191312705,51.495813661881634],[-3.104958835559886,51.49541281732588]],[[-3.100905104487664,51.49637553544308],[-3.100724698160772,51.49613385571455],[-3.102035175655012,51.495761363555886],[-3.1022049748534037,51.49598882510073],[-3.100905104487664,51.49637553544308]]],[[[-2.9802135268844885,51.388735553237],[-2.9783139615450867,51.38738684875509],[-2.9754767581805646,51.38897882873999],[-2.974508365394944,51.388314919434684],[-2.971697436681426,51.389948221414045],[-2.9697239787424397,51.38864166531721],[-2.96692269777657,51.39032704525283],[-2.965917946874125,51.38968460813844],[-2.9631461250525124,51.39141130210867],[-2.9611011708651263,51.390148489926354],[-2.958342733226707,51.39192764250333],[-2.9562629595532925,51.39068726035139],[-2.9535201414334495,51.39251899523096],[-2.9524631511877306,51.39191021539987],[-2.9497548042868704,51.3937831621724],[-2.949754797723472,51.39378315859676],[-2.9497544860109004,51.39378338196568],[-2.949754242028174,51.39378355057448],[-2.9497542468408513,51.39378355332462],[-2.9470988892494305,51.395685329889076],[-2.9460085902715325,51.395099939563885],[-2.94338974820406,51.39704273105511],[-2.942283291743993,51.39646929551059],[-2.9397024525682665,51.39845287467599],[-2.9419470716783374,51.39957543512526],[-2.944495689700563,51.39761654806981],[-2.94670872655927,51.3987633512729],[-2.949279026813082,51.396856469182836],[-2.950369401429014,51.39744182039078],[-2.952976010753578,51.395574863617405],[-2.9556336474542926,51.39373689780549],[-2.956690714448934,51.394345640336105],[-2.9593821667909306,51.39254812781067],[-2.962502116254871,51.39440858837169],[-2.9651906386110305,51.39267443033919],[-2.9662132089893514,51.393305797283354],[-2.968931721631444,51.39161224269466],[-2.9699365508512168,51.392254645520175],[-2.9726836236154828,51.390601815713765],[-2.9736704224193695,51.3912550680122],[-2.9764446197987016,51.38964306995011],[-2.9774130625307635,51.3903069545929],[-2.9802135268844885,51.388735553237]]],[[[-2.9111651405488637,51.53381411828289],[-2.909970955372225,51.53149901287835],[-2.907219655506033,51.532034539817055],[-2.9084291233019974,51.53437954554507],[-2.9111651405488637,51.53381411828289]]]]} \ No newline at end of file diff --git a/benchmarks/cardiff_50km_aeqd_100m.bt b/benchmarks/cardiff_50km_aeqd_100m.bt deleted file mode 100644 index baf9cb5..0000000 Binary files a/benchmarks/cardiff_50km_aeqd_100m.bt and /dev/null differ diff --git a/benchmarks/run.sh b/benchmarks/run.sh index 58dc838..b21b301 100755 --- a/benchmarks/run.sh +++ b/benchmarks/run.sh @@ -5,13 +5,39 @@ export RUST_LOG=trace PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" +backend=$1 + +function geojson_area() { + local file=$1 + local temp=/tmp/viewshed.json + + cp "$file" "$temp" + + output=$( + ogrinfo \ + "$temp" \ + -dialect sqlite \ + -sql "SELECT SUM(ST_Area(ST_Transform(geometry, 6933))) AS area_m2 FROM viewshed" + ) + + area=$(echo "$output" | grep -oP 'area_m2 \(Real\) = \K[0-9.]+') + echo "$area" +} + # Do the calculations -time cargo run --release -- \ - compute "$PROJECT_ROOT/benchmarks/cardiff_50km_aeqd_100m.bt" \ +time cargo run --features ring_data --release -- \ + compute "$PROJECT_ROOT/benchmarks/cardiff.bt" \ --scale 100 \ --rings-per-km 3 \ - --backend vulkan \ - --process all + --backend "$backend" \ + --process all \ + --thread-count 1 + +if [[ $backend == "vulkan" ]]; then + # On Github Actions there's no real GPU so it uses a software GPU, which seems to give + # very different results, so there's no point doing a diff on its benchmark viewshed. + exit 0 +fi # Reconstruct a viewshed from the centre of the DEM time cargo run --release -- \ @@ -20,7 +46,15 @@ time cargo run --release -- \ ls -alh output/viewsheds -# We allow it to fail because CI uses a software GPU which gives different results. -diff \ - "$PROJECT_ROOT/output/viewsheds/-3.122999906539917-51.48979949951172.json" \ - "$PROJECT_ROOT/benchmarks/cardiff.json" || true +expected_area=$(geojson_area "benchmarks/cardiff-viewshed.json") +actual_area=$(geojson_area output/viewsheds/-3.122999906539917-51.48979949951172.json) + +diff=$(echo "$actual_area - $expected_area" | bc -l | tr -d '-') +limit=$(echo "$actual_area * 0.01" | bc -l) + +if (($(echo "$diff <= $limit" | bc -l))); then + echo "Viewhsed area within 1% of existing benchmark" +else + echo "Benchmark viewshed changed too much ${expected_area} vs ${actual_area}" + exit 1 +fi diff --git a/benchmarks/vulkan-gpu-cardiff.json b/benchmarks/vulkan-gpu-cardiff.json new file mode 100644 index 0000000..c940d35 --- /dev/null +++ b/benchmarks/vulkan-gpu-cardiff.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[-3.30941915032233,51.53780568725623],[-3.3080861950590075,51.537463838363806],[-3.3067278272108385,51.539473525977904],[-3.308051058272776,51.53982984855978],[-3.30941915032233,51.53780568725623]]],[[[-3.3067532597671656,51.5371219743089],[-3.3054203448869783,51.536780095091295],[-3.3040817012645824,51.53876043015245],[-3.3027585322282165,51.53840406658359],[-3.301374398918109,51.5403555525948],[-3.3026874384036735,51.54072628157445],[-3.3040816466043905,51.538760511153754],[-3.3040814266495504,51.53876083653242],[-3.3054046163768,51.53911718872721],[-3.3067532597671656,51.5371219743089]]],[[[-3.3027545746036,51.53609629117226],[-3.301421719201108,51.53575436647166],[-3.3001122499934668,51.53769129298221],[-3.296142986492751,51.53662202133366],[-3.294809777950515,51.53850132698179],[-3.293496868713629,51.53813051354931],[-3.292121712748439,51.53998073199242],[-3.290819361871763,51.539595656504524],[-3.289403348187319,51.5414166182719],[-3.287936674563477,51.54322162260439],[-3.2853765744131938,51.542395148543044],[-3.2838825360674653,51.54415660436839],[-3.283882539590554,51.544156605460735],[-3.282339851677814,51.54590090254047],[-3.280747972216977,51.547628648631274],[-3.2832353898725475,51.54853764159162],[-3.2848520415687505,51.54678290474435],[-3.287364563965132,51.54766460720725],[-3.288955930635636,51.545865045530405],[-3.2902243346867017,51.546292120102045],[-3.2917766921578884,51.544461605653204],[-3.29305685232551,51.54487478505397],[-3.2945689619709984,51.543013606564706],[-3.2958604757036007,51.5434127616585],[-3.297331055619441,51.54152128453389],[-3.298633524792323,51.54190629336489],[-3.300061375045217,51.53998480726149],[-3.3000613807697987,51.53998480889862],[-3.3000615246978775,51.53998460597773],[-3.300061648970519,51.53998443874478],[-3.3000616445665876,51.53998443737995],[-3.301435099949513,51.538048084585505],[-3.301435109195865,51.53804808704012],[-3.3014353309148015,51.53804775892073],[-3.301435381657783,51.53804768752695],[-3.3014353798962595,51.53804768698104],[-3.3027545746036,51.53609629117226]]],[[[-3.301531391252313,51.51846922562661],[-3.2987401157240672,51.51802335260609],[-3.297927299941622,51.5199341653201],[-3.3007057835951823,51.52041038807222],[-3.301531391252313,51.51846922562661]]],[[[-3.3012087224089393,51.52259467503561],[-3.299826275627792,51.52234149135655],[-3.2988924294167306,51.524263480149536],[-3.3002676332855185,51.52453169053441],[-3.3012087224089393,51.52259467503561]]],[[[-3.300429465690905,51.47112200993378],[-3.299876677384325,51.46919135361843],[-3.298462296804608,51.46935727724887],[-3.2990106053799004,51.471272494806364],[-3.300429465690905,51.47112200993378]]],[[[-3.297860841192189,51.467449081881476],[-3.2972059502024367,51.46554697406899],[-3.295801802604193,51.465743593966806],[-3.2964512325001927,51.467630008244946],[-3.2922227195104194,51.468173779262465],[-3.292804785299015,51.47002118087175],[-3.294219203863351,51.46985532906567],[-3.2947539688799137,51.47172384694748],[-3.296172857193062,51.47157341331309],[-3.295633616122381,51.46968945991539],[-3.297048021634878,51.46952357314731],[-3.296451270244276,51.46763011763405],[-3.2964513572776566,51.46763036985957],[-3.297860841192189,51.467449081881476]]],[[[-3.294397783154588,51.46594058277716],[-3.293701427004324,51.46407644155374],[-3.2909045914693213,51.464500134586196],[-3.291589425815944,51.46633373216876],[-3.294397783154588,51.46594058277716]]],[[[-3.2913903525279617,51.47018701616773],[-3.2908133024628934,51.468355353958344],[-3.2908133094856336,51.46835535285111],[-3.2908132233683562,51.468355102814556],[-3.2908131918187795,51.46835500246662],[-3.290813188746585,51.46835500301961],[-3.2901850928517304,51.466529905627844],[-3.28737666141,51.466922960950534],[-3.2867093778349465,51.46513591486066],[-3.2881078442371896,51.46492412961458],[-3.287384307827808,51.46312868548479],[-3.2845997285824597,51.46358265342938],[-3.2838395520568273,51.46182597848132],[-3.281068123361402,51.462310149944656],[-3.281815095839357,51.464036554937685],[-3.2804227609439742,51.46426348046688],[-3.281115393741344,51.46598288760219],[-3.2825139079749284,51.4657711696531],[-3.2831640642458155,51.467512776910425],[-3.2845683147463984,51.46731631224839],[-3.2851750825828887,51.46908006495374],[-3.2894037627043318,51.46853655720011],[-3.2899759095007517,51.47035283412477],[-3.2913903525279617,51.47018701616773]]],[[[-3.2906417248926534,51.52265350386927],[-3.289266632409053,51.52238518359176],[-3.2883329348950836,51.5241917206214],[-3.284230761283584,51.52334184161874],[-3.2851414514993915,51.521580126533976],[-3.2837664232317345,51.521311742016195],[-3.282863217818765,51.52305887611482],[-3.282863219579477,51.52305887666101],[-3.2819115821661913,51.52479521054463],[-3.2791931033238804,51.52419880520862],[-3.2782097777800017,51.52589531071599],[-3.276859074196047,51.52558232141124],[-3.2758372643858324,51.52725321036156],[-3.2744954971652676,51.52692553654849],[-3.2734363639174626,51.52857044469723],[-3.270771561313455,51.52788591573269],[-3.2696859693221283,51.52949010491763],[-3.2683633368450637,51.52913335243129],[-3.2672428645061706,51.530711435984315],[-3.269867850300298,51.531453642850764],[-3.2686824380520023,51.533047463787646],[-3.26998441259134,51.53343278812903],[-3.268743721640165,51.53502735718362],[-3.267458175855293,51.53660857592244],[-3.268737889279079,51.53702201923803],[-3.270034618188922,51.53542699034204],[-3.2700346239127467,51.535426992254926],[-3.2700347881659746,51.535426781390804],[-3.2700348683346,51.535426682544276],[-3.2700348656921614,51.535426681450396],[-3.271286413516726,51.53381809908892],[-3.2712864187996993,51.53381810072802],[-3.271286558487273,51.53381791293386],[-3.271286671046952,51.533817768238286],[-3.2712866670842793,51.53381776687182],[-3.272492926305972,51.532195792258065],[-3.273805495882116,51.532566844901964],[-3.2725884421503317,51.53420339748793],[-3.2738904874861694,51.53458868004804],[-3.275118322354458,51.53293756599679],[-3.273805729253845,51.53256653080873],[-3.2738056281107784,51.53256666671467],[-3.2749764726972637,51.530917304320404],[-3.2749764801807446,51.53091730650507],[-3.2749766648579732,51.530917033616724],[-3.2749767125696945,51.530916966352656],[-3.27497671080877,51.530916965806355],[-3.276101033440626,51.52925525949321],[-3.2800985143979005,51.530281860862694],[-3.278944747153586,51.531987304504966],[-3.281590354348,51.53270055973792],[-3.280368670486106,51.534421888589364],[-3.2829940875127943,51.53516380238974],[-3.284236051273269,51.533413757138355],[-3.2842360596371996,51.533413759321235],[-3.2842362608952707,51.53341346198334],[-3.284236305969749,51.533413398285006],[-3.284236304208622,51.53341339773884],[-3.285428769149896,51.53165045089856],[-3.286761382671355,51.53199256024578],[-3.2855589393280504,51.533770335890594],[-3.2868818401288373,51.53412689724795],[-3.2880942650780542,51.53233428598314],[-3.28676162940033,51.53199219481487],[-3.2867613909800344,51.531992547068036],[-3.2879140418532877,51.53020158683473],[-3.285230178217522,51.529546499592115],[-3.2863141942815433,51.527773291013844],[-3.2863141995633827,51.52777329237797],[-3.2863143101357752,51.52777310131465],[-3.2863144176849115,51.52777292561604],[-3.2863144128428217,51.5277729242513],[-3.287348566844673,51.52598817930163],[-3.2887079090007147,51.52628629951607],[-3.2897003720644458,51.52447498408043],[-3.2897003597424823,51.52447498135498],[-3.2906417248926534,51.52265350386927]],[[-3.282763833423946,51.530965827371],[-3.2814312780949053,51.53062367530658],[-3.282546179936144,51.52889168252083],[-3.2838880614237755,51.529219267168735],[-3.282763833423946,51.530965827371]],[[-3.2761012552447606,51.52925491523785],[-3.2747688086147706,51.528912690137794],[-3.274768582808892,51.52891302369831],[-3.275837239456579,51.527253250989716],[-3.275837068891129,51.52725352989573],[-3.277178846591703,51.52758118973062],[-3.2761012552447606,51.52925491523785]],[[-3.273653994316927,51.530560273052465],[-3.2723312984976376,51.53020356509095],[-3.273436146034442,51.52857078290808],[-3.2747685797470205,51.528913028639586],[-3.273653994316927,51.530560273052465]]],[[[-3.2873849446386623,51.520062103649884],[-3.2860026512133262,51.519808756977255],[-3.285141275595982,51.52158048994427],[-3.2865163182911865,51.521848861629785],[-3.2873849446386623,51.520062103649884]]],[[[-3.2823914115680166,51.52104334109557],[-3.2810164160711,51.52077492432165],[-3.2801285573884784,51.5224921723278],[-3.2814958791173097,51.522775532058866],[-3.2823914115680166,51.52104334109557]]],[[[-3.268039683192168,51.51311436482603],[-3.2652490560598153,51.51266769380919],[-3.2658645786573453,51.51111438568215],[-3.2644632983855955,51.510906261427095],[-3.2638537658218207,51.512444333802335],[-3.261063233325376,51.51199756506631],[-3.260423443347005,51.51349871485506],[-3.261812280510714,51.513737277826415],[-3.261123879626418,51.51524596029626],[-3.260393272749355,51.5167470439246],[-3.2658923758927343,51.5178215944073],[-3.266652007854612,51.51626049107757],[-3.266652009174374,51.516260491350245],[-3.266652034061804,51.51626043673494],[-3.266652153748408,51.51626019081952],[-3.266652147149595,51.516260189456126],[-3.2673677975562048,51.514691368999706],[-3.267367804593564,51.51469137008822],[-3.267367911505936,51.514691118701805],[-3.2673679442519066,51.51469104734464],[-3.267367942491704,51.5146910467982],[-3.268039683192168,51.51311436482603]]],[[[-3.265047331087454,51.50454806461478],[-3.263626403999646,51.50440143074483],[-3.2631989785720523,51.50593135810492],[-3.2617823346626027,51.50576924842497],[-3.261316766885152,51.50727918616017],[-3.2641406601677376,51.507634215233324],[-3.2646155394578877,51.50609376814499],[-3.2646155456139425,51.50609376896045],[-3.264615605605854,51.50609355466276],[-3.2646156373714326,51.50609345121478],[-3.264615634732522,51.50609345066938],[-3.265047331087454,51.50454806461478]]],[[[-3.2642427150162314,51.520917443892465],[-3.261524693533529,51.52032062797213],[-3.2606518416311285,51.52182553464567],[-3.263352827634462,51.52245187919639],[-3.2642427150162314,51.520917443892465]]],[[[-3.259773974730324,51.49046503033577],[-3.259769514361089,51.488974463086464],[-3.255450552128475,51.489002955685756],[-3.2554547340236413,51.49044617526324],[-3.249695758463139,51.490421169375885],[-3.2496609834575465,51.491801736921175],[-3.251100372499068,51.49182370374083],[-3.2510262280903235,51.49321907702875],[-3.2553420533944557,51.493331908712236],[-3.255418561096607,51.49188949737716],[-3.2568579644513176,51.49191139352996],[-3.256894479167028,51.490452662746584],[-3.259773974730324,51.49046503033577]]],[[[-3.2591229176143126,51.48153662350705],[-3.258868979749208,51.48005450883897],[-3.254579265257543,51.48036465218259],[-3.2548250005702957,51.48179967735671],[-3.2519597345964986,51.4819751615609],[-3.252160820762031,51.483381689633404],[-3.253595733065252,51.48330958175982],[-3.2537592937143955,51.4847334605837],[-3.2580695469444176,51.48456396617894],[-3.2579004559898275,51.48309315251181],[-3.257900460821481,51.483093152231966],[-3.2579004361509165,51.483092980001715],[-3.2579004235255633,51.483092870023086],[-3.25790042045117,51.48309287030092],[-3.257690298149075,51.48162442399021],[-3.2591229176143126,51.48153662350705]]],[[[-3.2370575251006684,51.446068427634955],[-3.2358170306906313,51.44483215442271],[-3.234605120934215,51.445316253789066],[-3.233344581618449,51.44410729685881],[-3.2333445842494526,51.444107295759125],[-3.233344478228016,51.44410719765995],[-3.233344337881274,51.444107063111346],[-3.233344334373717,51.44410706476045],[-3.232050260027249,51.44291199739693],[-3.2320502934570974,51.442912027264406],[-3.2332343960625627,51.44240182200474],[-3.2318922694040824,51.441207767421986],[-3.2307226134117264,51.44173079878541],[-3.232050020302428,51.442911784215426],[-3.230865900090519,51.44342197746064],[-3.232146266024495,51.44460441358133],[-3.2333932537399863,51.445800403612715],[-3.2346069668939,51.44701005082634],[-3.2370575251006684,51.446068427634955]]],[[[-3.2365515225484964,51.54213850645648],[-3.235391517956827,51.541604992737504],[-3.2339256280280284,51.54282186082797],[-3.23507053382027,51.543367934201655],[-3.2365515225484964,51.54213850645648]]],[[[-3.2321591841725437,51.47338250996534],[-3.231682270771058,51.472195465008454],[-3.2302894369610162,51.472421795160926],[-3.2307602027258646,51.473593627303956],[-3.2321591841725437,51.47338250996534]]],[[[-3.231672449727352,51.43949327825778],[-3.2302495197065118,51.4383167436149],[-3.230249753190856,51.43831692965032],[-3.2313894120078803,51.43776871352048],[-3.2299183517277945,51.436595467587296],[-3.22879418888284,51.43715602012401],[-3.230249449352495,51.43831668717366],[-3.2291097676455762,51.43886489408659],[-3.230517616286519,51.440028982812294],[-3.231672449727352,51.43949327825778]]],[[[-3.228896683874253,51.4726483311319],[-3.228399838272377,51.47149694997292],[-3.2270135450739357,51.47173838810745],[-3.227503821606495,51.472874625440156],[-3.228896683874253,51.4726483311319]]],[[[-3.2247676444344577,51.53845264061804],[-3.222478346507599,51.537360286466566],[-3.2211330568259835,51.53843708352752],[-3.2233914500159546,51.5395542183442],[-3.2247676444344577,51.53845264061804]]],[[[-3.222854675668012,51.4724628275924],[-3.2223537146617454,51.47137731614356],[-3.2209743482270055,51.47163375649805],[-3.220450768411644,51.470569284721535],[-3.2218227352530406,51.470297857282326],[-3.221261585414106,51.46922414022785],[-3.2212615871696477,51.4692241396778],[-3.2212615527797066,51.46922407744105],[-3.2212614703150595,51.46922392033761],[-3.2212614659250036,51.469223921164186],[-3.220670425395957,51.46815648095729],[-3.2193145210500083,51.46845763656992],[-3.2187025383502146,51.46741172823063],[-3.2200497962170513,51.46709584876431],[-3.219399395520678,51.46604171897702],[-3.218061194672796,51.466372232298],[-3.2173910738130673,51.46534009497484],[-3.2173912063968686,51.465340289345235],[-3.220048654041101,51.46465019635361],[-3.2193300905907605,51.46359666664936],[-3.219330091468444,51.463596666374336],[-3.2193300685662116,51.4635966343003],[-3.2193299434669305,51.463596450623506],[-3.219329938200293,51.46359645199932],[-3.2185822275693172,51.46255111337289],[-3.221199325699823,51.461803482317194],[-3.220401074545397,51.46073784958381],[-3.2204010767391513,51.46073784875909],[-3.2204010106936485,51.46073776405587],[-3.220400910293205,51.46073763000756],[-3.2204009063436496,51.460737631108024],[-3.2195732015570657,51.459681059820134],[-3.2208599895232664,51.45927894145063],[-3.21999131532131,51.45821738931913],[-3.219991315759801,51.458217389044464],[-3.2199912928708647,51.45821736218219],[-3.2199911365929577,51.45821717085138],[-3.21999113132812,51.45821717277582],[-3.2190931463025225,51.457165447522016],[-3.2190931484961234,51.457165446697324],[-3.219093080720388,51.45716537077227],[-3.219092974203711,51.457165245779635],[-3.21909297069407,51.45716524715399],[-3.2181655922240306,51.456123251075624],[-3.2169143217374314,51.456566862097375],[-3.217829478612018,51.45759515720181],[-3.216565962791385,51.45802505360324],[-3.2156632135807706,51.45701066887471],[-3.215663214019273,51.45701066860006],[-3.215663199058857,51.45701065270259],[-3.2156630274320355,51.45701045945804],[-3.2156630221671456,51.4570104613823],[-3.214732127267953,51.456006081244965],[-3.2147321316551998,51.456006079595745],[-3.214731972825872,51.45600591486679],[-3.2147319345450454,51.45600587347772],[-3.2147319336680353,51.456005874027],[-3.213773150834466,51.455011774383145],[-3.2137731539050565,51.45501177300929],[-3.2137730373267583,51.455011656522785],[-3.213772966495159,51.45501158334],[-3.213772964740608,51.45501158416425],[-3.212786395905433,51.45402787836511],[-3.211573999595481,51.45451173859854],[-3.2105740652816595,51.453552263697986],[-3.2105740674752443,51.45355226287346],[-3.210573986990227,51.453552188598735],[-3.2105738717524313,51.453552078142614],[-3.2105738686813106,51.453552079242094],[-3.2095473296504293,51.45260364650714],[-3.2095473300889243,51.45260364623253],[-3.2095473050226317,51.45260362403287],[-3.2095471181112907,51.45260345136291],[-3.2095471132856828,51.45260345328656],[-3.208494293681064,51.45166636049798],[-3.2084942954355786,51.451666359673816],[-3.2084942061723813,51.45166628293536],[-3.208494076887212,51.451666167824335],[-3.2084940733776732,51.45166616919838],[-3.2074152651285104,51.450740674380874],[-3.2085706425799843,51.450205197035345],[-3.2074506081755727,51.44927872601996],[-3.205170122260398,51.45037468550091],[-3.2040558523984024,51.449485597320425],[-3.2040558541524344,51.449485596222026],[-3.2040557666734113,51.4494855288051],[-3.204055641383712,51.44948542904709],[-3.2040556387521835,51.4494854304204],[-3.202916510424299,51.44860843380451],[-3.2018075418484044,51.44918090731573],[-3.200660320628346,51.44832846613263],[-3.197381743049494,51.450081809175295],[-3.198480700453048,51.45089843202408],[-3.199589750933273,51.45032599508592],[-3.200681287825405,51.451166398898444],[-3.2017492440268387,51.452018583371526],[-3.2027933684580145,51.452882352095145],[-3.2038132736570346,51.453757390525226],[-3.204808627003041,51.4546434145252],[-3.2057788895086836,51.455539937942525],[-3.2045800821565873,51.45603687084229],[-3.205511829669965,51.456931030639076],[-3.2067243519709954,51.456447237954464],[-3.2076440674658038,51.45736440626712],[-3.208538278301319,51.45829168441286],[-3.2110158895841843,51.45737748344871],[-3.2119089928285165,51.458341173690144],[-3.2106576063193057,51.45878471585095],[-3.21151175937576,51.45974461375326],[-3.212338945555813,51.46071360703338],[-3.213138855535764,51.46169132701568],[-3.213911517083318,51.46267781235948],[-3.2152094708420713,51.462289849028274],[-3.215964912651447,51.463298486611755],[-3.2146562927156173,51.463672253272456],[-3.215373345206578,51.46467485039051],[-3.212735517755461,51.46539370727178],[-3.212735633583696,51.46539387697344],[-3.212038992214005,51.46441974133589],[-3.210730312087895,51.464793462737525],[-3.2100175145273084,51.46384161874507],[-3.2100175167213942,51.46384161792054],[-3.210017454212545,51.463841537871964],[-3.210017367923885,51.46384142273092],[-3.2100173644124017,51.46384142355642],[-3.209278110462111,51.462897488583586],[-3.2092781130947685,51.46289748748447],[-3.209278032989516,51.46289738934477],[-3.209277968723671,51.462897307651296],[-3.2092779665290974,51.46289730820151],[-3.2085124823689264,51.46196157069717],[-3.208512483246648,51.461961570422226],[-3.208512461243349,51.46196154492858],[-3.208512324806844,51.461961378254955],[-3.2085123204182837,51.46196137962964],[-3.207720689557966,51.46103394682295],[-3.206456983826482,51.46146373403676],[-3.2072367811756775,51.46237733312877],[-3.20596122269176,51.46279327134895],[-3.2067040388073464,51.463701361324965],[-3.2074213486184777,51.464617342397716],[-3.208113016702784,51.46554104177332],[-3.2094217369640714,51.4651673534708],[-3.2100977126815007,51.466112667855334],[-3.210747237446329,51.46706525839076],[-3.212076066225651,51.46672029605743],[-3.2127083397025107,51.46769431470418],[-3.214046613948207,51.4673638663868],[-3.214660538082218,51.4683590661014],[-3.213313213273907,51.46867488549624],[-3.213890847177831,51.46966228961013],[-3.215246819428655,51.46936120088817],[-3.21580492539461,51.47036937654603],[-3.2171691151354986,51.47008309122312],[-3.2177067095367247,51.4711119145486],[-3.2182155901241263,51.4721466279813],[-3.2186955487578994,51.47318683378094],[-3.219146356845205,51.47423204313956],[-3.220539302233143,51.47400584814757],[-3.220081954033288,51.472945550247545],[-3.222854675668012,51.4724628275924]],[[-3.2160623115624496,51.46568510555795],[-3.215373471155693,51.464675026390495],[-3.2153734922941455,51.46467505599799],[-3.216692378677418,51.464315607737475],[-3.2173910628010676,51.46534007880013],[-3.2160623115624496,51.46568510555795]],[[-3.212254471766347,51.45692016085463],[-3.2113216348973928,51.455952909112014],[-3.2125474056883663,51.455482348173206],[-3.2134932148707964,51.456463023864835],[-3.212254471766347,51.45692016085463]],[[-3.212075936284157,51.46672009591881],[-3.2120759446532703,51.46672010880444],[-3.211416705294197,51.465753312193684],[-3.2127356551636868,51.46539390850116],[-3.2134047476449483,51.46637511411822],[-3.212075936284157,51.46672009591881]],[[-3.207936660806959,51.45596324246485],[-3.206977861696402,51.455043168432766],[-3.2081766222570764,51.45454621257667],[-3.209149132704333,51.455479420236934],[-3.207936660806959,51.45596324246485]]],[[[-3.2082898248788383,51.554267999527774],[-3.2073714472424952,51.553575123700426],[-3.205573932415067,51.55448465673884],[-3.2037509085137734,51.55537458793507],[-3.201903824168089,51.556244216238554],[-3.201903821524654,51.55624421432027],[-3.200032258816615,51.55709374076065],[-3.199193731670927,51.556362560430905],[-3.1973188294315147,51.55718271088737],[-3.198136740330274,51.557922919722735],[-3.2000320477654633,51.5570938369018],[-3.200031873647451,51.557093915738236],[-3.2008704263686054,51.55782509437696],[-3.202762372427609,51.55696630840521],[-3.2027623794785796,51.556966314434874],[-3.2046298935050874,51.556087059914354],[-3.204629903616674,51.55608705497005],[-3.2046302799554067,51.55608687778911],[-3.2046302751078546,51.55608687367809],[-3.2064724398109674,51.55518759045623],[-3.206472444217077,51.555187593744606],[-3.2064727466638665,51.55518744074811],[-3.2064728152440716,51.55518740723554],[-3.2064728143625523,51.55518740641329],[-3.2082898248788383,51.554267999527774]]],[[[-3.183467080204134,51.489454550344554],[-3.1834477899848483,51.488795807153394],[-3.1834477917419663,51.488795806878194],[-3.1834477885963715,51.48879575394058],[-3.1834477862903423,51.48879567137849],[-3.1834477840934925,51.48879567137962],[-3.183410082415561,51.48813723849907],[-3.1819717961203358,51.4881771779033],[-3.1820085843851196,51.48882000997718],[-3.182027396075139,51.48946312586259],[-3.183467080204134,51.489454550344554]]],[[[-3.1709129060117642,51.44279030937524],[-3.1695922581644043,51.44227533550471],[-3.1688415361782964,51.44304200412531],[-3.170140896799733,51.44354868041476],[-3.1709129060117642,51.44279030937524]]],[[[-3.1664341632505586,51.50390229413877],[-3.1651563023317495,51.503487736107076],[-3.165156273355379,51.503487770130164],[-3.1655324463838785,51.503026352348606],[-3.164243219945809,51.50262576573476],[-3.163878464162948,51.50307316385138],[-3.1626006505029225,51.50265857819444],[-3.1622352120954194,51.50308807389354],[-3.160969203850639,51.502659616774416],[-3.1606039644640105,51.50307134392267],[-3.1593501445358885,51.502629144049],[-3.159350122579705,51.50262916791955],[-3.1597031433818903,51.50223122717576],[-3.1609691274474656,51.50265970155658],[-3.1613228591534104,51.50224397831457],[-3.160045090554203,51.501829364486376],[-3.1603756121711424,51.50142399890947],[-3.1603756134900634,51.50142399945765],[-3.1603756551982443,51.50142394623094],[-3.1603756758334796,51.501423920714856],[-3.1603756749542797,51.50142392044083],[-3.160694846760993,51.5010149626273],[-3.160694806372701,51.50101501667659],[-3.161994960515245,51.50140154212586],[-3.1623133275873005,51.500974831849746],[-3.1610025702046833,51.500602533391415],[-3.1610025517666696,51.500602557809735],[-3.161298690122333,51.50018683914384],[-3.15997775255393,51.49982886366033],[-3.1599777450914934,51.49982887436023],[-3.1602523962232887,51.49942445836967],[-3.158921679868632,51.49908091382791],[-3.1586568356823386,51.499470873005386],[-3.157335939508274,51.49911286772798],[-3.1575909839628524,51.498737354443726],[-3.157590981325637,51.498737353895905],[-3.157835480334244,51.49835912296968],[-3.157835438198367,51.49835919183052],[-3.1591755267677293,51.498688204033144],[-3.1594184468415962,51.49829263120868],[-3.158069370469004,51.49797827268388],[-3.1580693489624827,51.49797830780021],[-3.158292565489367,51.497594941646994],[-3.156934933167962,51.4972953135677],[-3.1567203122180136,51.497663898352016],[-3.1553712738475053,51.497349509035864],[-3.15515531851262,51.497701121714876],[-3.1564953671682505,51.4980301640257],[-3.156260305429215,51.49839377912125],[-3.1549296513008707,51.49805018977894],[-3.1546941995944313,51.49839682620205],[-3.1544490940349976,51.49874083614043],[-3.154194418305586,51.49908210266166],[-3.1528943948320736,51.49869549361971],[-3.152641184828436,51.499019863324335],[-3.152378915888105,51.499341454468045],[-3.1536565413959847,51.49975615444783],[-3.1533735739424245,51.50008864684858],[-3.1533735748215697,51.500088647122645],[-3.1530813878571977,51.50041796154637],[-3.1527799491844077,51.50074413359133],[-3.154021091428691,51.50119999467964],[-3.1536976890727373,51.50153623794036],[-3.1549259277563966,51.502005539584914],[-3.154579875066384,51.50235150585691],[-3.1542242065210098,51.502693637618215],[-3.153859020380733,51.50303184204421],[-3.1526718026058824,51.50252305736218],[-3.1523115549214804,51.502844426031956],[-3.1519423855346465,51.50316180751632],[-3.151564452057467,51.50347506865984],[-3.1511776898352433,51.50378426123591],[-3.1534326576526217,51.504902748332675],[-3.153850270342549,51.504568879708785],[-3.1561362775908712,51.505662584269295],[-3.156574721512309,51.50529913760219],[-3.157732880477776,51.505833435791764],[-3.158175931647355,51.50545249542994],[-3.1570030084480636,51.504930899172024],[-3.1574207524221256,51.50455820466614],[-3.1574207528618516,51.5045582049403],[-3.1574207660382094,51.50455819259312],[-3.1574208393891596,51.504558127289215],[-3.157420837630449,51.50455812646683],[-3.157828093684232,51.50418093291591],[-3.157828095003207,51.50418093346411],[-3.1578281376051027,51.50418089230709],[-3.157828172741883,51.504180859929754],[-3.1578281718624264,51.504180859381414],[-3.1582248136465427,51.503799285153306],[-3.1594398506553296,51.50428184696629],[-3.1598391589596004,51.50388259604333],[-3.159839137441489,51.50388261854234],[-3.1610675027223327,51.50435185596292],[-3.1614685615928098,51.50393480288769],[-3.1602272663630333,51.5034790230128],[-3.1606039486564055,51.503071361756966],[-3.1606038946471045,51.50307142266795],[-3.1618577370909513,51.50351361185031],[-3.1622351370161637,51.5030881630648],[-3.1635011690103743,51.5035166103295],[-3.1638784452847424,51.50307318689882],[-3.1638783895283957,51.50307325521792],[-3.1651562228662202,51.503487829396214],[-3.1647672251888648,51.5039450441725],[-3.1660333051119607,51.504373464319194],[-3.1664341632505586,51.50390229413877]],[[-3.160694869589013,51.501014931898816],[-3.1593947361292565,51.500628395031676],[-3.1593947159337485,51.50062842109606],[-3.1596918117928285,51.5002302507165],[-3.1596917788690413,51.50023029708283],[-3.1610025113795652,51.50060261240773],[-3.160694869589013,51.501014931898816]],[[-3.159839212096719,51.50388254116747],[-3.1586108694142525,51.503413293590846],[-3.158985995020029,51.50302322969318],[-3.1577447493220796,51.502567423477316],[-3.158096281250363,51.50218700317457],[-3.159350075154159,51.50262921922758],[-3.1589859203679955,51.50302331118194],[-3.1602271855606525,51.50347910615008],[-3.159839212096719,51.50388254116747]],[[-3.1596918337421727,51.50023021998848],[-3.158381119519075,51.49985789246383],[-3.1586568312925363,51.499470879315524],[-3.158656781249995,51.499470952842074],[-3.159977693730706,51.49982894596769],[-3.1596918337421727,51.50023021998848]],[[-3.159086539383553,51.50102327704264],[-3.157797425541026,51.50062261944979],[-3.158094562759993,51.500241922195876],[-3.159394672468743,51.500628476243044],[-3.159086539383553,51.50102327704264]],[[-3.1578354829680877,51.49835911912876],[-3.156495411942199,51.498030094616],[-3.156720291589711,51.497663933742146],[-3.156720267889077,51.49766397434479],[-3.1580693221887812,51.497978351147],[-3.1578354829680877,51.49835911912876]],[[-3.1546572437156266,51.503887672430196],[-3.1534844017413235,51.50336604112452],[-3.153858954056649,51.503031903503924],[-3.1538589443936074,51.503031912558235],[-3.155046187734093,51.503540688746625],[-3.1546572437156266,51.503887672430196]]],[[[-3.1641382723425333,51.50949010211992],[-3.162995061062682,51.50894333664965],[-3.162453632665514,51.50937626048859],[-3.1635813788293063,51.509935400691575],[-3.1641382723425333,51.50949010211992]]],[[[-3.162633792059036,51.50616368135733],[-3.1602309302579217,51.505172295473976],[-3.1597954290306878,51.50557566794736],[-3.1593487880729407,51.50597416085919],[-3.160521760885836,51.50649573603765],[-3.1609827988746324,51.50608438876526],[-3.1621702004329846,51.506593092580836],[-3.162633792059036,51.50616368135733]]],[[[-3.161851877150382,51.50839655998736],[-3.160708720604972,51.50784977213351],[-3.1601982231639445,51.508257947946866],[-3.1613259141107095,51.50881710966496],[-3.161851877150382,51.50839655998736]]],[[[-3.1595655918656242,51.50730297336278],[-3.1584224900521405,51.506756163127314],[-3.1579429240915657,51.50713959155492],[-3.1590705598243143,51.5076987750605],[-3.1595655918656242,51.50730297336278]]],[[[-3.1388075208718114,51.48919486740104],[-3.138788180364379,51.48902273111564],[-3.13878818080375,51.48902273111558],[-3.1387881781617373,51.48902271438386],[-3.1387881763986583,51.4890226982006],[-3.1387881759592866,51.48902269820066],[-3.1387640311718803,51.48885083410638],[-3.1387640316112493,51.48885083410632],[-3.1387640294103294,51.48885082231187],[-3.138764026326599,51.488850798722794],[-3.1387640254478564,51.4888507987229],[-3.1387350746713873,51.48867919118215],[-3.1373046366252053,51.48878112466292],[-3.1373309546015684,51.48893715200981],[-3.1373529023864895,51.489093412759246],[-3.1373704825764794,51.48924992199966],[-3.1388075208718114,51.48919486740104]]],[[[-3.136505999660156,51.415676193711256],[-3.1344351159271846,51.41554031448968],[-3.1344351163650295,51.41554031119806],[-3.1344348022747752,51.41554029394782],[-3.134434690412711,51.415540286552634],[-3.1344346899743862,51.41554028792418],[-3.1323603401400955,51.41542699195771],[-3.1323603392639963,51.415426997992384],[-3.130283579668248,51.41533633880241],[-3.130283579667681,51.41533633523652],[-3.1302832774255362,51.41533632538051],[-3.1302831528436443,51.415336319902245],[-3.1302831524051964,51.41533632127377],[-3.1282041848411457,51.41526830283078],[-3.1282041852791873,51.415268297344774],[-3.126123155818234,51.41522292941023],[-3.12612315581814,51.41522292803873],[-3.1261230417653003,51.41522292694455],[-3.1261227847075213,51.415222921191116],[-3.126122784707708,51.415222923934124],[-3.124041236999142,51.41520024176287],[-3.1240412369991044,51.41520024011707],[-3.1240411102251318,51.415200240118196],[-3.124040808862707,51.41520023682928],[-3.124040808862782,51.41520024012088],[-3.121959002573211,51.41520024012087],[-3.1219590021346213,51.41520023682926],[-3.1219587007721965,51.41520024011818],[-3.121958573998224,51.41520024011705],[-3.1219585739981865,51.41520024176285],[-3.119877083316021,51.41522292366129],[-3.1198770833161515,51.41522292174118],[-3.1198769087274263,51.415222925576735],[-3.1198766547405046,51.41522292831297],[-3.119876655178982,51.415222931055965],[-3.11779605385603,51.415268289134694],[-3.1177960534173965,51.415268288860375],[-3.117796028852068,51.41526828968218],[-3.1177956827446085,51.415268297072906],[-3.1177956831828375,51.415268300913134],[-3.1157166585920826,51.41533632154795],[-3.115716658153678,51.41533631990211],[-3.115716521727728,51.41533632592824],[-3.1157162308909316,51.41533633551065],[-3.1157162313290745,51.41533633880228],[-3.113639472171988,51.41542699799226],[-3.1136394712958326,51.41542699223188],[-3.1115651210229274,51.415540287923974],[-3.1115651210232698,51.41554028655248],[-3.1115649964396423,51.415540294769315],[-3.1115646946322837,51.41554031119786],[-3.1115646955087968,51.41554031448955],[-3.1094942381701562,51.41567616578163],[-3.1094942372937897,51.41567616248994],[-3.1094939284639893,51.41567618604412],[-3.109493811337154,51.41567619371103],[-3.1094938117754167,51.41567619508257],[-3.1074273917434563,51.41583458848424],[-3.1074273913050665,51.41583458766129],[-3.1074273206770906,51.41583459368649],[-3.107427022812105,51.41583461668809],[-3.10742702368833,51.41583461997981],[-3.105364898529631,51.416015541205404],[-3.1053648998438534,51.4160155458687],[-3.103308599353434,51.41621885990315],[-3.1033085989157017,51.41621885770866],[-3.103308405889945,51.4162188790716],[-3.103308176014983,51.41621890179986],[-3.103308176891271,51.41621890426871],[-3.1012578450921304,51.41644459113825],[-3.1012578433401616,51.416444585377626],[-3.0992132605943463,51.41669267936988],[-3.099213262346352,51.41669268458193],[-3.0971766728238244,51.41696291328807],[-3.0971766723859204,51.416962911916485],[-3.097176535506278,51.41696293163589],[-3.09717630956865,51.41696296148478],[-3.0971763104446235,51.41696296395368],[-3.095147551200911,51.41725534145842],[-3.09514754901066,51.41725533624621],[-3.093126454044182,51.41756989418823],[-3.093126456234397,51.417569899126185],[-3.091115248482241,51.41790629096689],[-3.0911152462920373,51.41790628630319],[-3.0891132886686976,51.4182646144044],[-3.089113286916357,51.41826461111229],[-3.0891130004088847,51.41826466588938],[-3.089112878435846,51.41826468779809],[-3.0891128788735265,51.41826468916972],[-3.087121551240673,51.418644706451474],[-3.087121550802409,51.41864470590275],[-3.0871214889362193,51.41864471850159],[-3.0871211949652757,51.418644774368715],[-3.087121196717491,51.418644777660866],[-3.0851407452949937,51.41904643427169],[-3.085140744418727,51.41904643289991],[-3.0851406176116876,51.41904646001462],[-3.085140339428533,51.41904651643047],[-3.0851403411806158,51.41904651972263],[-3.083171418548912,51.419469681476606],[-3.0831714181111614,51.41946968037926],[-3.0831713163115486,51.419469703385836],[-3.0831710139872293,51.419469768292096],[-3.0831710161778925,51.419469771584446],[-3.0812141701308176,51.41991432075753],[-3.0812141688164467,51.419914318836966],[-3.0812139941718457,51.41991436074253],[-3.081213766434662,51.41991441222966],[-3.081213768187003,51.419914414973285],[-3.079269588286961,51.42038021715758],[-3.07926958653473,51.42038021441393],[-3.079269354399095,51.420380273027426],[-3.079269190282438,51.42038031246533],[-3.07926919159674,51.420380314385916],[-3.0773382174679047,51.4208672412237],[-3.077338215277871,51.42086723765694],[-3.077337903266482,51.42086732037385],[-3.077337870793116,51.420867328590184],[-3.077337871231556,51.42086732886465],[-3.075420742202217,51.42137522107463],[-3.075420741325915,51.42137521997707],[-3.0754206500449692,51.42137524544989],[-3.075420348559157,51.421375325148674],[-3.0754203511880727,51.42137532844132],[-3.0735177001068545,51.42190401662579],[-3.0735176979161807,51.421904013881864],[-3.0735174547839255,51.4219040848228],[-3.073517306010272,51.42190412617923],[-3.0735173073246824,51.421904127825584],[-3.0716296569893884,51.42245346589046],[-3.0716296552372215,51.422453463421],[-3.0716294252623624,51.42245353326658],[-3.0716292712164197,51.42245357818418],[-3.0716292725307746,51.42245357983056],[-3.0697571976235647,51.42302340143533],[-3.0697571958711536,51.42302339924012],[-3.0697570040713984,51.42302346004748],[-3.0697568105186024,51.42302351920824],[-3.0697568122710135,51.42302352140344],[-3.0679008327182937,51.42361366816681],[-3.067900830089787,51.42361366487397],[-3.0679005206513543,51.4236137673165],[-3.06790050177808,51.423613773342225],[-3.0679005022164967,51.42361377361673],[-3.0660612284651307,51.42422405403837],[-3.0660612267128564,51.424224051843126],[-3.066061045869548,51.424224114569846],[-3.0660608505450777,51.42422417920962],[-3.0660608527361033,51.42422418140509],[-3.064238896231541,51.42485439084842],[-3.064238895793136,51.42485439057389],[-3.064238875600828,51.42485439796986],[-3.064238520489115,51.42485452067799],[-3.0642385239938887,51.42485452479423],[-3.0624343896353565,51.425504488223154],[-3.0624343865683614,51.425504484929974],[-3.062434091573239,51.425504595594504],[-3.0624340165088952,51.42550462271136],[-3.0624340173853297,51.42550462353471],[-3.0606481943789747,51.426174165653364],[-3.0606481939405756,51.42617416537883],[-3.060648161015719,51.42617417797909],[-3.0606478818154836,51.42617428288723],[-3.0606478848827594,51.42617428590616],[-3.0588809722989407,51.42686318432151],[-3.058880970984158,51.426863183223595],[-3.058880863862187,51.426863226504295],[-3.058880607037801,51.42686332675736],[-3.0588806101054007,51.42686332950205],[-3.0571332018792594,51.4275713511458],[-3.057133196620964,51.42757134620547],[-3.0554054065012166,51.42829845059665],[-3.05540540562444,51.42829845004754],[-3.055405366107879,51.4282984673056],[-3.055405050421865,51.42829860015871],[-3.0554050543657065,51.42829860372689],[-3.0536981219450383,51.42904426881831],[-3.053698119753961,51.42904426689692],[-3.0536979643128466,51.429044337574226],[-3.05369777067569,51.42904442194393],[-3.053697773305145,51.42904442413989],[-3.0520118143332957,51.4298085949507],[-3.0520118108275454,51.42980859193129],[-3.052011541205042,51.42980871876855],[-3.0520115144192923,51.429808730821485],[-3.0520115148572478,51.42980873137035],[-3.0503470939329818,51.43059115432692],[-3.0503470934946018,51.430591154052344],[-3.0503470741720986,51.43059116336654],[-3.0503467492087966,51.43059131622409],[-3.0503467535912505,51.43059131979269],[-3.048704416134104,51.43139173803659],[-3.0487044117517037,51.43139173446792],[-3.048704111792142,51.431391885965255],[-3.048704081489599,51.43139190075821],[-3.04870408192753,51.43139190130708],[-3.0470842812744796,51.43221009277516],[-3.047084280836104,51.43221009250058],[-3.0470842689773168,51.43221009880177],[-3.047083948804179,51.43221026043092],[-3.047083953625362,51.432210263999934],[-3.045487190235196,51.43304597677372],[-3.045487187167538,51.43304597430299],[-3.0454869829217057,51.43304608498478],[-3.0454868594994995,51.43304614963777],[-3.0454868616913546,51.433046151010714],[-3.0439135751074415,51.43389915673403],[-3.0439135689712185,51.433899152341105],[-3.042363683155852,51.434769505667944],[-3.0423636914838865,51.434769511433956],[-3.0408389131421,51.43565625333889],[-3.0408389065670693,51.435656248945484],[-3.0393387531382374,51.43655965490515],[-3.03933875226151,51.43655965435593],[-3.03933872458121,51.43655967161701],[-3.039338442956204,51.43655984120711],[-3.0393384477777436,51.43655984450215],[-3.0378639898135016,51.43747926970662],[-3.0378639884983962,51.43747926888277],[-3.037863926542221,51.43747930888542],[-3.0378636888336237,51.43747945710853],[-3.03786369321729,51.43747945985471],[-3.036415031788487,51.43841483731602],[-3.036415025212459,51.43841483347098],[-3.0349923954822375,51.43936602003799],[-3.0349923928514904,51.439366018664515],[-3.0349922750709073,51.43936610004287],[-3.034992102801905,51.43936621539336],[-3.034992106309388,51.43936621731609],[-3.0335964849392805,51.44033255882279],[-3.0335964818706955,51.44033255690035],[-3.033596328477629,51.44033266705152],[-3.033596195309511,51.44033275911437],[-3.0335961979397243,51.44033276076217],[-3.032227717561338,51.44131415924758],[-3.032227715369496,51.44131415787439],[-3.0322276116329325,51.44131423487203],[-3.0322274340587225,51.441314362283485],[-3.0322274380051395,51.44131436420663],[-3.0308865104375333,51.44231052606716],[-3.030886505175975,51.44231052332003],[-3.030886268228536,51.442310705816844],[-3.0308862352601365,51.44231073020353],[-3.03088623613688,51.442310730752816],[-3.029573234658686,51.443321381005994],[-3.029573233343,51.44332138045635],[-3.0295731898180605,51.443321414983295],[-3.029573002097939,51.44332155966343],[-3.0295730064827993,51.44332156186132],[-3.0282883708971786,51.44434636523007],[-3.0282883682663666,51.444346363856454],[-3.028288260540282,51.4443464531908],[-3.0282881084150968,51.44434657430792],[-3.0282881119232297,51.44434657595656],[-3.0270322733982282,51.44538518892582],[-3.0270322716441296,51.44538518810148],[-3.027032211838973,51.44538523934637],[-3.027032013087121,51.44538540376288],[-3.0270320179110057,51.445385405961225],[-3.0258053220268466,51.446437541722645],[-3.0258053189570155,51.446437540348605],[-3.025805194934666,51.446437650788134],[-3.025805069601849,51.44643775820929],[-3.02580507267167,51.446437759583326],[-3.0246078919637265,51.447503101994165],[-3.0246078867007653,51.44750309979537],[-3.0246076931680186,51.447503278475615],[-3.0246076452279254,51.44750332122596],[-3.024607646543669,51.44750332177566],[-3.0234401064944714,51.44858176733212],[-3.0234401121959045,51.448581769805664],[-3.0223030219740603,51.44967257728345],[-3.0223030167109664,51.44967257508454],[-3.0223028372078504,51.44967275377299],[-3.0223027866160947,51.449672802554666],[-3.022302788370865,51.449672803104775],[-3.0211963129040886,51.45077580483035],[-3.021196311149898,51.45077580400593],[-3.0211962574668396,51.45077585991619],[-3.0211960867547076,51.450776029833],[-3.0211960915794824,51.45077603175728],[-3.0201205406376475,51.45189092082538],[-3.020120533180552,51.45189091807585],[-3.019075806499053,51.45301781867799],[-3.0190758130788393,51.45301782115252],[-3.018063063034488,51.45415549585722],[-3.018063059086302,51.454155494482194],[-3.018062949471055,51.45415562303],[-3.018062854394344,51.45415572964695],[-3.018062857465091,51.45415573074688],[-3.0170820175353,51.45530423544808],[-3.017082011393073,51.45530423352244],[-3.017081838797953,51.455304444301895],[-3.01708181546491,51.455304471710654],[-3.0170818163423716,51.455304471985734],[-3.01613315987592,51.45646348899208],[-3.0161331585600184,51.45646348844228],[-3.0161331259729027,51.456463529831616],[-3.0161329648165975,51.45646372690515],[-3.016132970519886,51.456463728830435],[-3.015216788611989,51.45763290451648],[-3.015216784662951,51.45763290341566],[-3.0152166868823835,51.457633033617405],[-3.0152165996834484,51.45763314517661],[-3.0152166031934335,51.457633146277026],[-3.0143331522785735,51.45881215851177],[-3.014333146574413,51.45881215686069],[-3.014333006922301,51.45881235175723],[-3.014332994588272,51.458812368477986],[-3.0143329954657885,51.45881236875311],[-3.0134823972896374,51.46000107135984],[-3.0134824047489643,51.46000107356119],[-3.0126652935882343,51.46119858268642],[-3.012665285689645,51.461198580484606],[-3.011881551328395,51.46240506019892],[-3.011881548695699,51.46240505937352],[-3.011881496235008,51.462405144081885],[-3.0118813904506982,51.46240530718895],[-3.011881395277651,51.46240530856501],[-3.011131601894855,51.46361989273817],[-3.0111315983838463,51.463619891911925],[-3.011131528711207,51.46362001061647],[-3.0111314471485717,51.46362014302454],[-3.0111314510980383,51.463620144125514],[-3.010415649083173,51.46484274430395],[-3.010415648205567,51.46484274402881],[-3.010415634090987,51.46484276925066],[-3.0104155207548415,51.46484296307044],[-3.0104155264602803,51.46484296444742],[-3.0097339562999914,51.46607317935915],[-3.0097339505944256,51.46607317798215],[-3.0097338486668646,51.46607337318374],[-3.0097338164655025,51.466073431029486],[-3.0097338182207483,51.46607343157977],[-3.00908670733114,51.467310851138265],[-3.009086705575856,51.467310850587964],[-3.0090866786509602,51.46731090514706],[-3.0090865736293906,51.46731110610531],[-3.0090865793350954,51.46731110748234],[-3.0084741098159253,51.468555386814764],[-3.0084741067430723,51.468555386263176],[-3.008474059495149,51.46855548853007],[-3.008473983129111,51.468555643708],[-3.0084739875187996,51.46855564453517],[-3.0078963468845914,51.46980640912325],[-3.0078963411779216,51.46980640802045],[-3.007896259451981,51.469806597205626],[-3.0078962280984958,51.46980666520066],[-3.007896230293052,51.46980666575142],[-3.007353581461437,51.471063569278186],[-3.0073535739985156,51.471063567899336],[-3.0068459089355155,51.472326675571615],[-3.006845916837839,51.472326676950935],[-3.0063737943209543,51.47359460045614],[-3.0063737916870132,51.47359459990493],[-3.006373762037989,51.47359468655345],[-3.00637369702724,51.473594860942],[-3.006373702295823,51.47359486177013],[-3.005937058453029,51.47486773751969],[-3.0059370505495893,51.47486773641461],[-3.0055359412416798,51.47614543785618],[-3.0055359359728206,51.47614543702801],[-3.005535884112956,51.47614561910954],[-3.005535858426601,51.476145700824425],[-3.005535861061388,51.47614570110137],[-3.005170564182327,51.4774273492017],[-3.0051705633045103,51.47742734892651],[-3.0051705553165413,51.477427380462686],[-3.005170499022287,51.47742757762591],[-3.005170504730554,51.47742757845454],[-3.0048410644694514,51.47871301120413],[-3.0048410635916127,51.478713010928935],[-3.0048410564838646,51.478713041643076],[-3.00484099657673,51.47871327583259],[-3.0048410031636976,51.47871327666213],[-3.0045475307533427,51.48000206766431],[-3.004547524604772,51.48000206710951],[-3.0045474818770104,51.480002281841074],[-3.0045474703248507,51.48000233230009],[-3.004547472081281,51.48000233257616],[-3.0042900500604923,51.48129412477085],[-3.0042900483040147,51.481294124494774],[-3.0042900398277492,51.481294174408276],[-3.0042899966539953,51.48129439078503],[-3.004290002802736,51.48129439133985],[-3.0040687125204832,51.482588790877706],[-3.004068708128096,51.48258879059895],[-3.0040686857551813,51.48258894719991],[-3.0040686670187586,51.48258905689974],[-3.004068670093216,51.482589057177165],[-3.003883577456901,51.48388570664224],[-3.0038835699898483,51.483885706086056],[-3.003734684029282,51.4851846728579],[-3.0037346932538838,51.48518467341587],[-3.0036221793675892,51.486484529258405],[-3.003622170142009,51.48648452897471],[-3.003545988185247,51.48778568018228],[-3.003545983792364,51.48778567990351],[-3.003545979465409,51.48778582253347],[-3.003545972108808,51.487785947605346],[-3.003545975622971,51.48778594788322],[-3.0035061824746667,51.489087485287314],[-3.0035061811572663,51.48908748501167],[-3.0035061810497123,51.48908752615609],[-3.0035061748036846,51.489087730500835],[-3.0035061805148104,51.48908773078095],[-3.003502777463188,51.490389510137085],[-3.003502772189851,51.490389510406004],[-3.0035027769698392,51.49038969885275],[-3.003502776781965,51.490389770718295],[-3.0035027789788895,51.49038977072053],[-3.0035357697866774,51.49169137400493],[-3.0035357662714968,51.49169137400135],[-3.003535772975664,51.49169149881316],[-3.003535776576089,51.49169163431939],[-3.0035357805306666,51.49169163432341],[-3.0036051721400736,51.49299293999664],[-3.003605180489581,51.49299293973084],[-3.003710927429282,51.49429303043217],[-3.0037109173211327,51.49429303097049],[-3.0038530324679837,51.49559203086931],[-3.003853029391223,51.495592031140475],[-3.00385304405599,51.49559213703382],[-3.0038530607927885,51.49559229093114],[-3.0038530651878537,51.49559229066131],[-3.0040314516239475,51.49688928529533],[-3.004031448107654,51.49688928556606],[-3.0040314688769567,51.4968894101177],[-3.004031487424029,51.496889544267454],[-3.0040314913797683,51.49688954399718],[-3.004246168989723,51.49818465637899],[-3.004246176461967,51.498184655837946],[-3.004496997293959,51.49947697303398],[-3.0044969946564124,51.49947697330561],[-3.004497016810585,51.49947707317183],[-3.004497047602699,51.499477231471914],[-3.004497051998133,51.499477231202064],[-3.0047839855848797,51.500766617995325],[-3.0047839772325404,51.5007666188098],[-3.0051070684500787,51.502053197042024],[-3.005107077682353,51.5020531959541],[-3.0054659723426864,51.5033355446659],[-3.0054659679461735,51.5033355452101],[-3.0054660167648266,51.503335703253576],[-3.0054660442020342,51.50333580120477],[-3.005466046839796,51.50333580093312],[-3.005860768202287,51.50461404380121],[-3.0058607594090354,51.50461404488962],[-3.006291275992253,51.50588804656829],[-3.0062912755520212,51.50588804684214],[-3.0062912790437717,51.50588805644597],[-3.006291361929535,51.505888301474734],[-3.006291368964181,51.505888300658846],[-3.0067573804464747,51.50715716350894],[-3.006757376048921,51.50715716432747],[-3.006757432390268,51.50715730591998],[-3.0067574734242637,51.507157417324784],[-3.0067574765024823,51.507157416779236],[-3.007258929755589,51.508421008664584],[-3.007258927556405,51.508421009211006],[-3.0072589559602245,51.50842107534433],[-3.0072590297737514,51.50842126166403],[-3.0072590350505326,51.508421260846355],[-3.0077957799642174,51.509679196329415],[-3.007795775566439,51.50967919714799],[-3.0077958450735522,51.5096793497247],[-3.007795887024685,51.50967944796379],[-3.007795890103064,51.50967944741822],[-3.008367880054581,51.51093159348589],[-3.085721608509103,51.49668609583448],[-3.0855349048089367,51.49627889330892],[-3.099412069106691,51.493880514166044],[-3.0993016149595984,51.49362286184591],[-3.099198411641373,51.49336411918239],[-3.1033989443967678,51.49273541999037],[-3.1033198947399545,51.492521416377336],[-3.1061314677049023,51.492132773526464],[-3.1060688393513565,51.49194863318684],[-3.107479822405184,51.491769632190866],[-3.1074271333646184,51.491600228534026],[-3.107379194322577,51.491430294992014],[-3.1102194068014843,51.49113394148261],[-3.110258632625791,51.49127295670288],[-3.1102586317469276,51.49127295697708],[-3.110258637454001,51.491272975081266],[-3.1102586400876904,51.49127298468193],[-3.110258640527158,51.49127298440767],[-3.1103017553563057,51.49141157898761],[-3.113123644532048,51.49105345787002],[-3.1131601933205877,51.491160871029074],[-3.1131601941994296,51.491160870754854],[-3.1131997328901964,51.4912678477448],[-3.113199732450747,51.49126784801906],[-3.113199735963953,51.491267857071136],[-3.113199740355306,51.49126786914054],[-3.113199740794703,51.49126786914057],[-3.1132422645765914,51.49137439898616],[-3.1132422641371917,51.491374398986125],[-3.1132422645764164,51.49137439980905],[-3.113242272920531,51.49137442038197],[-3.113242273359926,51.49137442038201],[-3.1132877690775618,51.49148047071193],[-3.1132877686381635,51.49148047071189],[-3.1132877743476306,51.491480483330015],[-3.1132877778609904,51.49148049183347],[-3.113287778300386,51.49148049183352],[-3.1133362319191646,51.49158603027622],[-3.1119556452727277,51.491841183984164],[-3.1119002618932794,51.491720544029654],[-3.110512741013016,51.491960600375215],[-3.110454246317554,51.491824229608504],[-3.1103995665602313,51.491687225594646],[-3.1089994654454003,51.49189688930221],[-3.108942983195729,51.49174403253301],[-3.1075372250632545,51.49193839294124],[-3.1075993628993595,51.492106570029144],[-3.1089994764210735,51.491896919750424],[-3.108999472908898,51.49189690987533],[-3.1090602117807173,51.49204910743645],[-3.109060211341311,51.4920491074364],[-3.1090602157321467,51.4920491178602],[-3.1090602240745873,51.49204913815912],[-3.1090602245140726,51.49204913788487],[-3.1091252182919344,51.492200671019525],[-3.1105127528693397,51.49196062780611],[-3.1105127471606546,51.49196061491357],[-3.110575055508766,51.49209634886145],[-3.1119556562518165,51.49184120839758],[-3.1120143927061235,51.49196120266955],[-3.112014392266726,51.4919612026695],[-3.1120143953411494,51.49196120843002],[-3.1120144041248095,51.491961226534414],[-3.1120144050036087,51.49196122653449],[-3.112076499387374,51.49208058663981],[-3.1120765007056463,51.49208058636564],[-3.1121419100010477,51.49219922808605],[-3.112141909561576,51.49219922836032],[-3.1121419179067806,51.4921992428988],[-3.112141923177396,51.492199252225355],[-3.1121419236168655,51.4921992519511],[-3.11221064037975,51.492317162937084],[-3.1122106399403435,51.49231716293704],[-3.1122106447719053,51.492317170892086],[-3.112210653995765,51.49231718625353],[-3.112210654435166,51.49231718625357],[-3.1122826580442013,51.49243433056464],[-3.1109429151297663,51.49276361560005],[-3.110861898618032,51.49263180181793],[-3.1108618981788503,51.492631800995],[-3.1107845795261557,51.49249912350557],[-3.109427232558057,51.49279900320228],[-3.109345462038649,51.49265066988583],[-3.109267851287709,51.492501467750486],[-3.107894556670061,51.492771576017084],[-3.1079799237456083,51.49293569929982],[-3.1066143688607606,51.493220713076234],[-3.1067125036321928,51.49339875136088],[-3.1094272492467123,51.49279903310252],[-3.109427243976579,51.49279902377582],[-3.109513138287765,51.492946423800966],[-3.1095131378483503,51.49294642380092],[-3.109513143997104,51.49294643395059],[-3.109513154976766,51.49294645287829],[-3.1095131558555855,51.49294645287841],[-3.109603170479386,51.493092914665496],[-3.110942930941457,51.492763642208416],[-3.111027604052169,51.49289452753746],[-3.111027603612699,51.4928945278117],[-3.11102761195824,51.4928945401559],[-3.111027620742841,51.49289455387161],[-3.111027621182254,51.49289455387166],[-3.1111159588244894,51.493024522809584],[-3.112436481084116,51.49266624617092],[-3.1125182083130887,51.492780877553955],[-3.112518207873617,51.49278087782821],[-3.1125182179769393,51.49278089126963],[-3.1125182245659277,51.492780900596294],[-3.1125182250053993,51.49278090032203],[-3.112603144722741,51.49289462373372],[-3.112603144283266,51.49289462400797],[-3.112603159658186,51.492894643484384],[-3.112603161854539,51.492894646501824],[-3.1126912486010583,51.49300742709737],[-3.1126912481615903,51.49300742737163],[-3.1126912587045963,51.493007439990194],[-3.1126912661723516,51.49300744986551],[-3.11269126661183,51.493007449591246],[-3.1127825116198546,51.493119275842375],[-3.1140597678442137,51.49270435224532],[-3.1141423168649203,51.49280129510783],[-3.114142315986054,51.49280129538206],[-3.114227580201735,51.492897343359026],[-3.1142275802016792,51.492897343633324],[-3.114227585473544,51.49289734911965],[-3.114227597335028,51.49289736256105],[-3.114227597774439,51.49289736256109],[-3.114315517010981,51.49299244761666],[-3.1143155165715126,51.49299244789092],[-3.114315529311815,51.492992461606676],[-3.1143155345837514,51.49299246681871],[-3.1144061171991835,51.49308659854793],[-3.115633877420612,51.49261705137067],[-3.1157137493285605,51.492696860959676],[-3.1157137524039302,51.49269686397712],[-3.115713765144701,51.49269687686984],[-3.11571376558416,51.49269687659557],[-3.1157958569232407,51.49277580357979],[-3.115795856044382,51.49277580385404],[-3.1158801589131495,51.492853840273796],[-3.1158801584737432,51.49285384027377],[-3.11588016726069,51.4928538482289],[-3.115880175608315,51.4928538556354],[-3.1159666302620117,51.492930946074516],[-3.1159666337768233,51.492930949091985],[-3.115966647396637,51.49293096143614],[-3.115966647836054,51.49293096143616],[-3.1160552446143606,51.49300709793473],[-3.116055244174955,51.493007097934694],[-3.1160552525227194,51.4930071047926],[-3.116055262188458,51.493007113296365],[-3.116055262627915,51.493007113022095],[-3.1161459751746885,51.49308227308146],[-3.1161459742958257,51.49308227335571],[-3.1162388118423863,51.49315646300609],[-3.11736573004531,51.492596996163066],[-3.1172883802025644,51.49253518440388],[-3.1172127689632725,51.492472537995006],[-3.117138910823304,51.49240906873527],[-3.117066863774262,51.49234482627854],[-3.1182535250688,51.491835785145604],[-3.1183111628570717,51.49188717743876],[-3.11831116285704,51.49188717771307],[-3.1183111698868253,51.49188718374786],[-3.1183111742804037,51.491887187862474],[-3.1183702403142335,51.49193794408994],[-3.118370239874819,51.49193794436422],[-3.118370249101453,51.491937952044886],[-3.118370252177002,51.491937954513666],[-3.1184307284447654,51.49198805986059],[-3.11843072800534,51.49198806013488],[-3.118430737232021,51.49198806754122],[-3.1184307403076046,51.491988069735726],[-3.118492607918611,51.492037508564316],[-3.1173657146675997,51.49259698381899],[-3.1174447807089787,51.4926579430948],[-3.1174447802695675,51.49265794309478],[-3.117444792132466,51.49265795214712],[-3.1174447965261396,51.49265795543889],[-3.117444796526169,51.49265795516459],[-3.117525538786201,51.49271803177907],[-3.1175255383467575,51.49271803205334],[-3.117607964735967,51.49277723203795],[-3.117607971765915,51.49277723697562],[-3.117607980992683,51.49277724383345],[-3.1176079814321223,51.49277724355918],[-3.11769205065144,51.49283553646163],[-3.1198152778190766,51.49162115055499],[-3.1198666796849874,51.4916555635184],[-3.1198666792455905,51.491655563518385],[-3.1198666875937713,51.49165556900453],[-3.11986668979066,51.49165557037609],[-3.1198666897906855,51.491655570101784],[-3.119919056250432,51.49168942460036],[-3.1199190566898225,51.49168942460037],[-3.1199723508357553,51.49172269649379],[-3.118963108599961,51.49236374471788],[-3.1190354119143064,51.492407335891706],[-3.119035411474874,51.49240733616599],[-3.1190354228988344,51.49240734274949],[-3.1190354259745092,51.492407344669665],[-3.1190354264139373,51.49240734439538],[-3.119108922920176,51.492450132972785],[-3.1191089334653976,51.492450139007644],[-3.1191089374198606,51.492450141202156],[-3.119183634147674,51.49249213074697],[-3.11918363458711,51.49249213047268],[-3.1192594783701737,51.49253329080836],[-3.119259477930728,51.492533291356935],[-3.1193364766769593,51.49257362741882],[-3.119336476237559,51.49257362741881],[-3.119336492055521,51.492573635648206],[-3.1193364924949667,51.49257363537391],[-3.1194145917190417,51.492613118631276],[-3.1194145912796305,51.492613118631276],[-3.1194145952341406,51.49261312055146],[-3.1194146070976556,51.49261312658635],[-3.1194146070976774,51.49261312631205],[-3.1194937988890445,51.492651752922335],[-3.119493798449611,51.49265175319662],[-3.119574073579368,51.492689518220025],[-3.11957407357935,51.492689518494316],[-3.1195740858823524,51.4926895239806],[-3.1195740898368816,51.49268952590081],[-3.119574090276288,51.492689525900815],[-3.119655392939693,51.49272640327537],[-3.118819197102104,51.49345811427541],[-3.1189221414482162,51.49350311538473],[-3.118922141887663,51.49350311511046],[-3.119026286581012,51.49354697043413],[-3.1190262861415663,51.49354697070841],[-3.119026307672206,51.49354697921234],[-3.1191316632540986,51.49358969313622],[-3.1191316628146875,51.493589693136215],[-3.1191316751179463,51.493589697799656],[-3.1191316839059486,51.49358970164009],[-3.1191316843453873,51.49358970136582],[-3.119238218295548,51.49363126099373],[-3.1192382178561036,51.493631261268014],[-3.1192382292806005,51.49363126538283],[-3.1192382393868536,51.4936312694976],[-3.119238239826289,51.49363126922331],[-3.1193459196239806,51.49367166193344],[-3.119345919184543,51.49367166220772],[-3.1193459367607206,51.493671668517074],[-3.1193459407153727,51.49367166988868],[-3.119345941154784,51.49367166988869],[-3.119454734278907,51.49371088305926],[-3.119454733839486,51.49371088305926],[-3.1194547355971225,51.49371088360789],[-3.11945475580974,51.49371089101451],[-3.1194547558097674,51.4937108907402],[-3.1195646284204717,51.493748912298116],[-3.119564627981036,51.49374891257241],[-3.1195646385268003,51.49374891613857],[-3.119564650830192,51.493748920253374],[-3.119564650830208,51.49374891997907],[-3.1196755699660454,51.49378573894853],[-3.119675569526603,51.49378573922282],[-3.1196755866635337,51.49378574443494],[-3.119675591936411,51.49378574635516],[-3.119675591936429,51.49378574608087],[-3.119787524196136,51.49382135121187],[-3.119787528590226,51.49382135258348],[-3.1197875461665627,51.493821358344185],[-3.1197875466059966,51.4938213580699],[-3.1199004572696993,51.49385573811251],[-3.119900457269681,51.493855738386806],[-3.1199004700125887,51.49385574195299],[-3.119900479679598,51.4938557449705],[-3.1200143349057994,51.49388888977209],[-3.1200143454516636,51.49388889278961],[-3.120014357315768,51.49388889608147],[-3.1201291447938093,51.49392080152455],[-3.120703338790713,51.493096546933366],[-3.120611499145728,51.49307101990662],[-3.1205204013831116,51.493044500419444],[-3.120430048583345,51.49301698902223],[-3.120340501388543,51.49298850464448],[-3.1210053876450523,51.4921912590557],[-3.121072545082886,51.49221262128188],[-3.121072545082876,51.49221262155618],[-3.121072556067812,51.49221262484792],[-3.121072558264793,51.492212625670845],[-3.121072558704212,51.49221262539654],[-3.121140303277544,51.49223325275355],[-3.1211403032775378,51.49223325302784],[-3.1211403107473026,51.492233255222345],[-3.12114031645948,51.492233256868204],[-3.121140316898879,51.49223325686822],[-3.121208627953539,51.4922531427716],[-3.121208627514122,51.4922531430459],[-3.1212086314687197,51.49225314414314],[-3.1212086415748903,51.492253146886256],[-3.1212774975777293,51.49227228530022],[-3.1207033198962937,51.49309654144707],[-3.120795848250795,51.493121060924366],[-3.120795847811356,51.493121061472955],[-3.120889066188593,51.4931445736735],[-3.120889066188607,51.493144573399206],[-3.120982890656667,51.49316705747341],[-3.1209828902172414,51.49316705774769],[-3.121077366469103,51.49318852494101],[-3.121077366908526,51.49318852466673],[-3.121172391238382,51.49320895083789],[-3.1211723907989546,51.49320895111217],[-3.1211724092541373,51.493208954952614],[-3.121172410132962,51.49320895495262],[-3.121267990444408,51.49322834256909],[-3.1212679900049887,51.49322834284337],[-3.121267993080855,51.49322834339202],[-3.121268009778416,51.49322834668383],[-3.121268010217843,51.49322834640954],[-3.1213641179434135,51.49324668998362],[-3.1213641179434046,51.49324669025792],[-3.1213641249739723,51.4932466913552],[-3.121364136838043,51.493246693824034],[-3.1213641372774594,51.49324669354974],[-3.1214607438495454,51.49326398731959],[-3.121460746486007,51.4932639878682],[-3.12146076318361,51.49326399088569],[-3.121460763183617,51.493263990611396],[-3.1215578391556007,51.49328022908946],[-3.1215578387161864,51.49328022908945],[-3.1215578457467656,51.49328023018672],[-3.121557858050272,51.493280232381245],[-3.121557858489692,51.49328023210695],[-3.121655373096548,51.493295410354385],[-3.121655373096541,51.49329541062868],[-3.1216553924306454,51.49329541364618],[-3.1216553928700685,51.49329541337188],[-3.1217533171042624,51.4933095269986],[-3.1217533171042566,51.4933095272729],[-3.1217533355595597,51.49330952974176],[-3.1217533368778008,51.49330952974178],[-3.1218516404134427,51.49332257408338],[-3.1218516404134364,51.49332257435767],[-3.121851647004622,51.49332257518061],[-3.1218516606264077,51.49332257682654],[-3.1218516606264153,51.49332257655224],[-3.121950314016274,51.49333454804168],[-3.1219503140162694,51.49333454831598],[-3.1219503175315726,51.49333454859031],[-3.12195033335043,51.493334550510525],[-3.121950333789848,51.493334550236234],[-3.1220493075865927,51.493345445306545],[-3.1220493071471718,51.493345445580836],[-3.122148590358715,51.4933552620368],[-3.122148590358707,51.49335526231109],[-3.1221485934346003,51.4933552625854],[-3.1221486101323057,51.4933552642313],[-3.122148610132311,51.49335526395701],[-3.122248132885075,51.493363995762834],[-3.1222481407945213,51.49336399631147],[-3.1222481526586856,51.493363997408736],[-3.1223479043997977,51.49337164346658],[-3.122184887761563,51.49426467901207],[-3.1223098520202917,51.494272878254826],[-3.1223098520202828,51.494272878803415],[-3.122435027703144,51.4942797154845],[-3.1224350272637222,51.4942797154845],[-3.1224350382492894,51.49427971603315],[-3.1224350523108146,51.494279716856106],[-3.122435052310818,51.4942797165818],[-3.1225603998586657,51.49428518850601],[-3.1225603998586715,51.494285187957416],[-3.122685856422848,51.49428929265539],[-3.122685856422846,51.494289292929686],[-3.1226858805911117,51.49428929347833],[-3.122685881469958,51.49428929347834],[-3.1228114334171266,51.494292030675375],[-3.122811445720972,51.494292030949694],[-3.1228114584642404,51.49429203122403],[-3.1228114584642417,51.49429203094972],[-3.1229370679927606,51.49429339982261],[-3.1229370802966074,51.49429339982262],[-3.122937093039877,51.49429340009694],[-3.1229370930398774,51.49429339982263],[-3.1230627205903874,51.494293399822624],[-3.123062720590388,51.49429340009693],[-3.1230627460769274,51.494293399822624],[-3.1230627465163505,51.49429339982261],[-3.123188355166024,51.49429203122402],[-3.123188368348716,51.494292030949694],[-3.123188380213139,51.49429203094967],[-3.123313932160308,51.49428929375263],[-3.123313957207419,51.49428929320397],[-3.1233139572074173,51.49428929292968],[-3.123439413771596,51.494285188231714],[-3.123439413771599,51.49428518850601],[-3.1235647613194497,51.4942797168561],[-3.1235647617588724,51.49427971685609],[-3.123564786366545,51.49427971575879],[-3.123564786366543,51.4942797154845],[-3.1236899365628963,51.494272880175046],[-3.1236899506244167,51.49427287935207],[-3.1236899616099807,51.49427287880341],[-3.1238149267475483,51.49426467901206],[-3.1238149267475417,51.49426467873777],[-3.123939618051977,51.49425512104895],[-3.1239396426596056,51.49425511885439],[-3.124064048255561,51.494244203817665],[-3.1240640482555646,51.49424420409195],[-3.124188179117702,51.49423193061094],[-3.124188179117686,51.49423193006235],[-3.1243118985751894,51.494218311579935],[-3.1243119139549242,51.494218309933984],[-3.1243119231827636,51.49421830883671],[-3.1244352422105686,51.494203343982576],[-3.12443524221058,51.49420334425688],[-3.124435262423925,51.494203341787966],[-3.1244352676969624,51.49420334096501],[-3.1245581493732995,51.49418703522682],[-3.1245581542069156,51.494187034403865],[-3.1245581739808257,51.49418703193494],[-3.124558173980816,51.49418703166064],[-3.1246805818234744,51.49416938942901],[-3.1246805980819934,51.49416938696011],[-3.1246806059915526,51.49416938586281],[-3.1248025017608683,51.49415041262574],[-3.1248025087915705,51.494150411528445],[-3.1248025259289123,51.494150408785224],[-3.124923872703711,51.494130110305115],[-3.1249238907198595,51.49413010701327],[-3.124923896871712,51.49413010591597],[-3.125044681459607,51.494108484114825],[-3.1250446814595976,51.49410848384052],[-3.1251648181645324,51.49408555408224],[-3.125164818603962,51.49408555435652],[-3.125164838817144,51.494085550241714],[-3.125164843211316,51.494085549418756],[-3.125284320159695,51.49406131417419],[-3.1252843205991225,51.49406131444847],[-3.1252843421305134,51.49406130978502],[-3.1252843443275995,51.49406130951066],[-3.1254031500854,51.494035770976446],[-3.1249224656162977,51.493188520826266],[-3.1250169040790645,51.49316706213676],[-3.1250169045184917,51.493167062411054],[-3.125016923413015,51.49316705774769],[-3.1251107474416586,51.4931445736735],[-3.1251107513963237,51.49314457285053],[-3.125110765896763,51.493144569284425],[-3.1252039473638193,51.493121066136325],[-3.125203958788388,51.49312106311885],[-3.1252039658188946,51.49312106147294],[-3.125296474839534,51.49309654693335],[-3.1252964801124046,51.49309654556178],[-3.125296493733985,51.493096541995655],[-3.1253883043782165,51.49307102292408],[-3.1259854567539147,51.49388889608145],[-3.1260993339506604,51.49385574497049],[-3.1260993396629915,51.49385574332456],[-3.126099357239397,51.49385573811247],[-3.1260993567999793,51.49385573811248],[-3.126212266145455,51.49382135861849],[-3.1262122665848753,51.49382135861848],[-3.126212284600628,51.493821352857765],[-3.1262122894341386,51.493821351486154],[-3.12632424322484,51.49378573949713],[-3.126324243224818,51.49378573922282],[-3.12643516280007,51.49374892025336],[-3.1264351693911694,51.49374891805879],[-3.126435185649223,51.493748912572386],[-3.126435185209803,51.49374891257241],[-3.126545058259889,51.493710890465884],[-3.1265450586993246,51.49371089074016],[-3.1266538948851035,51.493671661933384],[-3.126653894885083,51.493671661659086],[-3.12676157468281,51.49363126922327],[-3.126761588743691,51.493631263736894],[-3.1267615953347456,51.493631261268014],[-3.1268681297242726,51.49358970136578],[-3.126868129724306,51.49358970164008],[-3.1269735059580706,51.4935469794866],[-3.1269735235340668,51.49354697208002],[-3.12697352748868,51.493546970708394],[-3.1270776726214593,51.49350311538472],[-3.12789330491083,51.49424382103231],[-3.1280168132154134,51.49418982992075],[-3.128016819806408,51.494189826903195],[-3.1280168387006673,51.49418981867351],[-3.1280168382612046,51.49418981839923],[-3.128138794966576,51.49413450072832],[-3.1281387954060293,51.49413450100259],[-3.1282592343407507,51.494077840043545],[-3.1282592339012707,51.49407783949497],[-3.1283780210446026,51.494019898895324],[-3.1283780214840595,51.4940198991696],[-3.128495195938463,51.493960660280344],[-3.128495206483879,51.493960654793916],[-3.128495218347492,51.49396064875885],[-3.1286107181547873,51.493900142034605],[-3.1286107177153286,51.49390014176032],[-3.128724484873305,51.49383839875293],[-3.128724485312761,51.49383839902721],[-3.128836553212551,51.49377540081356],[-3.1288365523336483,51.493775400265015],[-3.1289467961876247,51.493711217076104],[-3.1289467966270723,51.49371121735037],[-3.128946815520532,51.49371120582898],[-3.1289468190356295,51.49371120390873],[-3.1290552735541133,51.49364581572424],[-3.129055273114663,51.493645815449966],[-3.129161862284112,51.4935792689092],[-3.1291618745866976,51.49357926095396],[-3.1291618842530395,51.493579254918934],[-3.1292665962101096,51.49351155661065],[-3.1292666010432226,51.49351155331885],[-3.1292666159820346,51.49351154371767],[-3.1292666155425803,51.4935115434434],[-3.12936941909222,51.49344271476941],[-3.129369425243457,51.49344271065463],[-3.1293694401821517,51.49344270050486],[-3.1293694397426934,51.49344270023058],[-3.129470302372235,51.493372762318465],[-3.1294703028116775,51.49337276259274],[-3.129569233749326,51.493301707766676],[-3.1295692333098706,51.49330170749239],[-3.129666121836984,51.49322961558372],[-3.129666123594429,51.49322961421214],[-3.1296661420477685,51.49322960049627],[-3.129666141608322,51.493229600221994],[-3.1297610013483665,51.493156462457485],[-3.130887947579347,51.493715918419404],[-3.130996234366042,51.49362938075574],[-3.130996234805503,51.49362938103001],[-3.131102087489884,51.493541675205286],[-3.1311020989129523,51.493541665329836],[-3.1311021072606358,51.49354165847185],[-3.131205469611728,51.493452830852604],[-3.131205477519911,51.49345282372035],[-3.1312054907003444,51.49345281247327],[-3.131205490260874,51.49345281219901],[-3.131306372390705,51.49336285511075],[-3.1313063719512346,51.49336285483649],[-3.1314047035722283,51.493271829733004],[-3.1314047040116857,51.49327183000727],[-3.1314047171917214,51.4932718171144],[-3.131404722463823,51.493271812450985],[-3.1315004943584754,51.49317972948825],[-3.131500496115763,51.49317972756805],[-3.131500513689152,51.493179710834696],[-3.1315005132496814,51.49317971056043],[-3.131593714004126,51.49308658044305],[-3.1303659515864024,51.49261703600908],[-3.130443579467478,51.49253636850802],[-3.1304435803463275,51.49253636878226],[-3.1305189571788485,51.49245485078004],[-3.1305189668440017,51.49245484008187],[-3.130518971237245,51.492454835144265],[-3.1305920566106766,51.49237250834083],[-3.1305920557318214,51.492372508066595],[-3.1306628276889956,51.4922893990744],[-3.130662827249544,51.49228939880014],[-3.1307312515327386,51.49220554739855],[-3.130731262076138,51.49220553395734],[-3.1307312642726917,51.49220553121423],[-3.1307973334232444,51.4921209470082],[-3.1307973448450386,51.492120931372554],[-3.1307973466023182,51.49212092945236],[-3.1308610408615034,51.49203563823104],[-3.130861050086764,51.49203562561277],[-3.1308610527225085,51.492035621772445],[-3.1309223523321044,51.49194964932483],[-3.1309223567249687,51.49194964274142],[-3.1309223646322852,51.49194963176903],[-3.1309812502743077,51.49186300580411],[-3.132311543730522,51.49220687045132],[-3.132242839775174,51.492307944768115],[-3.1321713104306887,51.49240826851472],[-3.1321713042806723,51.4924082767441],[-3.1320969815995157,51.49250780437972],[-3.1333966517758967,51.492894647324675],[-3.133481589503662,51.49278090032191],[-3.133481592139237,51.49278089648154],[-3.1334816057567476,51.492780878376756],[-3.133481605317271,51.49278087810249],[-3.133563332546255,51.49266624671945],[-3.1348838548059073,51.493024523358116],[-3.1349722100176947,51.49289452836024],[-3.134972209138806,51.49289452808603],[-3.1350568822493203,51.49276364193411],[-3.1350568831281995,51.49276364220832],[-3.1351378996400263,51.49263182842621],[-3.1351379075457126,51.49263181471059],[-3.135137915890873,51.492631801269205],[-3.1352152336649732,51.49249912460273],[-3.1338579036294525,51.4921992291832],[-3.133923313364192,51.49208058718843],[-3.1339233181954462,51.49208057813622],[-3.1339233265404123,51.49208056277484],[-3.133985407748085,51.4919612276317],[-3.1339854086269563,51.49196122790592],[-3.134044168357838,51.491841185355604],[-3.134099540758054,51.49172056899161],[-3.134099547784564,51.49172055308175],[-3.1340995517369525,51.491720544029604],[-3.134151542980056,51.49159934288426],[-3.1341515434193203,51.49159934233562],[-3.134151553080436,51.491599319293805],[-3.134200147382088,51.49147757012879],[-3.1342001482608834,51.49147757012871],[-3.1342453412554825,51.49135528474338],[-3.1342453456462636,51.49135527185103],[-3.1342453495981863,51.491355261153096],[-3.1342871079391634,51.49123252732941],[-3.135698057834607,51.4914115792619],[-3.1357411731034484,51.4912729857791],[-3.1357411783710587,51.49127296740066],[-3.135741181443986,51.49127295725137],[-3.135780407707607,51.491133941756736],[-3.1357804120967785,51.49113392474989],[-3.135780414730449,51.49113391514922],[-3.1358157480731146,51.49099449328197],[-3.1358157502673807,51.490994483681355],[-3.135815755095302,51.49099446448007],[-3.1358471845789744,51.490854679035124],[-3.1358471867725313,51.490854666965845],[-3.135847190283488,51.490854652153445],[-3.135874706727977,51.49071454537658],[-3.135874707606751,51.49071454537649],[-3.135898307976346,51.49057413345427],[-3.135898307976192,51.490574132905664],[-3.135898312801481,51.4905741046526],[-3.135898311922706,51.4905741046527],[-3.1359179791441574,51.49043348386739],[-3.135917980462315,51.49043348386724],[-3.1359337193935755,51.49029261417301],[-3.134496614648247,51.490237894126295],[-3.134507101521279,51.49011259310383],[-3.1345071024000446,51.49011259310376],[-3.1345140873133808,51.48998717310252],[-3.134514087747719,51.48998715307884],[-3.1345140881856497,51.48998714731857],[-3.134517563720224,51.48986169419472],[-3.1345175645989847,51.489861694194644],[-3.134517532978096,51.489736198073594],[-3.1345175334174753,51.48973619807355],[-3.1345175329741566,51.48973618243869],[-3.1345175329715995,51.489736172289724],[-3.1345139933676984,51.48961072176932],[-3.1345139938070763,51.48961072176929],[-3.134513992924935,51.48961070832884],[-3.134513992482447,51.48961069598555],[-3.134513992043069,51.48961069598558],[-3.1345069449208904,51.489485277076355],[-3.1345069444815135,51.4894852770764],[-3.1344963920825855,51.48935995259138],[-3.133059343409227,51.48941495765938],[-3.133068575135944,51.48952463788535],[-3.133074737420193,51.489634364179764],[-3.1330778311216694,51.48974415025781],[-3.133077855335161,51.48985397637049],[-3.13307481002083,51.48996376214893],[-3.1330686951553592,51.49007350210695],[-3.133059512031005,51.49018317896331],[-3.1330472689537143,51.490292700278665],[-3.131611917857042,51.4902222958501],[-3.1315987922066824,51.49031607986782],[-3.1315830516827976,51.490409677826634],[-3.1315646931969963,51.490503106732135],[-3.1315437268299586,51.49059631638609],[-3.1315437263908277,51.490596317757614],[-3.1315201595903748,51.490689275242545],[-3.1314939984884003,51.49078195861273],[-3.131465244386696,51.49087436210613],[-3.131433917030876,51.49096642180834],[-3.1314339161525964,51.490966424551374],[-3.131400017284376,51.491058134974324],[-3.1313635525980477,51.49114947910901],[-3.1313245528229374,51.49124038151937],[-3.131283006086561,51.49133087073052],[-3.131238944437628,51.49142087377473],[-3.1311923590783626,51.491510410673406],[-3.131143297434188,51.49159939117677],[-3.1297860212754314,51.49129944859065],[-3.1297860203968466,51.49129944996218],[-3.1298269164916346,51.491225283326585],[-3.129826915612803,51.491225283052344],[-3.129865723517352,51.49115070041615],[-3.1299024476329027,51.49107568971208],[-3.129902448950626,51.49107568669475],[-3.1299024546609804,51.49107567517396],[-3.1299370686415604,51.491000290990534],[-3.1299695764501574,51.490924525923354],[-3.129969577767865,51.49092452290601],[-3.1299695825994065,51.49092451138528],[-3.129999960966176,51.49084841892526],[-3.1299999622838905,51.49084841590793],[-3.1299999671152476,51.49084840329001],[-3.1300282134151196,51.490771991667856],[-3.1300282147327425,51.490771988101926],[-3.130028218685557,51.49077197712983],[-3.1300543245837638,51.490695269114184],[-3.1300543250228974,51.490695267468375],[-3.1300543298540147,51.49069525347897],[-3.130078286576924,51.49061827403274],[-3.1300782878944537,51.49061826991822],[-3.130078291407728,51.490618258123256],[-3.130100092817649,51.49054102836896],[-3.130100095013351,51.490541020414234],[-3.130100096769832,51.490541013556715],[-3.1301197358509514,51.49046355790835],[-3.130119736289912,51.49046355516535],[-3.1301197398029514,51.490463541998906],[-3.130137209978872,51.49038588404744],[-3.1301372117350006,51.490385874995546],[-3.1301372130522593,51.490385869235254],[-3.1301525103830774,51.490308032845675],[-3.1301656339998414,51.49023001088719],[-3.130165633121072,51.49023001088724],[-3.130176569866646,51.49015188866756],[-3.1301765711828136,51.49015187604984],[-3.13017657162181,51.49015187358115],[-3.1301853219456306,51.490073644243445],[-3.130185321945331,51.490073642323374],[-3.1301853237006174,51.49007362805984],[-3.1301918854206985,51.489995315468526],[-3.130191886297305,51.48999530175366],[-3.1301918862970894,51.48999530038217],[-3.1301962581101734,51.48991692785292],[-3.1301962589864307,51.48991691194365],[-3.1301984391500466,51.48983850361487],[-3.1301984272375165,51.489760068538466],[-3.1301984267956313,51.4897600526293],[-3.130196222387541,51.48968164593893],[-3.1301962219469965,51.48968163853296],[-3.1301962215062358,51.48968162975549],[-3.130191825054279,51.48960325803412],[-3.1301918250540637,51.489603256662626],[-3.1301918241731497,51.48960324294786],[-3.130191823733772,51.489603242947894],[-3.130185237449985,51.48952493088181],[-3.13018523788936,51.48952493088178],[-3.1301764617862124,51.48944668642522],[-3.1301764600270285,51.48944667572776],[-3.1301764595869623,51.489446671339046],[-3.1301654993963273,51.489368550447665],[-3.1301654980772975,51.48936854468752],[-3.1301654967575785,51.48936853453862],[-3.1301523516107004,51.48929053008015],[-3.130152351171327,51.48929053008017],[-3.1301370303144886,51.48921269554114],[-3.130137029434972,51.48921269060384],[-3.1301370272365148,51.48921268045502],[-3.130119532878957,51.48913502488621],[-3.1301195333183296,51.489135024886195],[-3.1301195298012927,51.48913501172016],[-3.1301195293614934,51.48913500897723],[-3.130099862833521,51.48905754088082],[-3.130099862394147,51.48905754088083],[-3.1300780333785623,51.488980297833756],[-3.1300780329391893,51.488980297833784],[-3.130054053315873,51.48890332015572],[-3.1300540506785017,51.488903312749876],[-3.1300540484804995,51.488903305344],[-3.130027920018579,51.48882660071385],[-3.1300279156231006,51.48882658919365],[-3.130027914304354,51.48882658507929],[-3.1299996462446416,51.48875017763315],[-3.1299996440470346,51.488750172695944],[-3.12999964009107,51.48875016199862],[-3.129969239476992,51.48867407367826],[-3.1299692399163175,51.48867407340394],[-3.129936711152892,51.48859831298496],[-3.129936704559993,51.48859829735045],[-3.129902068754708,51.488522917494784],[-3.1299020691940354,51.48852291722046],[-3.129902062601454,51.488522903506016],[-3.129902062162,51.48852290295745],[-3.1298653254767976,51.488447911891775],[-3.1298653259161284,51.488447911617456],[-3.1298653193237267,51.4884478990002],[-3.129865318005217,51.48844789625731],[-3.1298264909978535,51.48837331784284],[-3.12982648836104,51.48837331372855],[-3.1298264826475988,51.48837330248273],[-3.12978557631449,51.488299157563326],[-3.129785571480203,51.4882991490604],[-3.1297855679644284,51.48829914330038],[-3.1297425862700097,51.48822544010256],[-3.128394087703745,51.48854028298485],[-3.1284284761160954,51.48859925432988],[-3.128461207799888,51.48865858534415],[-3.128461208239325,51.48865858589273],[-3.128492269125961,51.48871825079438],[-3.128521664483246,51.48877825973346],[-3.12854937672606,51.48883857650491],[-3.128575398816722,51.48889918766971],[-3.128599721079747,51.48896006799416],[-3.1286223373558286,51.489021203490466],[-3.1286432419246917,51.48908257825071],[-3.1272324251823336,51.4892618339076],[-3.1272167506367574,51.489215810810876],[-3.127199788772866,51.489169956450155],[-3.1271997878939213,51.489169954255814],[-3.1271997852570195,51.489169947124196],[-3.127181547944522,51.48912429359118],[-3.127181544428832,51.489124285911004],[-3.1271815439893564,51.48912428481384],[-3.1271620329897525,51.48907883677092],[-3.127162032989699,51.489078836222326],[-3.12716202903454,51.48907882744497],[-3.127141250503843,51.48903359888043],[-3.127141247427613,51.48903359202313],[-3.1271412465486947,51.489033590103084],[-3.12711920708221,51.488988595005125],[-3.127095908441221,51.488943838036036],[-3.1270959036073234,51.488943828984425],[-3.1270713620546964,51.488899341412704],[-3.1270713594180553,51.488899336749746],[-3.127071357220857,51.488899332909675],[-3.12704557012318,51.48885511034588],[-3.1256970344074917,51.489169922185226],[-3.1256790262719365,51.489140638154524],[-3.125679024953702,51.48914063623448],[-3.1256790227566134,51.489140632394374],[-3.125660198300239,51.48911154916432],[-3.1256601987395998,51.489111548890016],[-3.125640556645429,51.489082663442986],[-3.1256405562060783,51.48908266371729],[-3.1256201180064886,51.48905400787079],[-3.1255988731569864,51.48902556818411],[-3.1255768453865844,51.488997375377515],[-3.1255768431895414,51.488997372086004],[-3.1255768409925597,51.48899736989169],[-3.125554023711321,51.488969415735966],[-3.1255304331781795,51.48894171997971],[-3.125530429223568,51.48894171504245],[-3.125530428784177,51.48894171476817],[-3.1255060623637485,51.48891427439365],[-3.1255060623637556,51.48891427466794],[-3.125480938511713,51.48888710997226],[-3.1254809367541276,51.48888710805222],[-3.125480933238964,51.48888710448645],[-3.1254550537137926,51.48886021738915],[-3.1254550528350027,51.48886021656629],[-3.1254550484410695,51.48886021217762],[-3.1254284211527517,51.488833611181256],[-3.127856832423291,51.487867672623814],[-3.1278020859875317,51.48781504943602],[-3.1278020842299172,51.48781504779032],[-3.1278020750024482,51.48781503928749],[-3.1277458771101228,51.487763031379615],[-3.1277458749130993,51.48776302918533],[-3.127745865685643,51.487763020682515],[-3.1277458652462857,51.48776302068253],[-3.1276882229304284,51.48771163381245],[-3.127688222930399,51.48771163353815],[-3.1276882163394415,51.48771162805248],[-3.127688211066613,51.487711623115345],[-3.1276291401480707,51.487660870995164],[-3.1276291401480534,51.487660870720866],[-3.1275686485383054,51.48761076075411],[-3.127568648538273,51.487610760479825],[-3.127568637992805,51.48761075197704],[-3.127568635795819,51.487610750057044],[-3.127506763921304,51.48756131597849],[-3.127506764360665,51.48756131597846],[-3.1275067538152816,51.48756130802427],[-3.127506752497067,51.487561306652836],[-3.1274435082685192,51.48751255422023],[-3.127443508268492,51.487512553945926],[-3.1274434964049758,51.48751254516888],[-3.1274434950867995,51.487512544071755],[-3.1273788855360247,51.48746447876856],[-3.1262841826853824,51.48804824917819],[-3.1262347351312085,51.48801274012005],[-3.12623472502537,51.488012732988615],[-3.1261842824296493,51.48797776128339],[-3.126184281990278,51.4879777612834],[-3.1261328799434915,51.487943351066974],[-3.1260805026282106,51.48790949246382],[-3.1260805026282332,51.48790949273811],[-3.126027197937196,51.487876217015526],[-3.125018129493359,51.48851731967881],[-3.124981984853325,51.488495530452745],[-3.1249819795807676,51.488495527161284],[-3.1249819773838805,51.48849552606414],[-3.124945229983457,51.488474134018226],[-3.124945225589688,51.488474131549616],[-3.1249452225140306,51.488474129629616],[-3.1249078820194587,51.488453141071965],[-3.1249078771863057,51.48845313832908],[-3.1249078749894212,51.48845313695762],[-3.124869945794269,51.48843255408199],[-3.1248699457942823,51.48843255435628],[-3.1248314551396676,51.48841239197367],[-3.124831453382164,51.48841239115081],[-3.1248314472309078,51.48841238785934],[-3.1247923990708846,51.48839264816352],[-3.1247923916015248,51.48839264459778],[-3.124792391162138,51.488392644049185],[-3.124752797359482,51.488373333073945],[-3.124752797359467,51.488373332799654],[-3.1247126535200094,51.48835444835013],[-3.1247126530806315,51.488354448350144],[-3.124672003141252,51.488336010997415],[-3.1246719969900405,51.488336008528826],[-3.124671995671924,51.48833600770596],[-3.1246308308446022,51.48831801388375],[-3.1246308361170603,51.48831801607804],[-3.126261660150284,51.48683650980517],[-3.126178334273517,51.48680142406999],[-3.1261783347128502,51.48680142379569],[-3.126178323289417,51.48680141940725],[-3.1261783171383084,51.48680141666445],[-3.1260940235615746,51.486767244028805],[-3.1260940235615835,51.48676724430311],[-3.1260088049000885,51.48673400177026],[-3.1260088053394437,51.48673400177025],[-3.126008790401151,51.4867339962847],[-3.1260087873256133,51.4867339949133],[-3.125922651045324,51.486701685498296],[-3.1259226448942874,51.48670168330408],[-3.1259226352283567,51.486701679738474],[-3.125835608566256,51.48667031331333],[-3.125835601097157,51.48667031084485],[-3.1258355905525224,51.48667030700496],[-3.1257477025027915,51.486639894538904],[-3.1257476981092154,51.48663989316752],[-3.1257476844891015,51.486639888504804],[-3.1256589600913345,51.486610438224254],[-3.125658960091321,51.486610437949956],[-3.125658943835097,51.486610432738686],[-3.1256589416383167,51.48661043219013],[-3.1255693892363365,51.48658194711028],[-3.1255693887970026,51.486581947384586],[-3.125479070335898,51.48655444725159],[-3.125479065502993,51.4865544458802],[-3.1254790514436106,51.48655444176605],[-3.1253879800996063,51.48652793069234],[-3.125387973509283,51.486527928772404],[-3.1253879616466853,51.4865279252068],[-3.1252961628977647,51.48650241059612],[-3.1252961628977576,51.48650241032182],[-3.1252961444448966,51.48650240565914],[-3.1252961440055316,51.486502405384854],[-3.1252036464048767,51.48647789464101],[-3.1252036464048616,51.48647789436671],[-3.125110456098437,51.48645438940804],[-3.1251104394030347,51.48645438529389],[-3.125016625803489,51.48643190422109],[-3.12501661701645,51.48643190230117],[-3.1250166064719873,51.48643189955839],[-3.1249221809970664,51.4864104448385],[-3.125402705120669,51.485563175856555],[-3.125283919269114,51.48553764203257],[-3.125283905649471,51.48553763928985],[-3.12528389510523,51.48553763709569],[-3.1251644381385746,51.48551340662143],[-3.1251644337451476,51.48551340579862],[-3.125164413535371,51.485513401684535],[-3.1251644135353858,51.48551340195883],[-3.1250442946706314,51.48549047592932],[-3.1250442951099617,51.485490475655006],[-3.124923507308377,51.48546885379405],[-3.124538816277276,51.48633498573066],[-3.1246354349262413,51.48635228129473],[-3.1247315616195745,51.486370628165396],[-3.1248271313394116,51.48639001345299],[-3.124827132218109,51.48639001345296],[-3.1249221616656,51.48641044045008],[-3.124441624563087,51.48725770816285],[-3.1243703654788995,51.48724239064956],[-3.124370350980082,51.48724238763247],[-3.1242986596402047,51.48722784579139],[-3.1242265861281298,51.48721408977019],[-3.1242265738261272,51.48721408757594],[-3.1242265729474177,51.487214087575964],[-3.12415412560757,51.48720111874533],[-3.1240813141023547,51.48718893902461],[-3.1240813114662194,51.48718893875034],[-3.124081299164236,51.48718893655607],[-3.1240081726981024,51.48717755444733],[-3.1240081612748445,51.48717755280165],[-3.1240081577599934,51.4871775522531],[-3.123934709739002,51.48716696638431],[-3.123860976626065,51.48715718251485],[-3.1237869948839765,51.487148205032696],[-3.1237869874149347,51.48714820420985],[-3.123786979506541,51.487148203387015],[-3.123712744737983,51.487140031743124],[-3.1237127447379884,51.487140032017415],[-3.123638307904341,51.48713267197127],[-3.1238510917158155,51.48624372821176],[-3.1237515652661965,51.486234996109665],[-3.1237515652661916,51.486234995835375],[-3.12365180689562,51.486227349316195],[-3.1238147662176403,51.485334310775734],[-3.123689809867364,51.48532611202657],[-3.123689826122843,51.48532611284935],[-3.123827793782886,51.484431434551276],[-3.1236775855536876,51.484423230477425],[-3.1235646501657874,51.48531927585117],[-3.1236898002019404,51.48532611120374],[-3.1235518324135545,51.4862207894765],[-3.1236517893217774,51.48622734794482],[-3.123488828026295,51.48712038639634],[-3.1235636514275487,51.48712612160246],[-3.1236382925269237,51.48713267059986],[-3.1234255057120985,51.48802161411205],[-3.1234751515645147,51.488026522732596],[-3.1235246322333206,51.488031969502686],[-3.1235739644160057,51.48803795579397],[-3.123286941145941,51.48891872796341],[-3.12326227964929,51.488915735446184],[-3.123237533797961,51.488913011460234],[-3.1232375329192195,51.488913011460234],[-3.123237528525501,51.48891301091165],[-3.123212715454565,51.48891055737696],[-3.123187832527362,51.488908374293494],[-3.1231878294517603,51.4889083740192],[-3.123187827254904,51.4889083737449],[-3.123162891606485,51.488906462484096],[-3.123137901478932,51.48890482277157],[-3.123112869613573,51.488903455430226],[-3.1231128643411155,51.48890345515593],[-3.1230878030399047,51.488902361282875],[-3.1230627101055357,51.48890154005523],[-3.1230375969612156,51.488900992570144],[-3.123012468000207,51.4889007188276],[-3.122987340357538,51.4889007188276],[-3.1229622219414397,51.48890099257014],[-3.1229371087971196,51.48890154005523],[-3.122937105282149,51.488901540329536],[-3.122937104403406,51.48890154032952],[-3.1229120158627515,51.48890236100859],[-3.1228869492890827,51.48890345515593],[-3.122861912151267,51.488904822771566],[-3.1228369272961722,51.4889064622098],[-3.122811986375298,51.488908373744906],[-3.122787098175635,51.488910557376954],[-3.1227622851046974,51.48891301091165],[-3.1227622807109805,51.48891301146024],[-3.122762279832238,51.488913011460234],[-3.122737539253369,51.4889157348976],[-3.122712868090543,51.48891872851199],[-3.1226882940237584,51.48892198956056],[-3.122663805189562,51.4889255188662],[-3.1226394239955177,51.488929313960384],[-3.1226151574711793,51.48893337319741],[-3.122591003419307,51.488937696851664],[-3.122566972823808,51.48894228327744],[-3.122566970626945,51.488942283826034],[-3.1225669688694584,51.48894228410032],[-3.1225430700780348,51.48894713192626],[-3.1225193162715197,51.48895223786096],[-3.122519311438412,51.48895223895811],[-3.122495704373926,51.488957603001644],[-3.119470877934815,51.483906176615776],[-3.119636129508067,51.483868628600746],[-3.119802427589516,51.483832881962286],[-3.119969709372331,51.483798950957734],[-3.1201378830548534,51.48376685340999],[-3.1203069332790268,51.48373659205785],[-3.1204768503982683,51.48370816936601],[-3.120647465730734,51.48368161303135],[-3.12064746748803,51.483681612757074],[-3.120818862328346,51.48365691043469],[-3.1209909031417666,51.483634081593976],[-3.1211635104310655,51.48361313637985],[-3.121336731224288,51.48359406875598],[-3.121510452636328,51.48357689161018],[-3.1216846087899732,51.483561611796894],[-3.121859162364232,51.48354823178256],[-3.122034085263985,51.48353675458239],[-3.122209261090978,51.48352718705141],[-3.1223847236946356,51.48351952726859],[-3.1225603729318836,51.48351378044391],[-3.122736128868547,51.483509948770745],[-3.122911963410241,51.483508032797175],[-3.12308786120288,51.48350803279717],[-3.123263694426617,51.483509949045015],[-3.1234394411375686,51.48351378016962],[-3.1234394406982515,51.48351378044391],[-3.123615089935499,51.483519527268584],[-3.123790552539152,51.48352718677711],[-3.123790552978472,51.483527186777096],[-3.1239657560433214,51.48353675595363],[-3.1241037129045393,51.48264207733074],[-3.124303605548892,51.48265519324964],[-3.136505999660156,51.415676193711256]],[[-3.130203952752984,51.49277580769445],[-3.130119654717096,51.49285384027377],[-3.128932964354688,51.49234481366014],[-3.1290032029530668,51.49227979718667],[-3.129003214815485,51.49227978593991],[-3.1290032161335106,51.49227978456836],[-3.129071626954106,51.49221401273454],[-3.1302860476068113,51.49269687741845],[-3.130203952752984,51.49277580769445]],[[-3.1297430510375497,51.491373169050036],[-3.129698042669619,51.49144638462949],[-3.1296980391553086,51.49144639038993],[-3.1296509759555664,51.49151912577472],[-3.1296509763949913,51.49151912604899],[-3.129601902285207,51.491591314580205],[-3.1295508080324006,51.491662971342144],[-3.128240585146455,51.491290306251685],[-3.1282814540515664,51.49123299237885],[-3.128281455369521,51.49123299045871],[-3.1282814623986734,51.49123298058372],[-3.1283207220928877,51.49117523091209],[-3.1283207278039473,51.491175221860054],[-3.128320730000554,51.49117521884269],[-3.128358369505896,51.49111704928356],[-3.1283583699453312,51.49111704955784],[-3.1283943919027726,51.49105845544961],[-3.128428756340616,51.490999501529544],[-3.1297860133684527,51.49129946285451],[-3.1297430510375497,51.491373169050036]],[[-3.127579247494871,51.49326715021018],[-3.127481616031034,51.49331650839057],[-3.12738259966048,51.49336480528863],[-3.127282265173565,51.49341200743424],[-3.1271806020279906,51.49345812031042],[-3.1270776923943706,51.49350310660654],[-3.1262620825866807,51.49276239656504],[-3.1263444211299642,51.49272640327535],[-3.126344420690535,51.492726403001065],[-3.1264257237933393,51.492689525626474],[-3.126425724232768,51.492689525900765],[-3.1265059989231467,51.49265176087738],[-3.126506004635237,51.49265175813426],[-3.1265060156200155,51.492651752922285],[-3.126585205653794,51.49261312686066],[-3.126585206093227,51.49261312713494],[-3.1266633215747173,51.49257363564818],[-3.126663328604931,51.492573632082106],[-3.126663336513925,51.49257362796741],[-3.1267403198815584,51.492533299586306],[-3.127675493170836,51.4932167307509],[-3.127579247494871,51.49326715021018]],[[-3.12731340462681,51.49218170577075],[-3.1273134041873734,51.492181705496456],[-3.127246149571722,51.49222833888051],[-3.1261845467956157,51.49162114369728],[-3.126133126475859,51.491655569004514],[-3.12613312427897,51.49165557037606],[-3.126080757379829,51.49168942487464],[-3.1271077637448337,51.492319381672765],[-3.1270367045909193,51.492363745266466],[-3.1269644021553966,51.492407336440266],[-3.1269644017159552,51.49240733616599],[-3.1268908762104077,51.49245014147643],[-3.1268161948610826,51.492492122517554],[-3.12681619442166,51.49249212224328],[-3.1267403352600858,51.49253329108263],[-3.1258051864220358,51.491849854576586],[-3.1257474260857787,51.49188011248],[-3.1256888400024216,51.491909730440284],[-3.125629434763677,51.491938705438834],[-3.125569240688331,51.49196702321031],[-3.125508251186671,51.49199468677094],[-3.1254464992141573,51.49202168103248],[-3.1246309418360183,51.4912809597349],[-3.124672110651466,51.49126296339095],[-3.124712760933244,51.49124452514855],[-3.1247127613726535,51.49124452542285],[-3.1247529067412025,51.49122563952212],[-3.124792509408824,51.49120632324481],[-3.1248315588298508,51.49118658207758],[-3.1248315623449145,51.491186580157446],[-3.1248315662993775,51.491186578237304],[-3.1248700655491186,51.491166410534866],[-3.124907987385478,51.491145830561585],[-3.124907988703614,51.49114582973868],[-3.1249079944156053,51.49114582672133],[-3.124945342792775,51.49112483255767],[-3.124982090029459,51.491103439016605],[-3.1249820904688534,51.49110343929089],[-3.1250182493070264,51.49108164006396],[-3.125053778884163,51.49105945874193],[-3.125088696775503,51.491036885176065],[-3.125088696336098,51.491036884901774],[-3.125122971785142,51.49101393856822],[-3.125156592928826,51.49099062714807],[-3.1251565968832127,51.49099062440503],[-3.1251565995194692,51.490990622484915],[-3.125189570751749,51.49096694323566],[-3.12522186746782,51.490942913987595],[-3.125253494940499,51.490918530626715],[-3.125284435155806,51.490893807143024],[-3.1253146802054625,51.490868749846044],[-3.1253442195450347,51.4908433672397],[-3.125373044387645,51.490817666730706],[-3.125373050538815,51.490817661244655],[-3.12540115253708,51.49079165051401],[-3.125428523343665,51.49076533724268],[-3.125455154171978,51.490738729934584],[-3.125481032281244,51.49071184175668],[-3.1255061598691185,51.490684670240775],[-3.1255305233162183,51.49065722965105],[-3.1255541160331055,51.49062952739412],[-3.1255541177905375,51.49062952547401],[-3.125554120866038,51.49062952163379],[-3.1255769309910337,51.49060157224808],[-3.1255769327484564,51.490601569779386],[-3.1255769353846032,51.49060156676207],[-3.125598965554946,51.49057336723072],[-3.125620199076147,51.490544937578186],[-3.125620202151615,51.49054493346368],[-3.1256202030303166,51.49054493209219],[-3.1256406390249687,51.490516275610474],[-3.125640642100401,51.49051627094735],[-3.1256406429791066,51.490516269850154],[-3.125660278372858,51.49048738955701],[-3.125679099547143,51.49045830520247],[-3.1256971082606615,51.49042901459254],[-3.125714295727882,51.49039953199119],[-3.1257306557993485,51.4903698669993],[-3.127096056505354,51.49065502671313],[-3.1270715193235197,51.49069952064332],[-3.127045742553273,51.49074373976579],[-3.127018725752017,51.49078768325685],[-3.1269904882471407,51.49083132066805],[-3.1269610423369913,51.4908746325231],[-3.1269303774747286,51.49091763473064],[-3.1268985208964417,51.490960288064414],[-3.1268654800684454,51.49100258374571],[-3.1268312606996815,51.49104451436739],[-3.1267958689385518,51.49108607169929],[-3.1267593298257905,51.49112722776134],[-3.126721632375313,51.4911679929761],[-3.1267216319359403,51.49116799325042],[-3.126682813490828,51.49120832784263],[-3.1266428617472455,51.491248245252066],[-3.1266018140488723,51.491287707623556],[-3.126559652819634,51.49132673223714],[-3.1265164246304087,51.49136527547712],[-3.126472114541522,51.49140335188048],[-3.1264267480348225,51.491440937855764],[-3.126380330381621,51.49147802956144],[-3.12633288926123,51.4915146050518],[-3.1262844338996314,51.49155065719361],[-3.1273793324808774,51.49213435593519],[-3.12731340462681,51.49218170577075]],[[-3.123815380506196,51.489058758786676],[-3.1237945527656477,51.489049988847334],[-3.123794548371877,51.4890499869273],[-3.1237734745944814,51.48904144328049],[-3.1237521692794648,51.489033132234816],[-3.1237306262753664,51.48902505132152],[-3.123708868868879,51.48901720959209],[-3.123708867550753,51.48901720904351],[-3.1237088640357547,51.48901720794635],[-3.1236868913478784,51.48900960430351],[-3.1236647051358837,51.48900223984432],[-3.1236647033783873,51.48900223929574],[-3.1236647003027675,51.489002238472885],[-3.123642315505127,51.48899511813446],[-3.123642311550758,51.48899511676299],[-3.123619730803459,51.488988241368126],[-3.1236197281672218,51.488988240819545],[-3.123619725970349,51.48898823999668],[-3.123596952788099,51.4889816106424],[-3.1235740021093226,51.48897523144298],[-3.123550871736844,51.48896910212404],[-3.1235508682218605,51.48896910130116],[-3.1235508669037415,51.48896910102687],[-3.123527573094064,51.488963225702655],[-3.123504114528748,51.4889576040988],[-3.1234805021917866,51.48895223895811],[-3.123480497358682,51.48895223786096],[-3.1234567435521603,51.48894713165196],[-3.1239135628134775,51.48809476237694],[-3.123961079753454,51.48810497625226],[-3.124008303231091,51.48811570633693],[-3.1240552161124966,51.488126948517014],[-3.1241018096116857,51.48813870059863],[-3.1241480670340196,51.48815095819354],[-3.1241939857445966,51.48816372130217],[-3.124193986183962,51.48816372130217],[-3.1242395275196375,51.48817697867917],[-3.124284701147669,51.48819073306783],[-3.124329470601614,51.48820497349713],[-3.1243738451092695,51.48821970298469],[-3.1244178000669813,51.48823491302804],[-3.1244613284458262,51.48825060170766],[-3.1245043977332987,51.48826675695541],[-3.1245044008089033,51.48826675832685],[-3.1245470224294927,51.48828338453183],[-3.124589170021745,51.48830047154586],[-3.1246308277689874,51.488318012512295],[-3.123815380506196,51.489058758786676]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231464567122256,51.48980029768287],[-3.122999906539917,51.48979949951172]],[[-3.1229999305416225,51.489799503960434],[-3.1229999270265814,51.48979950341185],[-3.1229999388898397,51.489799505606214],[-3.123011993717521,51.489801878818696],[-3.122999906539917,51.48979949951172],[-3.1229999169208416,51.48979950149177],[-3.122999906539917,51.48979949951172],[-3.1229999208752637,51.48979950231466],[-3.12299992570844,51.489799503137554],[-3.122999924390299,51.48979950286326],[-3.1229999199964986,51.48979950204036],[-3.1230850147300266,51.48981423419881],[-3.1229999305416225,51.489799503960434]],[[-3.122999920435883,51.48979950286326],[-3.122999906539917,51.48979949951172],[-3.123075026306517,51.48981610627907],[-3.122999920435883,51.48979950286326]],[[-3.1229999191177393,51.48979950615481],[-3.122999906539917,51.48979949951172],[-3.123063133628365,51.48983203742523],[-3.1229999191177393,51.48979950615481]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230603334095375,51.48979520133038],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999147239456,51.48979949490866],[-3.1229999173602216,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999913845187,51.489799495731546],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999917799598,51.489799493811475],[-3.1230596413531124,51.48976983686138],[-3.122999906539917,51.48979949951172]],[[-3.1229999186783646,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.1230555586620694,51.489789864346236],[-3.1229999186783646,51.48979949737732]],[[-3.122999917360222,51.489799493811475],[-3.123004784371165,51.489796989210255],[-3.122999917799598,51.489799493811475],[-3.1229999151633288,51.48979949490866],[-3.122999914723944,51.48979949518295],[-3.122999906539917,51.48979949951172],[-3.122999919117746,51.48979949271428],[-3.1230399110185996,51.489778169722406],[-3.122999917360222,51.489799493811475]],[[-3.122999919557122,51.489799499023114],[-3.122999906539917,51.48979949951172],[-3.1230332201591526,51.489798227379914],[-3.122999919557122,51.489799499023114]],[[-3.1229999191177393,51.48979950258895],[-3.122999920435883,51.48979950286326],[-3.12302874683752,51.48980623107792],[-3.1229999191177393,51.48979950258895]],[[-3.122999912966419,51.48979949381147],[-3.1229999125270416,51.489799494085766],[-3.122999906539917,51.48979949951172],[-3.122999914723948,51.48979949161709],[-3.123025929954184,51.489773998774126],[-3.122999912966419,51.48979949381147]],[[-3.122999925269059,51.489799489148446],[-3.1229999147239456,51.48979949490866],[-3.1230189420661705,51.4897886105487],[-3.122999925269059,51.489799489148446]],[[-3.122999919117746,51.48979949271428],[-3.1229999173602216,51.48979949353717],[-3.122999925269059,51.489799489148446],[-3.1230188080555146,51.48978905984636],[-3.122999919117746,51.48979949271428]],[[-3.122999934496037,51.489799480370955],[-3.1229999287841097,51.48979948421108],[-3.1230172820887616,51.489787239066594],[-3.122999934496037,51.489799480370955]],[[-3.1229999322991424,51.48979948201672],[-3.122999934496037,51.489799480370955],[-3.123015093978063,51.4897891525591],[-3.1229999322991424,51.48979948201672]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230147284123317,51.48978379116025],[-3.122999906539917,51.48979949951172]],[[-3.122999912527045,51.48979948750264],[-3.1230111949183534,51.489775709289304],[-3.1229999107695283,51.4897994913428],[-3.122999910330144,51.489799492165695],[-3.1230142020302316,51.489767319931254],[-3.122999912527045,51.48979948750264]],[[-3.122999914723948,51.48979949161709],[-3.122999906539917,51.48979949951172],[-3.1230141914906273,51.489784947319954],[-3.122999914723948,51.48979949161709]],[[-3.122999906539917,51.48979949951172],[-3.12299991736022,51.4897994913428],[-3.123013656327324,51.48978908672812],[-3.122999906539917,51.48979949951172]],[[-3.122999915163316,51.489799501766065],[-3.122999906539917,51.48979949951172],[-3.122999916481459,51.48979950204036],[-3.1229999191177393,51.48979950258895],[-3.123013353598675,51.48980280648923],[-3.122999915163316,51.489799501766065]],[[-3.122999916042079,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.1230112089826116,51.489792319586634],[-3.122999916042079,51.48979949353718]],[[-3.122999919117742,51.48979949765162],[-3.1229999169208424,51.489799497925915],[-3.123011113638571,51.4897979481503],[-3.122999919117742,51.48979949765162]],[[-3.12299991736022,51.4897994913428],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230100428683536,51.48979154442491],[-3.12299991736022,51.4897994913428]],[[-3.1229999147239456,51.48979949463437],[-3.1229999164814606,51.48979949353718],[-3.123009739257355,51.489793674337065],[-3.1229999147239456,51.48979949463437]],[[-3.122999909451387,51.489799493811475],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123009342493486,51.489774964300246],[-3.122999909451387,51.489799493811475]],[[-3.1229999388898397,51.489799505606214],[-3.1229999305416225,51.489799503960434],[-3.1230089518901454,51.489801172231246],[-3.1229999388898397,51.489799505606214]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230082168055695,51.48979033011456],[-3.122999906539917,51.48979949951172]],[[-3.1229999191177433,51.48979949106851],[-3.1229999160420836,51.48979949298858],[-3.122999906539917,51.48979949951172],[-3.122999913845183,51.48979949463437],[-3.1229999160420836,51.48979949298858],[-3.122999915602706,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123007379348247,51.48979403750576],[-3.1229999191177433,51.48979949106851]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230057523243318,51.48979149176027],[-3.122999906539917,51.48979949951172]],[[-3.1229999090120057,51.48979949216569],[-3.123002218831768,51.48979171202047],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908133246,51.48979949381147],[-3.1229999081332434,51.48979949298858],[-3.1230003114839806,51.48979758086785],[-3.122999908572625,51.48979949216568],[-3.1230049891200995,51.48977827012162],[-3.1229999090120057,51.48979949216569]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123003926261847,51.48979241339651],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230027522390125,51.48979386579637],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999907254485,51.48979949353718],[-3.1230006032321023,51.48978954644983],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123000507886813,51.489799582683524],[-3.122999906539917,51.48979949951172]],[[-3.1229999257084455,51.48979948640547],[-3.1229999287841097,51.48979948421108],[-3.1229999322991424,51.48979948201672],[-3.1229999257084455,51.48979948640547]],[[-3.1229999235115447,51.48979948805124],[-3.1229999226327743,51.48979948859984],[-3.122999924390304,51.48979948722835],[-3.1229999235115447,51.48979948805124]],[[-3.1229999208752695,51.489799489971325],[-3.122999915602706,51.48979949353717],[-3.1229999191177433,51.48979949106851],[-3.1229999217540234,51.489799489148425],[-3.1229999226327743,51.48979948859984],[-3.1229999208752695,51.489799489971325]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999169208424,51.489799497925915],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907673,51.48979949326287],[-3.1229999098907624,51.48979949298858],[-3.122999910330144,51.489799492165695],[-3.1229999098907673,51.48979949326287]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907624,51.48979949298858],[-3.122999909451387,51.489799493811475],[-3.1229999098907637,51.48979949271428],[-3.1229999098907624,51.48979949298858]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12295844910747,51.48981796053995],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229918622075026,51.4898047915733],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999905057586,51.48979950780058],[-3.1229949725762536,51.48982289788369],[-3.122999906539917,51.48979949951172],[-3.122999905057586,51.48979950780058]],[[-3.122992426804906,51.48984048330472],[-3.122999905057586,51.48979950780058],[-3.122999906539917,51.48979949951172],[-3.122992426804906,51.48984048330472]],[[-3.1229602132032297,51.489835554190634],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229602132032297,51.489835554190634]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998958306058,51.48979949682873],[-3.1229998927549514,51.489799496005844],[-3.1229998905580514,51.489799495457255],[-3.1229998874823868,51.48979949463437],[-3.1229998852854894,51.489799494085766],[-3.1229998822098275,51.48979949326288],[-3.1229998734222297,51.48979949106851],[-3.122999874740373,51.4897994913428],[-3.1229998694678134,51.489799489971325],[-3.122999862877108,51.48979948832553],[-3.122928545397545,51.489780129007244],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229965600584517,51.48979845779364],[-3.122999896269991,51.489799496280135],[-3.1229577219631346,51.48978579022631],[-3.122999906539917,51.48979949951172],[-3.1229965600584517,51.48979845779364]],[[-3.122999906539917,51.48979949951172],[-3.1229867724272853,51.48981460123763],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229869174239875,51.48981006739124],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924419134795,51.48980908703206],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122962453614494,51.489821687407485],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122960609101872,51.48981573709347],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986585367784,51.489800444797346],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229599482803065,51.4898088259193],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229599482803065,51.4898088259193]],[[-3.122999906539917,51.48979949951172],[-3.122816220712529,51.48975432883289],[-3.122999868149681,51.489799489697035],[-3.122999878694792,51.48979949243998],[-3.1229998800129355,51.48979949271428],[-3.122999883967356,51.489799493811475],[-3.1229998870430027,51.48979949463437],[-3.1229998892399093,51.48979949518296],[-3.1229998923155637,51.489799496005844],[-3.122999894512467,51.48979949655443],[-3.122999897588123,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229946922546548,51.48979726213524],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229598230826365,51.48977959496686],[-3.1229998971487465,51.48979949463437],[-3.122999897588128,51.48979949490867],[-3.122999906539917,51.48979949951172],[-3.1229598230826365,51.48977959496686]],[[-3.122999894512468,51.489799499845994],[-3.1229370293515255,51.489801213359215],[-3.122999906539917,51.48979949951172],[-3.122999894512468,51.489799499845994]],[[-3.122999897588128,51.48979949490867],[-3.122999898466888,51.48979949518296],[-3.122999898906269,51.489799495457255],[-3.122999897588128,51.48979949490867]],[[-3.1229998949518483,51.48979949518296],[-3.122999895830607,51.489799495457255],[-3.122999906539917,51.48979949951172],[-3.1229998949518483,51.48979949518296]],[[-3.1229998971487465,51.48979949463437],[-3.122999896269986,51.489799494085766],[-3.122999898466888,51.48979949518296],[-3.1229998971487465,51.48979949463437]],[[-3.1229998923155713,51.48979949353718],[-3.1229946175600687,51.48979731397728],[-3.1229998984668796,51.489799496005844],[-3.1229998923155713,51.48979949353718]],[[-3.122999895830607,51.489799495457255],[-3.122999892754947,51.489799494360064],[-3.1229998883611505,51.489799492714276],[-3.1229911565649506,51.489796152057195],[-3.1229998918761854,51.48979949381147],[-3.12292401628936,51.489769317060215],[-3.1229998923155713,51.48979949353718],[-3.122999898466892,51.489799496280135],[-3.122999895830607,51.489799495457255]],[[-3.122999894512467,51.48979949655443],[-3.1229998936337084,51.489799496280135],[-3.1229998958306058,51.48979949682873],[-3.1229998967093673,51.48979949710302],[-3.122999894512467,51.48979949655443]],[[-3.122999889679291,51.48979949079421],[-3.122957393315392,51.48977683197761],[-3.122999896269986,51.489799494085766],[-3.122999889679291,51.48979949079421]],[[-3.1229998949518483,51.489799500120284],[-3.122986492107007,51.489800305728274],[-3.122999891436809,51.48979950012029],[-3.122969523693721,51.489800992014885],[-3.122999894512468,51.489799499845994],[-3.122999896269987,51.489799499845994],[-3.1229998949518483,51.489799500120284]],[[-3.1229427180373666,51.489774033598735],[-3.1229998826492067,51.489799488599836],[-3.1229998953912244,51.489799494360064],[-3.1229427180373666,51.489774033598735]],[[-3.1229998826492067,51.489799488599836],[-3.1229805648761126,51.48979056491103],[-3.12299988660363,51.48979949024562],[-3.1229998826492067,51.489799488599836]],[[-3.122999883967356,51.489799493811475],[-3.1229998830885903,51.48979949353718],[-3.1229998852854894,51.489799494085766],[-3.122999883967356,51.489799493811475]],[[-3.1229745440531396,51.489792941140244],[-3.122999862877108,51.48979948832553],[-3.122999868149681,51.489799489697035],[-3.1229745440531396,51.489792941140244]],[[-3.121452686373269,51.49131559243724],[-3.121410545521726,51.49129850787088],[-3.121368877066869,51.491280961655065],[-3.1213277034181552,51.491262963390966],[-3.1212870443486365,51.49124452158259],[-3.1212469152373408,51.491225643362405],[-3.121207304221415,51.49120632297052],[-3.1211682486490004,51.49118657878595],[-3.121168247330861,51.49118657796302],[-3.121129751596187,51.491166411906406],[-3.1210918227297033,51.491145828367166],[-3.121054478746342,51.49112483667224],[-3.1210544765494324,51.49112483557501],[-3.1210177156918992,51.491103434627725],[-3.120981571792691,51.49108164417854],[-3.121990753457291,51.49044057597751],[-3.1220088291244155,51.490451473380766],[-3.1220272066627555,51.49046217219308],[-3.1220458772846733,51.49047266692833],[-3.1220458794815755,51.49047266802554],[-3.122045880799718,51.49047266884844],[-3.122064841429472,51.49048295868357],[-3.1220840911882575,51.49049304224697],[-3.122084090748872,51.49049304224695],[-3.122103619530827,51.49050291460103],[-3.1221234211845093,51.49051257272836],[-3.122123420745122,51.490512572728356],[-3.122143493073502,51.4905220155316],[-3.1221638185011527,51.49053123450732],[-3.12216381937992,51.49053123478161],[-3.122163822455605,51.49053123615311],[-3.1221844066943514,51.49054023404416],[-3.1222052391988413,51.49054900646156],[-3.122226309423702,51.490557548467834],[-3.121452686373269,51.49131559243724]],[[-3.1219555544619317,51.48918079258485],[-3.121938419929355,51.48919226323649],[-3.1219216061269153,51.48920392068448],[-3.1219216048087763,51.48920392150736],[-3.1219216026118612,51.48920392315311],[-3.121905120084774,51.489215759717375],[-3.121888967954327,51.489227776495234],[-3.1218731510537894,51.489239969921],[-3.121857683443522,51.4892523290231],[-3.121857683004135,51.48925232929739],[-3.121857680367835,51.48925233149174],[-3.121842557654108,51.48926485956182],[-3.1218277908216407,51.48927754782263],[-3.1218133776736705,51.48929039764578],[-3.1218133745979673,51.48929040038872],[-3.1217993256798695,51.48930340299694],[-3.1217993230435583,51.48930340546558],[-3.1217856396736496,51.48931655921324],[-3.1145005760571114,51.486418652253626],[-3.114596385658473,51.48632656543335],[-3.1146947393688773,51.48623555148772],[-3.1147956486051895,51.48614559834212],[-3.114899048325804,51.48605676605653],[-3.1150049086441967,51.48596907903473],[-3.1151132168114173,51.48588254796685],[-3.1152238998811392,51.48579723126648],[-3.1153369802582844,51.48571311109917],[-3.115452381483746,51.485630245604],[-3.1155700684034913,51.48554865808716],[-3.1156900339847753,51.48546835457588],[-3.115812222863284,51.48538937263851],[-3.121973010164003,51.48916950900371],[-3.1219555544619317,51.48918079258485]],[[-3.1197153700644016,51.49155064978736],[-3.119666923929624,51.4915146047775],[-3.1196194744612016,51.491478022703795],[-3.119619474021803,51.49147802270378],[-3.119573073064684,51.49144094389052],[-3.119527699528096,51.49140335188051],[-3.1194833938328297,51.49136527986603],[-3.119440160371244,51.49132673168855],[-3.120626769242604,51.490817666182124],[-3.120655588812775,51.490843362027974],[-3.120655588373388,51.490843362027974],[-3.1206555892521415,51.49084336257658],[-3.120655594085193,51.49084336723972],[-3.1206555945245937,51.49084336696543],[-3.120685127712951,51.490868744634305],[-3.1206851277129313,51.49086874490861],[-3.1207153723232053,51.49089380193129],[-3.1207153723232057,51.49089380220558],[-3.1207153762775652,51.49089380522292],[-3.1207153780350483,51.49089380686873],[-3.120715378474435,51.49089380686875],[-3.1207463186897066,51.49091853090102],[-3.12074631912912,51.490918530626736],[-3.1207779400111932,51.49094290850156],[-3.1207779395717856,51.49094290877584],[-3.120777943965552,51.4909429117932],[-3.1207779461624288,51.490942913439014],[-3.120810243757253,51.49096694323569],[-3.1197153700644016,51.49155064978736]],[[-3.118142571125239,51.491731124190444],[-3.1180893116411696,51.491677909296946],[-3.1180893107624583,51.491677908474024],[-3.1180375546424175,51.49162412856891],[-3.11798730100422,51.4915697836541],[-3.1179385762050194,51.491514901985205],[-3.117891387270695,51.4914594895989],[-3.117845763632683,51.491403582979785],[-3.117801710558746,51.491347188164404],[-3.117759236831034,51.49129031694963],[-3.119069436594917,51.49091763445639],[-3.1191012861436906,51.490960279012434],[-3.1191012857042977,51.49096027901242],[-3.1191012887796794,51.49096028312696],[-3.1191012922944092,51.490960287790124],[-3.119101292733831,51.49096028751583],[-3.1191343361978507,51.49100258703738],[-3.1191343366372486,51.4910025870374],[-3.119168557763373,51.49104452012779],[-3.119168558202784,51.4910445198535],[-3.1192039394194913,51.49108606539032],[-3.119203938980099,51.4910860653903],[-3.1192039420555497,51.491086068956264],[-3.1192039464490597,51.49108607389373],[-3.119203946449078,51.49108607361944],[-3.119240484243863,51.49112722721279],[-3.1192404838044583,51.49112722748707],[-3.119240485561882,51.491127229132914],[-3.1192404912734744,51.491127235441894],[-3.119278174225299,51.491167984747015],[-3.1192781737858946,51.49116798474701],[-3.1192781816943067,51.49116799297614],[-3.1192781816943334,51.49116799270185],[-3.119316997942642,51.4912083253739],[-3.119316997503242,51.49120832537388],[-3.1193170040936087,51.49120833195722],[-3.119317005411685,51.49120833332873],[-3.11931700585108,51.49120833332874],[-3.119356943535171,51.49124823674863],[-3.118142571125239,51.491731124190444]],[[-3.1150185519347433,51.49186298742551],[-3.114962096941936,51.4917757323604],[-3.114908069951257,51.4916878429868],[-3.1148565232242027,51.49159940352063],[-3.114807444448996,51.49151039256918],[-3.1147608731456264,51.491420882278234],[-3.114716809300704,51.49133087374795],[-3.114675268713137,51.49124039934923],[-3.116062744988755,51.49100029044197],[-3.1160973589694128,51.491075674076804],[-3.1160973585300145,51.49107567407678],[-3.1161340822061954,51.49115068450653],[-3.1161340844024177,51.491150689443984],[-3.116134089673609,51.49115069959326],[-3.1161340901130457,51.49115069931899],[-3.1161729050454667,51.49122529813909],[-3.116172905484858,51.49122529813911],[-3.116213792354967,51.49129944749348],[-3.1162137919155257,51.491299447767766],[-3.116213798065538,51.49129945791709],[-3.1162138007012152,51.49129946258027],[-3.116256754685591,51.4913731553348],[-3.1162567542461566,51.49137315560907],[-3.1162567603962747,51.4913731652098],[-3.1162567630319202,51.49137317014729],[-3.1162567634713523,51.49137316987301],[-3.1163017714001255,51.491446383806654],[-3.1163017705213347,51.49144638380661],[-3.1163488275708,51.491519110413584],[-3.1150185519347433,51.49186298742551]]],[[[-3.135996080090974,51.49366826085528],[-3.1346963637190908,51.4932814495082],[-3.134597229114068,51.49340837982029],[-3.1358859338184195,51.49380929558869],[-3.135996080090974,51.49366826085528]]],[[[-3.135933440380829,51.48930495899101],[-3.1359176252552445,51.48916411990224],[-3.1359176239344086,51.48916411030202],[-3.1359176221719522,51.48916409274723],[-3.135917621732579,51.48916409274728],[-3.135897875262651,51.48902347626555],[-3.135897875702024,51.4890234762655],[-3.1358978739412042,51.48902346447095],[-3.135897871300173,51.48902344746486],[-3.1358978708608,51.48902344746491],[-3.1358741922000712,51.4888830404221],[-3.1344437418365634,51.488984939008105],[-3.134464788750039,51.48910976627815],[-3.134482339281743,51.48923477409691],[-3.134496395164699,51.48935997837495],[-3.135933440380829,51.48930495899101]]],[[[-3.132499719300091,51.487698910843086],[-3.132439528115322,51.4875957077756],[-3.1310910667002667,51.48791058169932],[-3.1311426564971323,51.48799904206189],[-3.132499719300091,51.487698910843086]]],[[[-3.130555431559462,51.481110426945264],[-3.130311410540802,51.48102943184502],[-3.1303114105407146,51.481029431296434],[-3.1303113679268946,51.481029417858544],[-3.130311360019134,51.48102941511606],[-3.130065113053107,51.48095109101842],[-3.1300651126138903,51.480951091567036],[-3.129816707762464,51.480875460397975],[-3.1291971085436914,51.481686753571395],[-3.1289694492320907,51.48162048291661],[-3.128969446156877,51.48162048209388],[-3.1289694026643957,51.481620469478436],[-3.128969402225132,51.48162046975275],[-3.1287399256208337,51.48155668935967],[-3.1287399260601,51.481556689085345],[-3.1287398970652887,51.48155668140645],[-3.128739878614044,51.48155667647002],[-3.1285086549775336,51.48149540607413],[-3.12850865541677,51.481495405525514],[-3.1282757005322255,51.481436650053276],[-3.128275700971493,51.481436649778956],[-3.128275679445249,51.48143664484259],[-3.128275659676165,51.48143663963184],[-3.128275659236899,51.48143663990616],[-3.128041146600562,51.481380442953],[-3.1280411470398337,51.48138044267868],[-3.1280411158488146,51.4813804355483],[-3.1280410982764066,51.48138043143461],[-3.1280410982764346,51.4813804317089],[-3.1278050581669987,51.481326800121714],[-3.128285475006454,51.4804795185912],[-3.1280241723494777,51.480423351052046],[-3.1280241723494164,51.48042335050345],[-3.1280241345696482,51.48042334282476],[-3.128024118754856,51.480423339533864],[-3.1277612861143007,51.480370027453475],[-3.1273285144427954,51.48122726070847],[-3.127567474734965,51.4812757308748],[-3.1278050089644474,51.481326789426156],[-3.1273245791520514,51.48217406941379],[-3.127537084025414,51.482222353536486],[-3.127748171062363,51.48227293703575],[-3.1272206631522446,51.483109231672906],[-3.1274070306362622,51.48315623709263],[-3.127592060548807,51.48320526740133],[-3.1277757041445646,51.483256309166784],[-3.1279578621544375,51.483309335244236],[-3.1281385420655403,51.48336434728606],[-3.12813854206552,51.48336434701175],[-3.1283176147318583,51.4834213058061],[-3.1284951043337674,51.48348021903945],[-3.1286709019320766,51.48354105024274],[-3.1288449974374055,51.48360379640677],[-3.1290172797111198,51.48366841749743],[-3.1291877470093232,51.48373491242553],[-3.12935632861034,51.483803253773125],[-3.129522990257044,51.48387342810961],[-3.130338256952738,51.483132643144266],[-3.130150782828679,51.48305370607438],[-3.1301507678910343,51.483053700040756],[-3.1301507441664227,51.48305368989323],[-3.130150744166476,51.48305369016752],[-3.1299611311051168,51.48297682331606],[-3.129961128469061,51.48297682221902],[-3.129961092443078,51.48297680768342],[-3.129961092003842,51.48297680823206],[-3.1297693606390484,51.482902018993514],[-3.130521396584345,51.48213560733866],[-3.130305985666253,51.482054810365064],[-3.1303059852269937,51.48205481063938],[-3.1300884329516965,51.48197640307257],[-3.1300884333909558,51.48197640279826],[-3.1300884065919288,51.48197639347378],[-3.130088388579415,51.48197638689175],[-3.130088388140148,51.48197638716607],[-3.1298686843799044,51.48190036350881],[-3.130555431559462,51.481110426945264]]],[[[-3.124566884181321,51.377450850228385],[-3.121432925064509,51.37745085022832],[-3.1214454305165575,51.378349648049436],[-3.1214456181140076,51.37834964805194],[-3.1183382312304793,51.37838350929214],[-3.118338231230758,51.37838350654913],[-3.1183379669279643,51.378383512298946],[-3.118337591732371,51.37838351639852],[-3.118337591731953,51.37838352051305],[-3.115231163186857,51.378451242507005],[-3.115293663437633,51.37934922288266],[-3.1183751008681875,51.379282045759616],[-3.1184501222325474,51.381079091686445],[-3.121483133913565,51.38104604094955],[-3.1245168598720787,51.381046040947204],[-3.1245418727872476,51.37924844573061],[-3.121458570708031,51.37924844573892],[-3.1214460700134707,51.37834964805792],[-3.1245543787291967,51.3783496480495],[-3.124566884181321,51.377450850228385]]],[[[-3.1229999090120057,51.48979949216569],[-3.1229999085726248,51.48979949326288],[-3.1229999085726248,51.48979949353718],[-3.1229999090120057,51.48979949216569]]],[[[-3.1229999085726248,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999085726248,51.48979949353718]]],[[[-3.116839290983609,51.34244236994229],[-3.116764405790065,51.34064530667811],[-3.1126090974183955,51.34073589527748],[-3.112609096980628,51.34073589445452],[-3.1126090098273513,51.34073589746412],[-3.1126083568365934,51.34073591166991],[-3.112608357710885,51.34073591880188],[-3.108457037685233,51.34087174077069],[-3.1084570372481473,51.34087173802759],[-3.1084567775377603,51.34087174951605],[-3.108456183665931,51.34087176891777],[-3.108456184539753,51.340871775501164],[-3.1043085117042395,51.341052839707835],[-3.104532988331071,51.34284500835394],[-3.1086314266530644,51.342666093346736],[-3.112733806772836,51.34253187246631],[-3.116839290983609,51.34244236994229]]],[[[-3.1166303945380345,51.49344271476944],[-3.1165294941225734,51.49337275024851],[-3.1164305807597583,51.49330170776674],[-3.115335595206418,51.493885373199774],[-3.1154509914507447,51.49396825519001],[-3.1154509910113237,51.49396825518998],[-3.115450994526281,51.49396825765887],[-3.115451013858447,51.49396827164923],[-3.1154510142979155,51.49396827137496],[-3.115568710656234,51.49404988340444],[-3.1166303945380345,51.49344271476944]]],[[[-3.1053551045490937,51.49369858663],[-3.1052487965060394,51.49350571066602],[-3.105147918302578,51.49331174454928],[-3.10377457455407,51.49358180453987],[-3.1038832286352624,51.493790734314004],[-3.1038832299536305,51.49379073403992],[-3.1039976872169173,51.49399840644899],[-3.1053551045490937,51.49369858663]]],[[[-3.105118491674686,51.49560852278276],[-3.104958820414999,51.49541279648961],[-3.104804678802269,51.495215401189114],[-3.1048046792417034,51.49521540118918],[-3.1046560505317524,51.49501631468237],[-3.104513013723915,51.49481564123504],[-3.1043756328781997,51.494613472766915],[-3.1042439355993174,51.49440985181807],[-3.1041179099676053,51.49420475865622],[-3.1027690567992057,51.49451930382468],[-3.102904051398208,51.494739003768935],[-3.1029040500796845,51.4947390043173],[-3.1030451678863242,51.49495719980179],[-3.103045167446786,51.494957200076016],[-3.103045181499427,51.494957220924924],[-3.103045196429974,51.49495724396833],[-3.1030451968695174,51.49495724369412],[-3.1031923659383964,51.49517382551483],[-3.1018716978917698,51.49553199490301],[-3.1020351425058488,51.49576131775506],[-3.102035141626853,51.4957613180292],[-3.1020351622679483,51.495761345188214],[-3.102035175003199,51.495761363568334],[-3.1020351758822,51.495761363294186],[-3.102204974641157,51.49598882483896],[-3.1022049733227117,51.49598882511303],[-3.102381155725856,51.496214463181275],[-3.1023811425497856,51.496214447269764],[-3.099803390064194,51.4970160604949],[-3.100008680949127,51.497267742109315],[-3.102563632692078,51.496438160330115],[-3.1023811794425815,51.49621449226083],[-3.103670019358573,51.49581366134566],[-3.103841073558715,51.49602334852719],[-3.105118491674686,51.49560852278276]]],[[[-3.1018717290703486,51.49553204099038],[-3.101714703520345,51.495300943821185],[-3.1015641716073774,51.49506818209251],[-3.100224274273443,51.49539734454334],[-3.100384195868432,51.4956446365172],[-3.1003841949894224,51.495644636791326],[-3.1003842121150744,51.49564466175559],[-3.1003842279225653,51.495644686445296],[-3.1003842288015653,51.49564468617116],[-3.100551008705418,51.49589014939899],[-3.0992302992586573,51.496248288728246],[-3.09941418064866,51.496506306884385],[-3.0994141617657123,51.49650628137105],[-3.098103639352412,51.49687874118067],[-3.0983053375098093,51.4971489655201],[-3.0983052962300563,51.497148912572264],[-3.097005359869073,51.49753557962024],[-3.097225548025879,51.49781761668412],[-3.0972255471468038,51.49781761695823],[-3.097225565591479,51.497817639180255],[-3.097225591939711,51.497817673198774],[-3.097225593258235,51.49781767292476],[-3.0974536364459055,51.49809726811669],[-3.098731170072801,51.49768251208467],[-3.0985144968173572,51.49741686639775],[-3.098305338388112,51.49714896661748],[-3.0996052505561806,51.49676228239375],[-3.0994141999710467,51.49650633239781],[-3.1007246975090967,51.496133855452705],[-3.100551043397343,51.49589019768177],[-3.1018717290703486,51.49553204099038]]],[[[-3.0992303339475904,51.496248340577246],[-3.099053679181225,51.49598833248055],[-3.097723142921537,51.49633201278251],[-3.097909605555997,51.496606468031565],[-3.0992303339475904,51.496248340577246]]],[[[-2.998405762765002,51.35730142591618],[-2.9962263216373186,51.354975691600806],[-2.9924854473504925,51.35637747054931],[-2.992485446476628,51.35637746972543],[-2.992485380688125,51.35637749543655],[-2.9924847925656923,51.35637771586889],[-2.992484799119267,51.356377722185165],[-2.9887841013262832,51.357819750570414],[-2.988014974494483,51.357060791788754],[-2.98433315974879,51.35855167581666],[-2.9835430462736587,51.357801199123145],[-2.979882335344959,51.35934069710121],[-2.979882334033142,51.359340696276696],[-2.979882256378175,51.359340730195306],[-2.9798815812091686,51.35934101409612],[-2.9798815895105335,51.359341021512456],[-2.976264845830476,51.36091984626152],[-2.9762648418968256,51.36091984323925],[-2.9762645580051785,51.360919971805686],[-2.9762641012574886,51.36092017119986],[-2.976264106936698,51.36092017641873],[-2.97269093871103,51.36253850128812],[-2.973542611401222,51.3632621264409],[-2.9770955047048404,51.361652971160126],[-2.9787583741638395,51.363118537997146],[-2.9823142886827188,51.36156623158994],[-2.983125232642125,51.36230794926993],[-2.9867028682743717,51.36080334508645],[-2.987493080248173,51.361553790202734],[-2.9910914198877556,51.36009666874917],[-2.994729198231848,51.35867913104544],[-2.998405762765002,51.35730142591618]]],[[[-2.9802135271109926,51.38873555324984],[-2.9783139617715815,51.387386848767946],[-2.975476758407945,51.38897882847854],[-2.974508365622331,51.38831491917324],[-2.9716974369079288,51.389948221426906],[-2.9697239789689367,51.388641665330084],[-2.9669226984415054,51.39032704526628],[-2.965917947539045,51.3896846081519],[-2.9631461252790285,51.39141130212156],[-2.963146123089714,51.39141130129567],[-2.963146024218887,51.39141136507296],[-2.9631455593422418,51.39141165464941],[-2.963145567654343,51.39141165987249],[-2.960422124385307,51.39316829183022],[-2.962502116481393,51.39440858838457],[-2.9651906392759906,51.39267443035267],[-2.966213209215873,51.39330579729623],[-2.968931721857032,51.391612242981836],[-2.9699365510777302,51.39225464553304],[-2.972683623841987,51.390601815726626],[-2.973670423084305,51.39125506802562],[-2.976444620025213,51.38964306996296],[-2.9774130627572735,51.39030695460576],[-2.9802135271109926,51.38873555324984]]],[[[-2.967465428384443,51.367299668218855],[-2.9656825044864217,51.36589041164084],[-2.9622480433266047,51.36762363888164],[-2.964069958836051,51.36901325138252],[-2.967465428384443,51.367299668218855]]],[[[-2.966803722646043,51.3710972712724],[-2.9658926725466834,51.370402488055305],[-2.962583688018022,51.37213273967278],[-2.9635139614137733,51.372817489095745],[-2.9635142516314605,51.37281733725329],[-2.960273094335082,51.374572928963175],[-2.9621716056775536,51.37592192494399],[-2.965375259306948,51.37418660930063],[-2.963514642831559,51.372817132882346],[-2.966803722646043,51.3710972712724]]],[[[-2.9621236327986042,51.390779899974525],[-2.9611011710916304,51.390148489939236],[-2.9583427338906736,51.391927642791146],[-2.956262960218215,51.39068726036491],[-2.953519957056345,51.39251911841239],[-2.9535201377210423,51.39251899331804],[-2.9524631514142343,51.391910215412764],[-2.94975480407597,51.39378316191036],[-2.949754797511534,51.393783158609025],[-2.9497544734889662,51.39378339073738],[-2.9497542422546883,51.39378355058739],[-2.9497542470673643,51.39378355333752],[-2.9470988894770027,51.39568532962768],[-2.947098885537042,51.395685327975954],[-2.947098714482491,51.39568545472061],[-2.9470983389892096,51.395685723794955],[-2.947098346866001,51.395685727921304],[-2.9444962224928863,51.39761615115744],[-2.944496212426727,51.39761614620466],[-2.9444957475429328,51.39761650373373],[-2.944495688614825,51.39761654725783],[-2.9444956899271024,51.397616548082745],[-2.941947072343388,51.399575435138864],[-2.943069423105674,51.400136699435805],[-2.9456021956159195,51.3981899554861],[-2.946708726347308,51.398763351285154],[-2.949279027039614,51.39685646919574],[-2.9503694016555437,51.397441820403685],[-2.9529760109801075,51.39557486363031],[-2.955633647680802,51.393736897818386],[-2.9566907146754535,51.394345640348995],[-2.9593821670194025,51.39254812727497],[-2.9593821705191465,51.39254812947427],[-2.9621236327986042,51.390779899974525]],[[-2.9519024644020457,51.394977489621965],[-2.9519024578372894,51.39497748632075],[-2.951902148765031,51.394977707779084],[-2.951901909179794,51.39497787338143],[-2.9519019139927285,51.39497787613148],[-2.9492793836591473,51.396856204200986],[-2.9492795591093746,51.396856074168085],[-2.948189212347269,51.3962707078249],[-2.950828290772898,51.394380558450656],[-2.953519584738422,51.39251937599132],[-2.9545766021807567,51.3931281418406],[-2.9519024644020457,51.394977489621965]]],[[[-2.9433897383646865,51.39704272611517],[-2.942283291532038,51.39646929552284],[-2.9397024523562947,51.39845287468824],[-2.940824748613966,51.39901416031405],[-2.9433897383646865,51.39704272611517]]],[[[-2.930725549792471,51.39396183110638],[-2.928481485335142,51.39283905003917],[-2.925801337111175,51.39497334505306],[-2.925801571649367,51.39497315151672],[-2.923526594964637,51.39387494717171],[-2.9208755026353224,51.39606332664732],[-2.9231808235862693,51.39713657196473],[-2.9258010365654705,51.39497359361288],[-2.928076121799425,51.396071744820944],[-2.930725549792471,51.39396183110638]]]]} \ No newline at end of file diff --git a/clippy.toml b/clippy.toml index a742505..7bada54 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,4 +1,3 @@ allow-unwrap-in-tests = true allow-expect-in-tests = true allow-panic-in-tests = true - diff --git a/crates/kernels/vulkan-and-cpu/kernel.spv b/crates/kernels/vulkan-and-cpu/kernel.spv index 67baf51..cc0ddc7 100644 Binary files a/crates/kernels/vulkan-and-cpu/kernel.spv and b/crates/kernels/vulkan-and-cpu/kernel.spv differ diff --git a/crates/kernels/vulkan-and-cpu/src/elevations.rs b/crates/kernels/vulkan-and-cpu/src/elevations.rs index 485fad2..34094b2 100644 --- a/crates/kernels/vulkan-and-cpu/src/elevations.rs +++ b/crates/kernels/vulkan-and-cpu/src/elevations.rs @@ -69,7 +69,7 @@ impl Elevations { Direction::Backward => self.chocolate_box_id -= 1, } - let elevation = elevations[self.chocolate_box_id]; + let elevation = self.current_elevation(elevations); if Self::is_valid(elevation) { self.last_valid_elevation = elevation; @@ -79,6 +79,27 @@ impl Elevations { } } + #[inline] + #[must_use] + /// Return the current elevation. + pub fn current_elevation(&self, elevations: &[f32]) -> f32 { + elevations[self.chocolate_box_id] + } + + #[inline] + #[must_use] + /// Are we moving forward through the elevations? + pub const fn is_forward(&self) -> bool { + matches!(self.direction, crate::elevations::Direction::Forward) + } + + #[inline] + #[must_use] + /// Are we moving backward through the elevations? + pub const fn is_backward(&self) -> bool { + matches!(self.direction, crate::elevations::Direction::Backward) + } + /// Is the elevation valid. fn is_valid(elevation: f32) -> bool { let is_nodata = elevation <= NODATA; diff --git a/crates/kernels/vulkan-and-cpu/src/kernel.rs b/crates/kernels/vulkan-and-cpu/src/kernel.rs index 880f171..8a8b87e 100644 --- a/crates/kernels/vulkan-and-cpu/src/kernel.rs +++ b/crates/kernels/vulkan-and-cpu/src/kernel.rs @@ -31,7 +31,7 @@ const TAN_ONE_RADIAN: f32 = 0.017_453_3; /// Diameter of the Earth in meters. So that some points are not visible simply /// by virtue of the earth's spherical shape. -const EARTH_DIAMETER: f32 = 12_742_000.0; +pub const EARTH_DIAMETER: f32 = 12_742_000.0; #[expect( clippy::exhaustive_structs, @@ -136,7 +136,7 @@ impl Kernel { return; } - for index in 0..=buffers.constants.max_los_as_points { + for index in 0..buffers.constants.max_los_as_points { runner.kernel(buffers, index); } @@ -161,18 +161,26 @@ impl Kernel { // Save the longest line of sight for the given TVS ID. if buffers.constants.is_longest_lines() { - #[expect( - clippy::as_conversions, - reason = "This needs to run on the GPU where fallibility isn't possible" - )] - let current_longest = buffers.longest_lines[runner.rotated_tvs_id as usize]; + let current_longest = buffers.longest_lines[runner.original_tvs_id]; if runner.longest_line > current_longest.abs() { - if matches!( - runner.elevations.direction, - crate::elevations::Direction::Backward - ) { + if runner.elevations.is_backward() { runner.longest_line = -runner.longest_line; } + + buffers.longest_lines[runner.original_tvs_id] = runner.longest_line; + } + + #[expect( + clippy::float_cmp, + reason = "They are both from the same bits in memory" + )] + // For consistency with the CPU kernel we always want the first ever occurrence + // of a longest line to take precedence. However in this kernel we interleave the + // forward lines (0-179°) angles with the backward lines (180-359°). This means we + // have to have this awkward check here where a forward lines takes precedence over + // an equally long backward line. + let is_same_length_line = runner.longest_line == current_longest.abs(); + if runner.elevations.is_forward() && is_same_length_line { buffers.longest_lines[runner.original_tvs_id] = runner.longest_line; } } @@ -265,10 +273,26 @@ impl Kernel { buffers.constants.cosine, ) .anti_rotate_chocolate_id_to_dem_id(); + angle_to_debug.to_radians().cos() == buffers.constants.cosine && angle_to_debug.to_radians().sin() == buffers.constants.sine && original_pov_id == pov_id } + + #[cfg(not(target_arch = "spirv"))] + #[expect(dead_code, clippy::float_cmp, reason = "Used for debugging")] + /// Get the angle from the trigonometry values. + fn debug_angle(buffers: &Buffers) -> f32 { + for sector in 0..180u16 { + let angle = f32::from(sector) + ANGLE_SHIFT; + if angle.to_radians().cos() == buffers.constants.cosine + && angle.to_radians().sin() == buffers.constants.sine + { + return angle; + } + } + f32::NAN + } } #[expect( @@ -435,9 +459,9 @@ mod test { let angle = 0.0; let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); - expect_tvs(&tvs_id, &surfaces, 0.2617995); + expect_tvs(&tvs_id, &surfaces, 0.17453301); expect_ring_data(&tvs_id, angle, &rings, vec![4]); - expect_tvs(&tvs_id, &lines, 5.0); + expect_tvs(&tvs_id, &lines, 4.0); } #[gtest] @@ -457,9 +481,9 @@ mod test { let angle = 90.0; let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); - expect_tvs(&tvs_id, &surfaces, 0.2617995); + expect_tvs(&tvs_id, &surfaces, 0.17453301); expect_ring_data(&tvs_id, angle, &rings, vec![4]); - expect_tvs(&tvs_id, &lines, 5.0); + expect_tvs(&tvs_id, &lines, 4.0); } #[gtest] @@ -473,6 +497,17 @@ mod test { expect_tvs(&tvs_id, &lines, 1.0); } + #[gtest] + fn invocation_at_id6_46_degrees_forward() { + let tvs_id = TvsId::Forward(6); + let angle = 46.0; + let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); + + expect_tvs(&tvs_id, &surfaces, 0.17453301); + expect_ring_data(&tvs_id, angle, &rings, vec![4]); + expect_tvs(&tvs_id, &lines, 4.0); + } + #[gtest] fn invocation_at_id5_0_degrees_backward() { let tvs_id = TvsId::Backward(5); @@ -490,11 +525,11 @@ mod test { let angle = 0.0; let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); - expect_tvs(&tvs_id, &surfaces, 0.2617995); + expect_tvs(&tvs_id, &surfaces, 0.17453301); // TODO: I think this result clearly shows that we should be closing the ring sector for // the _previous_ DEM ID? expect_ring_data(&tvs_id, angle, &rings, vec![4]); - expect_tvs(&tvs_id, &lines, -5.0); + expect_tvs(&tvs_id, &lines, -4.0); } #[gtest] @@ -503,9 +538,9 @@ mod test { let angle = 45.0; let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); - expect_tvs(&tvs_id, &surfaces, 0.2617995); + expect_tvs(&tvs_id, &surfaces, 0.17453301); expect_ring_data(&tvs_id, angle, &rings, vec![4]); - expect_tvs(&tvs_id, &lines, -5.0); + expect_tvs(&tvs_id, &lines, -4.0); } #[gtest] @@ -525,9 +560,9 @@ mod test { let angle = 135.0; let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); - expect_tvs(&tvs_id, &surfaces, 0.2617995); + expect_tvs(&tvs_id, &surfaces, 0.17453301); expect_ring_data(&tvs_id, angle, &rings, vec![4]); - expect_tvs(&tvs_id, &lines, -5.0); + expect_tvs(&tvs_id, &lines, -4.0); } #[gtest] diff --git a/crates/total-viewsheds/Cargo.toml b/crates/total-viewsheds/Cargo.toml index c8de402..6b9f308 100644 --- a/crates/total-viewsheds/Cargo.toml +++ b/crates/total-viewsheds/Cargo.toml @@ -2,7 +2,8 @@ name = "total-viewsheds" version = "0.1.0" edition = "2021" -rust-version = "1.88" +rust-version = "1.89" + [dependencies] bytemuck = "1.22.0" @@ -12,9 +13,11 @@ fjall = "2.11.2" geo = "0.30.0" geojson = "0.24.2" image = { version = "0.25.6", default-features = false, features = ["png"] } +itertools = "0.14.0" kernel = { path = "../kernels/vulkan-and-cpu" } pollster = "0.4" proj4rs = { version = "0.1.8", features = ["aeqd"] } +rayon = "1.11.0" serde = "1.0.219" serde_json = "1.0.143" tracing = { version = "0.1.41" } @@ -28,4 +31,5 @@ googletest = "0.14.2" [lints] workspace = true - +[features] +ring_data = [] \ No newline at end of file diff --git a/crates/total-viewsheds/src/config.rs b/crates/total-viewsheds/src/config.rs index 3aabcad..b84b54f 100644 --- a/crates/total-viewsheds/src/config.rs +++ b/crates/total-viewsheds/src/config.rs @@ -104,6 +104,14 @@ pub struct Compute { default_value = "0.13" )] pub refraction: f32, + + /// Thread count used for CPU parallelism + #[arg(long, value_name = "thread count", default_value = "8")] + pub thread_count: usize, + + /// Controls line of sight and total viewshed image generation + #[arg(long, value_name = "render image", default_value = "false")] + pub disable_image_render: bool, } #[derive(clap::Parser, Debug)] @@ -142,6 +150,8 @@ pub enum Backend { Vulkan, /// Vulkan shader but run on the CPU. VulkanCPU, + /// Optimised cache-efficient CPU kernel + CPU, /// TBC Cuda, } diff --git a/crates/total-viewsheds/src/cpu.rs b/crates/total-viewsheds/src/cpu.rs new file mode 100644 index 0000000..fe1fb80 --- /dev/null +++ b/crates/total-viewsheds/src/cpu.rs @@ -0,0 +1,15 @@ +/// los contains all the traits necessary for implementing a line of sight algorithm +mod los; + +mod rotation; + +/// kernel is the exported kernel module +pub mod kernel; + +/// `unrolled_los` holds a fully implemented los trait for unrolled vectorization +mod unrolled_los; + +/// `vector_intrinsics` holds all the vector-related LOS intrinsics +mod vector_intrinsics; + +pub use kernel::kernel; diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs new file mode 100644 index 0000000..3e2a432 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -0,0 +1,199 @@ +use crate::cpu::los::LineOfSight as _; +use crate::cpu::unrolled_los::UnrolledVectorLos; +use crate::cpu::vector_intrinsics::DEFAULT_VECTOR_LENGTH; +use itertools::izip; + +/// The data output by a single angle. +pub struct OutputData { + /// The visibile surface area. + pub surfaces: Vec, + /// The longest lines of sight. + pub longest: Vec, + /// The raw ring data used to reconstruct viewsheds. + pub visibility: Vec>, +} + +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + reason = "so long as max_los < 2^24, the following as conversions are entirely safe" +)] +#[expect( + clippy::integer_division, + reason = "i32 is constructed from (i32, i32) converting back should succeed" +)] +/// `dem_to_pov` turns the `dem_id` to the `pov_id` so that the result can be stored in a heatmap +fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { + let dem_x = (dem_id / width as i32) - max_los as i32; + let dem_y = (dem_id % width as i32) - max_los as i32; + + let radius = (max_los - 1) as f32 / 2.0; + let circ_x = dem_x as f32 - radius; + let circ_y = dem_y as f32 - radius; + + let dist = circ_x.hypot(circ_y); + if dist < radius { + dem_x * (max_los as i32) + dem_y + } else { + -1 + } +} + +/// `DEFAULT_UNROLL` is the default loop unrolling constant, which is based +/// off of the default vector length. 8-way unrolling for both the 4 and 8 wide +/// vectors, and 10-way unrolling for the 16-wide vector as it is optimal for Turins +const DEFAULT_UNROLL: usize = const { + match DEFAULT_VECTOR_LENGTH { + 4 | 8 | 16 => 10, + #[expect( + clippy::unreachable, + reason = "no one should be setting any other constants" + )] + _ => unreachable!(), + } +}; + +/// `kernel` will calculate the longest line of sight heatmap for a given angle and elevation map +/// assuming that the maximum line of sight is `max_los` +pub fn kernel( + elevation_map: &[i16], + max_los: usize, + angle: f32, + refraction: f32, + scale: f32, + observer_height: f32, +) -> OutputData { + let mut surfaces = vec![0.0f32; max_los * max_los]; + let mut longest = vec![0.0f32; max_los * max_los]; + + let mut sector_data: Vec> = vec![ + vec![]; + if cfg!(any(test, feature = "ring_data")) { + max_los * max_los + } else { + 0 + } + ]; + + let (indexes, rotated_elevations) = + super::rotation::generate_rotation(elevation_map, angle, max_los); + + assert_eq!( + rotated_elevations.len(), + 2 * max_los * max_los, + "elevations should be 2 * max_los wide, and max_los tall" + ); + + let width = 2 * max_los; + + let mut vs = + UnrolledVectorLos::::new(max_los, refraction, scale); + for (line, line_indexes) in izip!( + rotated_elevations.chunks_exact(width), + indexes.chunks_exact(width), + ) { + for (pov, (&pov_height, &result_dem_id)) in + izip!(line.iter().take(max_los), line_indexes.iter().take(max_los)).enumerate() + { + let result_tvs_id = dem_to_pov(result_dem_id, 3 * max_los, max_los); + + // if the line of sight is not within our computable points, do not consider it + #[expect( + clippy::as_conversions, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + reason = "max_los^2 < 2^31" + )] + if result_tvs_id < 0i32 || result_tvs_id >= (max_los * max_los) as i32 { + continue; + } + + let neighbor = pov + 1; + + #[expect( + clippy::indexing_slicing, + reason = "if slicing is out of bounds, it should panic" + )] + let (point_surface, point_longest, point_visibility) = vs.line_of_sight( + f32::from(pov_height) + observer_height, + &line[neighbor..neighbor + max_los], + ); + + #[expect( + clippy::as_conversions, + clippy::cast_sign_loss, + clippy::indexing_slicing, + reason = "max_los^2 < 2^31" + )] + { + // safety: result_tvs_id is guaranteed to be within [0..max_los^2) + unsafe { + *surfaces.get_unchecked_mut(result_tvs_id as usize) = point_surface; + }; + // safety: result_tvs_id is guaranteed to be within [0..max_los^2) + unsafe { + *longest.get_unchecked_mut(result_tvs_id as usize) = point_longest; + }; + + if cfg!(any(test, feature = "ring_data")) { + // TODO@ryan: + // This rotation of the `result_tvs_id` is just a hack to get the ring data + // into the right format for rendering. Ideally we would just fill up the ring data + // in the order that each point is processed. Though without skipping any points. The + // sector data is just a snapshot of the already rotated TVS grid. The reason for this + // is mainly fidelity. We don't want to have to both rotate the DEM and then rotate the + // sector data. Just the DEM rotation already has all the data we need to reconstruct + // viewsheds. + // + // In short: either keep this hack or better, just fill the sector data as you process + // it, but make sure that any skipped points are also filled with empty bitmaps. + { + let sector = angle.rem_euclid(f32::from(crate::run::compute::SECTOR_STEPS)); + #[expect( + clippy::cast_possible_truncation, + reason = "max_los is always within u32" + )] + let rotated_tvs_id = kernel::rotation::Rotator::rotate_index( + result_tvs_id as u32, + max_los as u32, + sector, + ); + + if rotated_tvs_id != kernel::rotation::NOOP_DEM_ID { + sector_data[rotated_tvs_id] = point_visibility; + } + } + } + } + } + } + + OutputData { + surfaces, + longest, + visibility: sector_data, + } +} + +#[cfg(test)] +mod test { + use crate::cpu::kernel as cpu_kernel; + + #[test] + fn test_kernel() { + let dem = &kernel::tests::dems::bigger_dem(); + + let forward = cpu_kernel(&dem, 4, 0.0, 0.13, 1.0, 0.8); + let backward = cpu_kernel(&dem, 4, 180.0, 0.13, 1.0, 0.8); + + let res = forward + .surfaces + .iter() + .zip(backward.surfaces.iter()) + .map(|(l, r)| l + r) + .collect::>(); + println!("{:#?}", res); + } +} diff --git a/crates/total-viewsheds/src/cpu/los.rs b/crates/total-viewsheds/src/cpu/los.rs new file mode 100644 index 0000000..fbda642 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/los.rs @@ -0,0 +1,44 @@ +/// `LineOfSight` abstracts the implementation of line of sight calculations to +/// any "carry through" that can be materialized into a (f32, f32). +pub trait LineOfSight, LOS: Angle + PrefixMax + Accumulate> { + /// `line_of_sight` calculates a line of sight for the given `pov_height` + /// and outputs a triple of the surface area, longest line of sight in meters + /// and a vector of bools of which + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec); +} + +/// `Angle` abstracts the angle calculation between a pov and all the elevation data within +/// its band of sight +pub trait Angle { + /// `calculate_angles` calculates the angle from the `pov_height` to a given elevation + fn calculate_angles( + pov_height: f32, + elevations: &[i16], + distances: &[f32], + adjustments: &[f32], + angles_out: &mut [f32], + ); +} + +/// `Accumulate` accumulates the surface area visible and longest line of sight +/// in a pair of (f32, f32). `Accumulate` doesn't care about the implementation details +/// of accumulation so long as the `Output` type can be materialized to (f32, f32) +pub trait Accumulate> { + /// `accumulate` accumulates the surface area using the distances by comparing + /// whether a point at a distance is visible (angle > prefix) + /// If `output_sector` is true, it should output a bitmap of which distances are visible + /// at their respective locations + fn accumulate( + init: Output, + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + ) -> Output; +} + +/// `PrefixMax` calculates the prefix maximum of the given angles +pub trait PrefixMax { + /// `prefix_max` calculates the prefix max of the + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]); +} diff --git a/crates/total-viewsheds/src/cpu/rotation.rs b/crates/total-viewsheds/src/cpu/rotation.rs new file mode 100644 index 0000000..4ae64c5 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/rotation.rs @@ -0,0 +1,150 @@ +//! Rotate the DEM, but just the so-called "chocolate bar" region. + +use kernel::rotation::ANGLE_SHIFT; + +/// `generate_rotation` generates a rotation "map" for a given elevation list +/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" +)] +pub fn generate_rotation(elevs: &[i16], angle: f32, max_los: usize) -> (Vec, Vec) { + let width = (max_los * 3) as isize; + #[expect(clippy::integer_division, reason = "we don't need precision here")] + { + assert_eq!( + elevs.len() as isize % width, + 0, + "Elevations array must be square {}%{width} != 0", + elevs.len(), + ); + let elevations_div_width = elevs.len() as isize / width; + assert_eq!( + elevations_div_width, + width, + "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", + elevs.len() as isize + ); + }; + + let (sin, cos) = ( + f32::sin((angle + ANGLE_SHIFT).to_radians()), + f32::cos((angle + ANGLE_SHIFT).to_radians()), + ); + + let (x_center, y_center) = ((width - 1) as f32 / 2.0, (width - 1) as f32 / 2.0); + + let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); + + for x in (max_los as isize)..(max_los as isize) * 2 { + let x_sin = (x as f32 - x_center) * sin; + let x_cos = (x as f32 - x_center) * cos; + for y in (max_los as isize)..width { + let y_sin = (y as f32 - y_center) * sin; + let y_cos = (y as f32 - y_center) * cos; + + let x_rot = (x_cos - y_sin + y_center).round() as isize; + let y_rot = (y_cos + x_sin + x_center).round() as isize; + + let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); + + rotation.push(new_idx as i32); + } + } + + debug_assert_eq!( + rotation.len() as isize, + max_los as isize * (2 * max_los as isize), + "the rotation should be 2 * max_los wide, max_los tall" + ); + + // map the indexes to their elevations + let elevations = rotation + .iter() + .map(|&idx| { + if idx < 0i32 { + i16::MIN + } else { + #[expect( + clippy::as_conversions, + reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" + )] + #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] + // safety: idx is clamped so a get will always be in-bounds + *unsafe { elevs.get_unchecked(idx as usize) } + } + }) + .collect::>(); + + (rotation, fill_in_elevations(&elevations, max_los)) +} + +/// `fill_in_elevations` will fill in "blank" elevations from NASA data with the last seen elevation +/// in the line of sight +fn fill_in_elevations(elevs: &[i16], max_los: usize) -> Vec { + elevs + .chunks_exact(2 * max_los) + .flat_map(|line| { + line.iter() + .scan(0, |last_seen, &elevation| match elevation { + i16::MIN => Some(*last_seen), + _ => { + *last_seen = elevation; + Some(elevation) + } + }) + }) + .collect::>() +} + +#[cfg(test)] +mod test { + use super::*; + use googletest::prelude::*; + + #[rustfmt::skip] + const DEM: [i16; 36] = [ + 0, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10,11, + 12,13,14,15,16,17, + 18,19,20,21,22,23, + 24,25,26,27,28,29, + 30,31,32,33,34,35, + ]; + + #[gtest] + fn rotate_by_0() { + #[rustfmt::skip] + let expected = [ + 14, 15, 16, 17, + 20, 21, 22, 23 + ]; + let (rotations, _) = generate_rotation(&DEM, 0.0, 2); + expect_eq!(&rotations, &expected); + } + + #[gtest] + fn rotate_by_45() { + #[rustfmt::skip] + let expected = [ + 14, 15, 9, 4, + 20, 21, 16, 11 + ]; + let (rotations, _) = generate_rotation(&DEM, 45.0, 2); + expect_eq!(&rotations, &expected); + } + + #[gtest] + fn rotate_by_90() { + #[rustfmt::skip] + let expected = [ + 20, 14, 8, 2, + 21, 15, 9, 3 + ]; + let (rotations, _) = generate_rotation(&DEM, 90.0, 2); + expect_eq!(&rotations, &expected); + } +} diff --git a/crates/total-viewsheds/src/cpu/unrolled_los.rs b/crates/total-viewsheds/src/cpu/unrolled_los.rs new file mode 100644 index 0000000..49812ae --- /dev/null +++ b/crates/total-viewsheds/src/cpu/unrolled_los.rs @@ -0,0 +1,262 @@ +use crate::cpu::los::{Accumulate, Angle, LineOfSight, PrefixMax}; +use crate::cpu::vector_intrinsics::{VectorGreater, VectorLos, VectorMax as _}; +use itertools::izip; +use std::simd::prelude::SimdFloat as _; +use std::simd::{LaneCount, Simd, SupportedLaneCount}; + +/// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters +const EARTH_DIAMETER: f32 = 12_742_000.0; + +/// `generate_distances` generates the distance from +#[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "max_los is < 2^24" +)] +fn generate_distances(max_los: usize, refraction: f32, scale: f32) -> (Vec, Vec) { + let adjusted_refraction = refraction - 1.0; + + (1..=max_los) + .map(|step| { + let distance = (step as f32) * scale; + let adjustment = (distance * distance * adjusted_refraction) / EARTH_DIAMETER; + + (distance, adjustment) + }) + .unzip() +} + +/// Unroll holds an unrolled heatmap and unrolled longest line of sight calculation +/// Since in Line of Sight-land max/addition are commutative, then Unroll will be materialized +/// into (f32, f32) +pub struct UnrollVector +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, +{ + /// `heatmap` contains the summation of visible surface areas which will be reduced to a single + /// surface area at the end + pub heatmap: [f32; UNROLL * VECTOR_WIDTH], + /// `longest` contains many long lines of sight which will be reduced to a single + /// line of sight at the end + pub longest: [f32; UNROLL * VECTOR_WIDTH], +} + +/// `UnrolledLOS` implements an Unrolled `LineOfSight` calculation +pub struct UnrolledVectorLos { + /// `angles` holds a buffer for line of sight angles to be put into + /// which is exactly `max_los+1` long + angles: Vec, + /// `distances` holds `max_los` distances + distances: Vec, + /// `adjustments` holds `max_los` earth curvature adjustments + adjustments: Vec, +} + +impl From> + for (f32, f32) +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, +{ + fn from(val: UnrollVector) -> Self { + let (heatmap, _) = val.heatmap.as_chunks::(); + let (longest, _) = val.longest.as_chunks::(); + + let heat = heatmap + .iter() + .fold(Simd::splat(0.0f32), |acc, &heat| { + acc + Simd::from_array(heat) + }) + .reduce_sum(); + + let long = longest + .iter() + .fold(Simd::splat(0.0f32), |acc, &long| { + VectorLos::::max(acc, Simd::from_array(long)) + }) + .reduce_max(); + + (heat, long) + } +} + +impl UnrolledVectorLos { + /// `new` initializes a new `UnrolledLOS`, and precalculates all the distances + /// and earth curvature adjustments + pub fn new(max_los: usize, refraction: f32, scale: f32) -> Self { + assert_eq!( + max_los % VECTOR_WIDTH, + 0, + "the maximum line of sight must be divisible by {VECTOR_WIDTH} for vectorization" + ); + + let (distances, adjustments) = generate_distances(max_los, refraction, scale); + + Self { + distances, + adjustments, + angles: vec![-2000.0f32; max_los + 1], + } + } +} + +impl + LineOfSight, VectorLos> + for UnrolledVectorLos +where + [(); UNROLL * VECTOR_WIDTH + 1]:, + LaneCount: SupportedLaneCount, + VectorLos: PrefixMax + Angle, +{ + #[expect( + clippy::indexing_slicing, + reason = "all indexing and slices are guaranteed by construction of a UnrolledLOS" + )] + #[inline] + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) { + let mut prefix_max = [0.0f32; UNROLL * VECTOR_WIDTH]; + + prefix_max[UNROLL * VECTOR_WIDTH - 1] = -2000.0; + + VectorLos::::calculate_angles( + pov_height, + line, + &self.distances, + &self.adjustments, + &mut self.angles[1..], + ); + + let mut output: Vec = vec![]; + + let (chunked_prefix_angles, rest_prefix_angles) = + self.angles[..self.angles.len() - 1].as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + let (chunked_angles, rest_angles) = + self.angles[1..].as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + + let (chunked_distances, rest_distances) = + self.distances.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + + let los = izip!(chunked_prefix_angles, chunked_angles, chunked_distances).fold( + UnrollVector:: { + longest: [0.0; UNROLL * VECTOR_WIDTH], + heatmap: [0.0; UNROLL * VECTOR_WIDTH], + }, + |acc, (prefix_angles, angles, distances)| { + VectorLos::::prefix_max( + prefix_max[UNROLL * VECTOR_WIDTH - 1], + prefix_angles, + &mut prefix_max, + ); + + VectorLos::::accumulate( + acc, + angles, + &prefix_max, + distances, + &mut output, + ) + }, + ); + + VectorLos::::prefix_max( + prefix_max[UNROLL * VECTOR_WIDTH - 1], + rest_prefix_angles, + &mut prefix_max[..rest_angles.len()], + ); + + let new_acc = VectorLos::::accumulate( + los, + rest_angles, + &prefix_max[..rest_angles.len()], + rest_distances, + &mut output, + ); + + let (heatmap, longest) = new_acc.into(); + (heatmap, longest, output) + } +} + +/// `TAN_ONE_RAD` is used in normalizing the surface area heatmap +const TAN_ONE_RADIAN: f32 = 0.017_453_3; + +impl Accumulate> + for VectorLos +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, + Self: VectorGreater, +{ + #[inline] + #[expect(clippy::allow_attributes, reason = "conditional attributes")] + #[allow( + unused, + unused_variables, + reason = "conditional compilation causes dead parameters" + )] + fn accumulate( + mut init: UnrollVector, + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + ) -> UnrollVector { + debug_assert!( + angles.len().is_multiple_of(VECTOR_WIDTH), + "angles with len {} should be multiple of {}", + angles.len(), + VECTOR_WIDTH, + ); + debug_assert!( + prefix.len().is_multiple_of(VECTOR_WIDTH), + "prefix unroll should be multiple of width" + ); + debug_assert!( + distances.len().is_multiple_of(VECTOR_WIDTH), + "distance unroll should be multiple of width" + ); + debug_assert!( + angles.len() <= UNROLL * VECTOR_WIDTH, + "angles must be less than unroll size" + ); + + let (vector_sum, _) = init.heatmap.as_chunks_mut::<{ VECTOR_WIDTH }>(); + let (vector_longest, _) = init.longest.as_chunks_mut::<{ VECTOR_WIDTH }>(); + + let (vector_angles, _) = angles.as_chunks::<{ VECTOR_WIDTH }>(); + let (vector_prefix, _) = prefix.as_chunks::<{ VECTOR_WIDTH }>(); + let (vector_dists, _) = distances.as_chunks::<{ VECTOR_WIDTH }>(); + + izip!( + vector_sum, + vector_longest, + vector_angles, + vector_prefix, + vector_dists, + ) + .for_each( + |(sum_arr, longest_arr, &angle_arr, &prefix_arr, &distances_arr)| { + let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); + + if cfg!(any(test, feature = "ring_data")) { + bitmap.extend(mask.to_array()); + } + + if !mask.any() { + return; + } + + let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); + + Self::max(Simd::from_array(*longest_arr), dist).copy_to_slice(longest_arr); + + let acc = Simd::from(*sum_arr) + (dist * Simd::splat(TAN_ONE_RADIAN)); + + acc.copy_to_slice(sum_arr); + }, + ); + + init + } +} diff --git a/crates/total-viewsheds/src/cpu/vector_intrinsics.rs b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs new file mode 100644 index 0000000..4d85921 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs @@ -0,0 +1,367 @@ +use crate::cpu::los::{Angle, PrefixMax}; +use itertools::izip; +use std::iter::zip; +use std::simd::prelude::{SimdFloat as _, SimdInt as _, SimdPartialOrd as _}; +use std::simd::{f32x4, LaneCount, Mask, Simd, SupportedLaneCount}; + +/// `VectorMax` performs an element-wise SIMD max of floats, allowing for architecture +/// specific implementations +pub trait VectorMax +where + LaneCount: SupportedLaneCount, +{ + /// `max` computes an element-wise maximum from lhs and rhs, assuming neither contain NaNs + /// or -0.0 + fn max(lhs: Simd, rhs: Simd) -> Simd; +} + +/// `VectorGreater` performs a SIMD greater than of floats, allowing for architecture +/// specific implementations +pub trait VectorGreater +where + LaneCount: SupportedLaneCount, +{ + /// gt computes an element-wise maximum from lhs and rhs, assuming neither contain NaNs + /// or -0.0 + fn gt(lhs: Simd, rhs: Simd) -> Mask; +} + +/// `VectorLos` is an implementation of the internals of `PrefixMax`, `Angle`, and `Accumulate` +/// for Portable SIMD +pub struct VectorLos +where + LaneCount: SupportedLaneCount; + +impl VectorMax for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn max(lhs: Simd, rhs: Simd) -> Simd { + lhs.simd_max(rhs) + } +} + +impl VectorGreater for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn gt(lhs: Simd, rhs: Simd) -> Mask { + lhs.simd_gt(rhs) + } +} + +#[cfg(target_feature = "sse")] +impl VectorMax<4> for VectorLos<4> { + #[inline] + fn max(lhs: f32x4, rhs: f32x4) -> f32x4 { + use std::arch::x86_64::_mm_max_ps; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm_max_ps(lhs.into(), rhs.into()) }.into() + } +} + +#[cfg(target_feature = "avx")] +impl VectorGreater<4> for VectorLos<4> { + fn gt(lhs: f32x4, rhs: f32x4) -> Mask { + use std::arch::x86_64::{_mm_castps_si128, _mm_cmp_ps, _CMP_GT_OS}; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm_castps_si128(_mm_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); + Mask::::from_int_unchecked(mask.into()) + } + } +} + +#[cfg(target_feature = "avx")] +impl VectorMax<8> for VectorLos<8> { + #[inline] + fn max(lhs: Simd, rhs: Simd) -> Simd { + use std::arch::x86_64::_mm256_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(target_feature = "avx")] +impl VectorGreater<8> for VectorLos<8> { + #[inline] + fn gt(lhs: Simd, rhs: Simd) -> Mask { + use std::arch::x86_64::{_mm256_castps_si256, _mm256_cmp_ps, _CMP_GT_OS}; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm256_castps_si256(_mm256_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); + Mask::::from_int_unchecked(mask.into()) + } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorMax<16> for VectorLos<16> { + #[inline] + fn max(lhs: Simd, rhs: Simd) -> Simd { + use std::arch::x86_64::_mm512_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorGreater<16> for VectorLos<16> { + #[inline] + fn gt(lhs: Simd, rhs: Simd) -> Mask { + use std::arch::x86_64::{_mm512_cmp_ps_mask, _CMP_GT_OS}; + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm512_cmp_ps_mask::<_CMP_GT_OS>(lhs.into(), rhs.into()); + Mask::::from_bitmask(mask.into()) + } + } +} + +impl PrefixMax for VectorLos<4> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + let (vector_angles, _) = angles_in.as_chunks::<4>(); + let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); + + for (prefix, &angle) in zip(vector_prefix.iter_mut(), vector_angles.iter()) { + let start = Simd::from(angle); + + let mut v_prefix_max = { + let shifted = start.shift_elements_right::<1>(-2000.0f32); + Self::max(start, shifted) + }; + + v_prefix_max = { + let shifted = v_prefix_max.shift_elements_right::<2>(-2000.0f32); + Self::max(v_prefix_max, shifted) + }; + + v_prefix_max.copy_to_slice(prefix); + } + + let mut local_acc = Simd::splat(highest); + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in vector_prefix { + let cur_prefix: f32x4 = Simd::from(*prefix); + let cur_max: f32x4 = Simd::splat(cur_prefix[3]); + + Self::max(local_acc, cur_prefix).copy_to_slice(prefix); + local_acc = Self::max(local_acc, cur_max); + } + } +} + +#[cfg(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" +))] +impl PrefixMax for VectorLos<8> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + use std::arch::x86_64::{ + _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_slli_si256, + _mm_max_ps, + }; + + debug_assert!( + angles_in.len().is_multiple_of(8) && angles_in.len() == angles_out.len(), + "inconsistent lengths, buffer must be multiple of vector length" + ); + { + let (vector_angles, _) = angles_in.as_chunks::<8>(); + let (vector_prefix, _) = angles_out.as_chunks_mut::<8>(); + + izip!(vector_prefix.iter_mut(), vector_angles.iter()).for_each(|(prefix, &angle)| { + let start = Simd::from_array(angle); + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + let mut v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<4>(_mm256_castps_si256(start.into())); + let blended = _mm256_blend_ps::<0b0001_0001>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + Self::max(start, blended.into()) + }; + + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<8>(_mm256_castps_si256(v_prefix_max.into())); + let blended = _mm256_blend_ps::<0b0011_0011>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + + Self::max(v_prefix_max, blended.into()) + }; + + v_prefix_max.copy_to_slice(prefix); + }); + }; + + { + let mut acc: f32x4 = Simd::splat(highest); + let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); + for prefix in vector_prefix.iter_mut() { + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + let new_max: f32x4 = + unsafe { _mm_max_ps(Simd::from_array(*prefix).into(), acc.into()) }.into(); + + let cur_max = Simd::splat(prefix[3]); + + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + acc = unsafe { _mm_max_ps(acc.into(), cur_max.into()).into() }; + + new_max.copy_to_slice(prefix); + } + } + } +} + +#[cfg(target_feature = "avx512f")] +impl PrefixMax for VectorLos<16> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + use std::arch::x86_64::{ + __m512, _mm512_alignr_epi32, _mm512_castps_si512, _mm512_castsi512_ps, _mm512_max_ps, + }; + use std::simd::f32x16; + + #[expect( + clippy::cast_sign_loss, + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + reason = "K is always in bounds" + )] + fn mm512_slli_si512(elem: __m512) -> __m512 + where + [(); { (16 - K) as i32 } as usize]:, + { + // safety: all mm512 intrinsics are guarded by avx512f + unsafe { + let zero = f32x16::splat(-2000.0f32); + _mm512_castsi512_ps(_mm512_alignr_epi32::<{ (16 - K) as i32 }>( + _mm512_castps_si512(elem), + _mm512_castps_si512(zero.into()), + )) + } + } + + let (vector_prefix, _) = angles_out.as_chunks_mut::<16>(); + let (vector_angle, _) = angles_in.as_chunks::<16>(); + + for (prefix, &angle) in zip(vector_prefix.iter_mut(), vector_angle.iter()) { + let simd_angle = Simd::from_array(angle); + // safety: all the following operations are guarded by the avx512f build falg + unsafe { + let mut v_prefix_max = + _mm512_max_ps(simd_angle.into(), mm512_slli_si512::<1>(simd_angle.into())); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<2>(v_prefix_max)); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<4>(v_prefix_max)); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<8>(v_prefix_max)); + + let simd_prefix_max: f32x16 = v_prefix_max.into(); + simd_prefix_max.copy_to_slice(prefix); + } + } + + let mut local_acc = f32x16::splat(highest); + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in vector_prefix.iter_mut() { + let cur_prefix: f32x16 = Simd::from_array(*prefix); + let cur_max: f32x16 = Simd::splat(cur_prefix[15]); + + Self::max(local_acc, cur_prefix).copy_to_slice(prefix); + local_acc = Self::max(local_acc, cur_max); + } + } +} + +impl Angle for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn calculate_angles( + pov_height: f32, + elevations: &[i16], + distances: &[f32], + adjustments: &[f32], + angles_out: &mut [f32], + ) { + debug_assert!( + elevations.len().is_multiple_of(WIDTH), + "expected elevations to be a multiple of {WIDTH}", + ); + + debug_assert!( + distances.len().is_multiple_of(WIDTH), + "expected distances to be a multiple of {WIDTH}", + ); + + debug_assert!( + adjustments.len().is_multiple_of(WIDTH), + "expected adjustments to be a multiple of {WIDTH}", + ); + + debug_assert!( + angles_out.len().is_multiple_of(WIDTH), + "expected angles buf to be a multiple of {WIDTH}", + ); + + let (vector_angles, _) = angles_out.as_chunks_mut::<{ WIDTH }>(); + let (vector_elevations, _) = elevations.as_chunks::<{ WIDTH }>(); + let (vector_adjustments, _) = adjustments.as_chunks::<{ WIDTH }>(); + let (vector_distances, _) = distances.as_chunks::<{ WIDTH }>(); + + for (angle, &elevation, &distance, &adjustment) in izip!( + vector_angles.iter_mut(), + vector_elevations.iter(), + vector_distances.iter(), + vector_adjustments.iter() + ) { + let elevation_f32: Simd = Simd::from(elevation).cast(); + let height_delta = elevation_f32 - Simd::splat(pov_height); + let res = (height_delta + Simd::from_array(adjustment)) / Simd::from_array(distance); + res.copy_to_slice(angle); + } + } +} + +/// `DEFAULT_VECTOR_LENGTH` determines the CPU Kernel's default vector length based off +/// the architecture that the binary is built for +pub const DEFAULT_VECTOR_LENGTH: usize = const { + if cfg!(target_feature = "avx512f") { + 16 + } else if cfg!(any(test, feature = "ring_data")) { + 4 + } else if cfg!(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" + )) { + 8 + } else { + 4 + } +}; diff --git a/crates/total-viewsheds/src/dem.rs b/crates/total-viewsheds/src/dem.rs index fec12ab..0717653 100644 --- a/crates/total-viewsheds/src/dem.rs +++ b/crates/total-viewsheds/src/dem.rs @@ -161,7 +161,6 @@ impl DEM { reason = "We don't want to output GBs of data!" )] impl std::fmt::Debug for DEM { - #[expect(clippy::min_ident_chars, reason = "This is from `std`")] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("DEM") .field("width", &self.width) diff --git a/crates/total-viewsheds/src/los_pack.rs b/crates/total-viewsheds/src/los_pack.rs index 01f185e..bde1384 100644 --- a/crates/total-viewsheds/src/los_pack.rs +++ b/crates/total-viewsheds/src/los_pack.rs @@ -48,12 +48,13 @@ impl LineOfSightPacked { (self.to_u32() >> 10u32) & U22_MAX } - #[cfg(test)] /// The angle of the line of sight from the point of view. pub fn angle(&self) -> Result { Ok((self.to_u32() & U10_MAX).try_into()?) } + /// Get the raw f32 value. It doesn't represent any useful data, it's just the f32 view of the + /// packed data. pub const fn as_f32(&self) -> f32 { self.0 } diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 41fa3be..a271f52 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,5 +1,11 @@ //! Total Viewshed Calculator - +#![feature(portable_simd)] +#![feature(specialization)] +#![expect( + incomplete_features, + reason = "our usage isn't crazy and unlikely to break" +)] +#![feature(generic_const_exprs)] #![expect(clippy::pub_use, reason = "I admit I don't understand the other way.")] #![cfg_attr( test, @@ -14,6 +20,8 @@ ) )] +extern crate core; + use clap::Parser as _; use color_eyre::eyre::Result; use tracing_subscriber::{layer::SubscriberExt as _, util::SubscriberInitExt as _, Layer as _}; @@ -25,7 +33,12 @@ mod bt { pub mod read; pub mod write; } -mod compute; +/// Handling the running of computations. +mod run { + pub mod compute; + pub mod parallel; + pub mod serial; +} mod config; mod dem; mod dump_usage; @@ -40,6 +53,10 @@ mod output { pub mod ring_data; pub mod viewshed; } + +/// cpu implements a CPU kernel for the longest line of sight +mod cpu; + mod projection; fn main() -> Result<()> { @@ -114,7 +131,7 @@ fn compute(config: &config::Compute) -> Result<()> { tracing::debug!("Created DEM: {dem:?}"); tracing::info!("Starting computations"); - let compute_config = compute::ComputeConfig { + let compute_config = run::compute::Config { observer_height: config.observer_height, scale: config.scale.unwrap_or(1.0), backend: config.backend.clone(), @@ -123,8 +140,10 @@ fn compute(config: &config::Compute) -> Result<()> { rings_per_km: config.rings_per_km, heatmap: config.heatmap, refraction: config.refraction, + thread_count: config.thread_count, + disable_render_image: config.disable_image_render, }; - let mut compute = crate::compute::Compute::new(compute_config, &mut dem)?; + let mut compute = run::compute::Compute::new(compute_config, &mut dem)?; compute.run()?; Ok(()) } diff --git a/crates/total-viewsheds/src/output/ascii.rs b/crates/total-viewsheds/src/output/ascii.rs index 6177314..c184de2 100644 --- a/crates/total-viewsheds/src/output/ascii.rs +++ b/crates/total-viewsheds/src/output/ascii.rs @@ -3,8 +3,12 @@ #![cfg(test)] #![expect(clippy::indexing_slicing, reason = "This code is mostly for tests")] -pub fn make_viewshed(elevations: &[i16], viewshed_pov: geo::Coord) -> Vec { - let mut dem = crate::compute::test::make_dem(elevations); +pub fn make_viewshed( + elevations: &[i16], + viewshed_pov: geo::Coord, + backend: crate::config::Backend, +) -> Vec { + let mut dem = crate::run::compute::test::make_dem(elevations); let dem_half_width = f64::from(dem.width - 1) / 2.0f64; let viewshed_pov_metric = geo::Coord { x: viewshed_pov.x - dem_half_width, @@ -14,7 +18,7 @@ pub fn make_viewshed(elevations: &[i16], viewshed_pov: geo::Coord) -> Vec], + reserved_ring_data_size: usize, + width: u32, +) -> Result> { + let total_points = usize::try_from(width * width)?; + let mut ring_data = vec![0; total_points * reserved_ring_data_size]; + let mut start = 0; + + for line_of_sight in bitmap { + let mut is_currently_visible = true; + let mut is_previously_visible = true; + let mut closing = false; + let mut cursor = 1; + + for (index, visibility) in line_of_sight + .iter() + // Skip the first visibility because we assume the PoV is always visibile + .skip(1) + .enumerate() + { + is_currently_visible = *visibility; + let opening = is_currently_visible && !is_previously_visible; + closing = is_previously_visible && !is_currently_visible; + + if opening || closing { + ring_data[start + cursor] = u32::try_from(index + 1)?; + cursor += 1; + } + + is_previously_visible = is_currently_visible; + } + + if is_currently_visible && !closing { + ring_data[start + cursor] = width; + cursor += 1; + } + + ring_data[start] = u32::try_from(cursor)?; + start += reserved_ring_data_size; + } + + Ok(ring_data) +} + +#[expect(clippy::indexing_slicing, reason = "Just tests")] #[cfg(test)] mod test { use super::*; + use googletest::prelude::*; #[test] fn save_and_load() { @@ -185,4 +282,28 @@ mod test { } } } + + #[gtest] + fn convert_bitmap() { + fn run(bitmap: &[Vec]) -> Vec { + let reserved_ring_size = 3; + let result = convert_bitmap_to_ids(bitmap, reserved_ring_size, 4).unwrap(); + let size = bitmap.len() * reserved_ring_size; + result[0..size].to_vec() + } + + expect_eq!(run(&[vec![true, true, true, false]]), vec![2, 3, 0]); + + expect_eq!(run(&[vec![true, false, false, false]]), vec![2, 1, 0]); + + expect_eq!( + run(&[ + vec![true, true, true, false], + vec![true, false, false, false] + ]), + vec![2, 3, 0, 2, 1, 0] + ); + + expect_eq!(run(&[vec![true, true, true, true]]), vec![2, 4, 0]); + } } diff --git a/crates/total-viewsheds/src/output/viewshed.rs b/crates/total-viewsheds/src/output/viewshed.rs index 2e4b1e4..5c91809 100644 --- a/crates/total-viewsheds/src/output/viewshed.rs +++ b/crates/total-viewsheds/src/output/viewshed.rs @@ -52,7 +52,7 @@ impl Viewshed<'_> { pov_coord: pov_dem_coord, }; - for angle_integer in 0..crate::compute::SECTOR_STEPS { + for angle_integer in 0..crate::run::compute::SECTOR_STEPS { let angle = f32::from(angle_integer); let mut reconstructor = Reconstructor::new(&viewshed, ring_data.metadata.reserved_ring_size, angle)?; @@ -348,7 +348,7 @@ mod test { use super::*; - const RESERVED_RING_SIZE: usize = crate::compute::Compute::ring_count_per_band(5000.0, 3); + const RESERVED_RING_SIZE: usize = crate::run::compute::Compute::ring_count_per_band(5000.0, 3); fn builder<'viewshed>(viewshed: &'viewshed Viewshed, angle: f32) -> Reconstructor<'viewshed> { Reconstructor::new(viewshed, RESERVED_RING_SIZE, angle).unwrap() @@ -363,7 +363,7 @@ mod test { } fn make_visible_polygon_for(setup: &VisiblePolygonFor) -> Vec { - let dem = crate::compute::test::make_dem(&kernel::tests::dems::single_peak_dem()); + let dem = crate::run::compute::test::make_dem(&kernel::tests::dems::single_peak_dem()); let viewshed = Viewshed { dem: &dem, pov_coord: crate::dem::Coordinate(setup.pov), @@ -490,37 +490,43 @@ mod test { } } - #[test] - fn viewshed_in_hole() { + fn viewshed_in_hole(backend: &crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 5.0, y: 5.0 }, + backend.clone(), ); - assert_viewshed( - &viewshed, - &[ - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████▀ â–„ ▀███████████", - "████████ ▀█▀ ███████████", - "█████████▄▄▄████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - ], - ); + let expected = &[ + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████▀ â–„ ▀███████████", + "████████ ▀█▀ ███████████", + "█████████▄▄▄████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + ]; + + match backend { + crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { + assert_viewshed(&viewshed, expected); + } + crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { + panic!("We're not testing these.") + } + } } - #[test] - fn viewshed_on_summit() { + fn viewshed_on_summit(backend: crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 6.0, y: 6.0 }, + backend, ); assert_viewshed( @@ -542,29 +548,69 @@ mod test { ); } - #[test] - fn viewshed_near_summit() { + fn viewshed_near_summit(backend: &crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 5.0, y: 6.0 }, + backend.clone(), ); - assert_viewshed( - &viewshed, - &[ - "████████████████████████", - "████████████████████████", - "█████▀▀ â–„â–„â–„â–„â–„ ▀▀████████", - "███▀ ▄█████████ ▄███████", - "██▀ █████████▀▄█████████", - "██ ████████▀ ███████████", - "██ ████████▀ ███████████", - "██ ▀████████▄▀██████████", - "███ ▀█████████▄▀████████", - "████▄ ▀▀█████▀▀ ▄███████", - "███████▄▄▄▄▄▄▄██████████", - "████████████████████████", - ], - ); + let expected = &[ + "████████████████████████", + "████████████████████████", + "█████▀▀ â–„â–„â–„â–„â–„ ▀▀████████", + "███▀ ▄█████████ ▄███████", + "██▀ █████████▀▄█████████", + "██ ████████▀ ███████████", + "██ ████████▀ ███████████", + "██ ▀████████▄▀██████████", + "███ ▀█████████▄▀████████", + "████▄ ▀▀█████▀▀ ▄███████", + "███████▄▄▄▄▄▄▄██████████", + "████████████████████████", + ]; + + match backend { + crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { + assert_viewshed(&viewshed, expected); + } + crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { + panic!("We're not testing these.") + } + } + } + + mod gpu { + #[test] + fn viewshed_in_hole() { + super::viewshed_in_hole(&crate::config::Backend::VulkanCPU); + } + + #[test] + fn viewshed_on_summit() { + super::viewshed_on_summit(crate::config::Backend::VulkanCPU); + } + + #[test] + fn viewshed_near_summit() { + super::viewshed_near_summit(&crate::config::Backend::VulkanCPU); + } + } + + mod cpu { + #[test] + fn viewshed_in_hole() { + super::viewshed_in_hole(&crate::config::Backend::CPU); + } + + #[test] + fn viewshed_on_summit() { + super::viewshed_on_summit(crate::config::Backend::CPU); + } + + #[test] + fn viewshed_near_summit() { + super::viewshed_near_summit(&crate::config::Backend::CPU); + } } } diff --git a/crates/total-viewsheds/src/compute.rs b/crates/total-viewsheds/src/run/compute.rs similarity index 58% rename from crates/total-viewsheds/src/compute.rs rename to crates/total-viewsheds/src/run/compute.rs index bd07889..106aa16 100644 --- a/crates/total-viewsheds/src/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -8,17 +8,17 @@ pub const SECTOR_STEPS: u16 = 180; /// Handles all the computations. pub struct Compute<'compute> { /// User configuration. - config: ComputeConfig, + pub config: Config, /// Vulkan GPU manager - vulkan: Option, + pub vulkan: Option, /// Storage interface for conputed ring (viewshed) data. storage: Option, /// The Digital Elevation Model that we're computing. - dem: &'compute mut crate::dem::DEM, + pub dem: &'compute mut crate::dem::DEM, /// The constants for each kernel computation. pub constants: kernel::constants::Constants, /// The amount of reserved memory for ring data. - total_reserved_rings: usize, + pub total_reserved_rings: usize, /// Keeps track of the cumulative surfaces from every angle. pub total_surfaces: Vec, /// Keeps track of the ring (viewshed) data. @@ -28,7 +28,7 @@ pub struct Compute<'compute> { } /// Configuration for computing. -pub struct ComputeConfig { +pub struct Config { /// The height of the observer that views viewsheds. pub observer_height: f32, /// The size of each elevation point in meters. @@ -45,11 +45,15 @@ pub struct ComputeConfig { pub heatmap: crate::config::HeatmapNormalisation, /// Refractoin coefficient pub refraction: f32, + /// Number of threads for computation + pub thread_count: usize, + /// Disables the rendering of PNG images (good for long runs) + pub disable_render_image: bool, } impl<'compute> Compute<'compute> { /// Instantiate. - pub fn new(config: ComputeConfig, dem: &'compute mut crate::dem::DEM) -> Result { + pub fn new(config: Config, dem: &'compute mut crate::dem::DEM) -> Result { let total_bands = dem.computable_points_count * 2; let rings_per_band = if Self::is_process_viewsheds(&config.process) { @@ -90,14 +94,10 @@ impl<'compute> Compute<'compute> { // We only need the "chocolate box" section of rotations to do visibility calculations. let rotations_size = kernel::chocolate_box::size(dem.width, dem.tvs_width); - #[expect( - clippy::if_then_some_else_none, - reason = "The `?` is hard to use in the closure" - )] let vulkan = if matches!(config.backend, crate::config::Backend::Vulkan) { let elevations = dem.elevations.clone(); dem.elevations = Vec::new(); // Free up some RAM. - Some(super::vulkan::Vulkan::new( + Some(crate::vulkan::Vulkan::new( constants, elevations, usize::try_from(rotations_size)?, @@ -156,95 +156,18 @@ impl<'compute> Compute<'compute> { || process.contains(&crate::config::Process::LongestLines) } - /// Create a GPU-friendly bitmask of flags to use in the kernel. - pub fn bitmask_flags_for_kernel(processes: &[crate::config::Process]) -> u32 { - use kernel::constants as kernel; - let mut flags = 0u32; - for process in processes { - match process { - crate::config::Process::All => { - flags |= kernel::Flag::TotalSurfaces.bit() | kernel::Flag::RingData.bit(); - } - crate::config::Process::TotalSurfaces => { - flags |= kernel::Flag::TotalSurfaces.bit(); - } - crate::config::Process::Viewsheds => flags |= kernel::Flag::RingData.bit(), - crate::config::Process::LongestLines => { - flags |= kernel::Flag::LongestLines.bit(); - } - } - } - flags - } - /// Do all computations. pub fn run(&mut self) -> Result<()> { - if Self::is_process_surfaces(&self.config.process) { - self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; - } - if Self::is_process_viewsheds(&self.config.process) && self.config.output_directory.is_some() { self.save_ring_metadata()?; } - let mut longest_lines = if Self::is_process_longest_lines(&self.config.process) { - self.longest_lines = vec![ - crate::los_pack::LineOfSightPacked::default(); - usize::try_from(self.dem.computable_points_count)? - ]; - vec![0.0; usize::try_from(self.dem.computable_points_count)?] + if matches!(self.config.backend, crate::config::Backend::CPU) { + self.run_parallel()?; } else { - Vec::new() - }; - - for angle in 0..SECTOR_STEPS { - let mut sector_ring_data = vec![0; self.total_reserved_rings]; - let trig = kernel::rotation::Rotator::calculate_trig(f32::from(angle)); - self.constants.sine = trig.0; - self.constants.cosine = trig.1; - self.compute_sector(angle, &mut sector_ring_data, &mut longest_lines)?; - - if Self::is_process_viewsheds(&self.config.process) { - match &self.config.output_directory { - Some(_) => { - self.save_sector_ring_data(angle, §or_ring_data)?; - } - None => self.ring_data.push(sector_ring_data.clone()), - } - } - - if Self::is_process_longest_lines(&self.config.process) { - self.increment_longest_lines(&longest_lines, angle)?; - if angle == SECTOR_STEPS - 1 { - self.render_longest_lines()?; - } - } - } - - if Self::is_process_surfaces(&self.config.process) { - self.render_total_surfaces()?; - } - - Ok(()) - } - - /// Check to see if this angle increases the current longest line of sight for the point. - fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { - for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { - #[expect( - clippy::as_conversions, - clippy::cast_sign_loss, - clippy::cast_possible_truncation, - reason = "Distances always fit in u32" - )] - let current = right.abs() as u32; - if current > left.distance() { - let angle = if *right >= 0.0 { sector } else { sector + 180 }; - let packed = crate::los_pack::LineOfSightPacked::new(current, angle)?; - *left = packed; - } + self.run_sequential()?; } Ok(()) @@ -283,11 +206,21 @@ impl<'compute> Compute<'compute> { /// Render a heatmap and `.bt` file of the total surface areas for each point within the computable area of the /// DEM. - fn render_total_surfaces(&self) -> Result<()> { + pub fn render_total_surfaces(&self) -> Result<()> { let Some(output_dir) = &self.config.output_directory else { return Ok(()); }; + crate::output::bt::save( + self.dem, + &self.total_surfaces, + &output_dir.join("total_surfaces.bt"), + )?; + + if self.config.disable_render_image { + return Ok(()); + } + crate::output::png::save( &self.total_surfaces, self.dem.tvs_width, @@ -296,22 +229,32 @@ impl<'compute> Compute<'compute> { self.config.heatmap, )?; - crate::output::bt::save( - self.dem, - &self.total_surfaces, - &output_dir.join("total_surfaces.bt"), - )?; - Ok(()) } /// Render a heatmap and `.bt` of the longest lines of sight for each point within the computable area of the /// DEM. - fn render_longest_lines(&self) -> Result<()> { + pub fn render_longest_lines(&self) -> Result<()> { let Some(output_dir) = &self.config.output_directory else { return Ok(()); }; + let packed_lines = self + .longest_lines + .iter() + .map(crate::los_pack::LineOfSightPacked::as_f32) + .collect::>(); + + crate::output::bt::save( + self.dem, + &packed_lines, + &output_dir.join("longest_lines.bt"), + )?; + + if self.config.disable_render_image { + return Ok(()); + } + let distances = self .longest_lines .iter() @@ -326,6 +269,7 @@ impl<'compute> Compute<'compute> { } }) .collect::>(); + crate::output::png::save( &distances, self.dem.tvs_width, @@ -334,101 +278,6 @@ impl<'compute> Compute<'compute> { self.config.heatmap, )?; - let packed_lines = self - .longest_lines - .iter() - .map(crate::los_pack::LineOfSightPacked::as_f32) - .collect::>(); - crate::output::bt::save( - self.dem, - &packed_lines, - &output_dir.join("longest_lines.bt"), - )?; - - Ok(()) - } - - /// Compute a single sector. - fn compute_sector( - &mut self, - angle: u16, - ring_data: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - tracing::info!("Running kernel for {angle}°"); - match self.config.backend { - crate::config::Backend::VulkanCPU => { - self.compute_sector_cpu(ring_data, longest_lines)?; - } - crate::config::Backend::Vulkan => { - self.compute_sector_vulkan(ring_data, longest_lines)?; - } - - #[expect(clippy::unimplemented, reason = "Coming Soon!")] - crate::config::Backend::Cuda => unimplemented!(), - } - - Ok(()) - } - - /// Do a whole sector calculation on the GPU using Vulkan. - fn compute_sector_vulkan( - &mut self, - rings: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - let Some(gpu) = self.vulkan.as_mut() else { - color_eyre::eyre::bail!("`self.gpu` not instantiated yet."); - }; - - let (surfaces_data, rings_data, longest_lines_data) = gpu.run(self.constants)?; - if Self::is_process_surfaces(&self.config.process) { - self.total_surfaces - .copy_from_slice(surfaces_data.as_slice()); - } - if Self::is_process_viewsheds(&self.config.process) { - rings.copy_from_slice(rings_data.as_slice()); - } - if Self::is_process_longest_lines(&self.config.process) { - longest_lines.copy_from_slice(longest_lines_data.as_slice()); - } - Ok(()) - } - - /// Do a whole sector calculation on the CPU. - fn compute_sector_cpu( - &mut self, - ring_data: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - let chocolate_box_size = kernel::chocolate_box::size(self.dem.width, self.dem.tvs_width); - let mut rotated_elevations = vec![0.0; usize::try_from(chocolate_box_size)?]; - for chocolate_id in 0..(self.dem.computable_points_count * 2) { - let chocolate = kernel::chocolate_box::Rotator::new_from_cached_trig( - chocolate_id, - self.dem.width, - self.dem.tvs_width, - self.constants.sine, - self.constants.cosine, - ); - // Note that we _anti_ rotate because anti-rotating the DEM grid has the effect of normally - // rotating the line of sight. Which is just more intuitive to work with when debugging. - chocolate - .anti_rotate_value_nearest_neighbour(&self.dem.elevations, &mut rotated_elevations); - } - - let mut buffers = kernel::kernel::Buffers { - constants: &self.constants, - elevations: &rotated_elevations, - cumulative_surfaces: &mut self.total_surfaces, - longest_lines, - ring_data, - }; - - for tvs_id in 0..self.constants.total_bands { - kernel::kernel::Kernel::run(tvs_id, &mut buffers); - } - Ok(()) } } @@ -451,11 +300,15 @@ pub mod test { dem } - pub fn compute(dem: &mut crate::dem::DEM) -> Compute<'_> { - let config = ComputeConfig { + pub fn compute( + dem: &mut crate::dem::DEM, + backend: crate::config::Backend, + refraction_override: Option, + ) -> Compute<'_> { + let config = Config { observer_height: 0.8, scale: 1.0, - backend: crate::config::Backend::VulkanCPU, + backend, process: vec![ crate::config::Process::TotalSurfaces, crate::config::Process::Viewsheds, @@ -464,7 +317,9 @@ pub mod test { output_directory: None, rings_per_km: 5000.0, heatmap: crate::config::HeatmapNormalisation::UnitScale, - refraction: 0.13, + refraction: refraction_override.unwrap_or(0.13f32), + thread_count: 1, // single thread it for consistency + disable_render_image: false, }; let mut compute = Compute::new(config, dem).unwrap(); @@ -472,18 +327,17 @@ pub mod test { compute } - #[test] - fn total_surfaces() { + fn total_surfaces(backend: crate::config::Backend) { let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem); + let compute = compute(&mut dem, backend, None); #[rustfmt::skip] assert_eq!( compute.total_surfaces, [ - 0.0, 0.0, 0.0, 0.0, - 0.0, 6.283163, 38.920944, 0.0, - 0.0, 70.75571, 94.24808, 0.0, - 0.0, 0.0, 0.0, 0.0 + 0.0, 0.0, 0.0, 0.0, + 0.0, 6.283163, 23.213009, 0.0, + 0.0, 48.066483, 62.832096, 0.0, + 0.0, 0.0, 0.0, 0.0 ] ); } @@ -493,10 +347,9 @@ pub mod test { clippy::cast_precision_loss, reason = "Distances always fit in u32" )] - #[gtest] - fn longest_lines() { + fn longest_lines(backend: crate::config::Backend) { let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem); + let compute = compute(&mut dem, backend, None); #[rustfmt::skip] expect_eq!( @@ -505,8 +358,8 @@ pub mod test { .collect::>(), [ 0.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 5.0, 0.0, - 0.0, 5.0, 5.0, 0.0, + 0.0, 1.0, 4.0, 0.0, + 0.0, 4.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -517,11 +370,76 @@ pub mod test { .map(|los| los.angle().unwrap()) .collect::>(), [ - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 180, 0, 0, - 0, 0, 0, 0 + 0, 0, 0, 0, + 0, 0, 12, 0, + 0, 46, 0, 0, + 0, 0, 0, 0 ] ); } + + mod vulkan_cpu { + use googletest::prelude::*; + + #[test] + fn total_surfaces() { + super::total_surfaces(crate::config::Backend::VulkanCPU); + } + + #[gtest] + fn longest_lines() { + super::longest_lines(crate::config::Backend::VulkanCPU); + } + } + + mod cpu { + use super::{compute, make_dem}; + use crate::config::Backend; + use googletest::prelude::*; + use std::iter::zip; + + #[test] + fn total_surfaces() { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute = compute(&mut dem, Backend::CPU, None); + #[rustfmt::skip] + assert_eq!( + compute.total_surfaces, + [ + 0.0, 0.0, 0.0, 0.0, + 0.0, 6.283163, 29.16455, 0.0, + 0.0, 48.06648, 62.832096, 0.0, + 0.0, 0.0, 0.0, 0.0 + ] + ); + } + + #[gtest] + fn longest_lines() { + super::longest_lines(crate::config::Backend::CPU); + } + + #[gtest] + fn refraction_affects_visibility() { + let none_refraction = { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute_no_refraction = compute(&mut dem, Backend::CPU, None); + compute_no_refraction.total_surfaces + }; + + let very_refraction = { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute_no_refraction = compute( + &mut dem, + Backend::CPU, + Some(-kernel::kernel::EARTH_DIAMETER), + ); + compute_no_refraction.total_surfaces + }; + + for (no_refraction, refraction) in zip(none_refraction, very_refraction) { + expect_ge!(no_refraction, refraction); + } + } + } } diff --git a/crates/total-viewsheds/src/run/parallel.rs b/crates/total-viewsheds/src/run/parallel.rs new file mode 100644 index 0000000..ef80456 --- /dev/null +++ b/crates/total-viewsheds/src/run/parallel.rs @@ -0,0 +1,192 @@ +//! For kernels that run each angle in parallel. + +use crate::los_pack::LineOfSightPacked; +use color_eyre::{ + eyre::{eyre, ContextCompat as _}, + Result, +}; +use rayon::iter::{IntoParallelIterator as _, ParallelIterator as _}; + +impl super::compute::Compute<'_> { + #[expect( + clippy::panic_in_result_fn, + reason = "It's too complicated and of no benefit to get the errors from the threads" + )] + /// `run_parallel` runs the CPU kernel in parallel + pub fn run_parallel(&mut self) -> Result<()> { + let max_los = usize::try_from(self.dem.max_los_as_points)?; + let tvs_size = max_los * max_los; + let is_process_ring_data = Self::is_process_viewsheds(&self.config.process); + let reserved_ring_data_size = if is_process_ring_data { + usize::try_from(self.constants.reserved_rings_per_band)? + } else { + 0 + }; + + let mut surfaces = vec![0.0f32; tvs_size]; + let mut longest = vec![(0u16, 0u32); tvs_size]; + let mut ring_data = vec![vec![0u32; tvs_size * reserved_ring_data_size]; 360]; + + let pool = rayon::ThreadPoolBuilder::new() + .num_threads(self.config.thread_count) + .build()?; + + { + let accumulating = AccumulatingData { + constants: self.constants, + surfaces: std::sync::Mutex::new(&mut surfaces), + longest: std::sync::Mutex::new(&mut longest), + visibility: std::sync::Mutex::new(&mut ring_data), + }; + + let elevations = &self.dem.elevations; + let refraction = self.config.refraction; + let scale = self.config.scale; + let observer_height = self.config.observer_height; + + pool.install(move || { + (0u16..360u16) + .into_par_iter() + .map(|angle| { + let start = std::time::Instant::now(); + tracing::info!("starting angle: {angle}"); + + let output = crate::cpu::kernel( + elevations, + max_los, + f32::from(angle), + refraction, + scale, + observer_height, + ); + + tracing::info!("finished angle in {:?}", start.elapsed()); + (angle, output) + }) + .for_each(|(angle, output)| { + let result = accumulating.handle_parallel_per_angle_output(angle, output); + #[expect( + clippy::panic, + reason = "No point accumulating errors and returning them" + )] + if let Err(error) = result { + panic!("{error:?}"); + } + }); + }); + }; + + self.total_surfaces = surfaces; + let packed: Result> = longest + .iter() + .map(|&(angle, distance): &(u16, u32)| LineOfSightPacked::new(distance, angle)) + .collect(); + self.longest_lines = packed?; + self.ring_data = ring_data; + + self.render_total_surfaces()?; + self.render_longest_lines()?; + + if Self::is_process_viewsheds(&self.config.process) + && self.config.output_directory.is_some() + { + for sector in 0..crate::run::compute::SECTOR_STEPS { + self.save_sector_ring_data( + sector, + self.ring_data + .get(usize::from(sector)) + .context("Sector not found in final ring data")?, + )?; + } + } + + Ok(()) + } +} + +/// A struct to accumulate data as it comes from the angle compute threads. +struct AccumulatingData<'accumulating> { + /// Various common kernel constants. + constants: kernel::constants::Constants, + /// Total surfaces. + surfaces: std::sync::Mutex<&'accumulating mut Vec>, + /// Longest lines. + longest: std::sync::Mutex<&'accumulating mut Vec<(u16, u32)>>, + /// Ring data to reconstruct individual viewsheds. + visibility: std::sync::Mutex<&'accumulating mut Vec>>, +} + +impl AccumulatingData<'_> { + /// Handle output from angle threads. + fn handle_parallel_per_angle_output( + &self, + angle: u16, + output: crate::cpu::kernel::OutputData, + ) -> Result<()> { + self.surfaces + .lock() + .map_err(|err| eyre!("{err:?}"))? + .iter_mut() + .zip(output.surfaces) + .for_each(|(to, from)| { + *to += from; + }); + + self.longest + .lock() + .map_err(|err| eyre!("{err:?}"))? + .iter_mut() + .zip(output.longest) + .for_each(|(to, from)| { + #[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_sign_loss, + reason = "distances always fit in u32" + )] + let converted = from as u32; + if converted > to.1 { + *to = (angle, converted); + return; + } + + // let the smallest angle win due to keep consistent in a multithreaded environment + if angle < to.0 && converted != 0 && converted == to.1 { + *to = (angle, converted); + } + }); + + if self.constants.is_ring_data() { + self.convert_bitmap_to_ids(&output.visibility, angle)?; + } + + Ok(()) + } + + /// Convert CPU visibilty bitmap to GPU sector ring data. + fn convert_bitmap_to_ids(&self, bitmap: &[Vec], angle: u16) -> Result<()> { + let max_los = self.constants.max_los_as_points; + let tvs_size = max_los * max_los; + let sector = usize::from(angle.rem_euclid(super::compute::SECTOR_STEPS)); + let reserved_ring_space = usize::try_from(self.constants.reserved_rings_per_band)?; + let reserved_per_tvs = reserved_ring_space * usize::try_from(tvs_size)?; + let angle_ring_data = + crate::output::ring_data::convert_bitmap_to_ids(bitmap, reserved_ring_space, max_los)?; + + let mut visibility = self.visibility.lock().map_err(|err| eyre!("{err:?}"))?; + let item = visibility + .get_mut(sector) + .context("Couldn't find sector slice to store visibilty")?; + + if angle < 180 { + // Forward lines of sight + item.splice(0..reserved_per_tvs, angle_ring_data); + } else { + // Backward lines of sight + item.splice(reserved_per_tvs.., angle_ring_data); + } + drop(visibility); + + Ok(()) + } +} diff --git a/crates/total-viewsheds/src/run/serial.rs b/crates/total-viewsheds/src/run/serial.rs new file mode 100644 index 0000000..5738522 --- /dev/null +++ b/crates/total-viewsheds/src/run/serial.rs @@ -0,0 +1,197 @@ +//! For kernels that run each angle in serial. + +use color_eyre::Result; + +impl super::compute::Compute<'_> { + /// `run_sequential` runs a sequential GPU or CPU kernel + pub fn run_sequential(&mut self) -> Result<()> { + if Self::is_process_surfaces(&self.config.process) { + self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; + } + + let mut longest_lines = if Self::is_process_longest_lines(&self.config.process) { + self.longest_lines = vec![ + crate::los_pack::LineOfSightPacked::default(); + usize::try_from(self.dem.computable_points_count)? + ]; + vec![0.0; usize::try_from(self.dem.computable_points_count)?] + } else { + Vec::new() + }; + + for angle in 0..super::compute::SECTOR_STEPS { + let mut sector_ring_data = vec![0; self.total_reserved_rings]; + let trig = kernel::rotation::Rotator::calculate_trig(f32::from(angle)); + self.constants.sine = trig.0; + self.constants.cosine = trig.1; + self.compute_sector(angle, &mut sector_ring_data, &mut longest_lines)?; + + if Self::is_process_viewsheds(&self.config.process) { + match &self.config.output_directory { + Some(_) => { + self.save_sector_ring_data(angle, §or_ring_data)?; + } + None => self.ring_data.push(sector_ring_data.clone()), + } + } + + if Self::is_process_longest_lines(&self.config.process) { + self.increment_longest_lines(&longest_lines, angle)?; + if angle == super::compute::SECTOR_STEPS - 1 { + self.render_longest_lines()?; + } + } + } + + if Self::is_process_surfaces(&self.config.process) { + self.render_total_surfaces()?; + } + + Ok(()) + } + + /// Create a GPU-friendly bitmask of flags to use in the kernel. + pub fn bitmask_flags_for_kernel(processes: &[crate::config::Process]) -> u32 { + use kernel::constants as kernel; + let mut flags = 0u32; + for process in processes { + match process { + crate::config::Process::All => { + flags |= kernel::Flag::TotalSurfaces.bit() | kernel::Flag::RingData.bit(); + } + crate::config::Process::TotalSurfaces => { + flags |= kernel::Flag::TotalSurfaces.bit(); + } + crate::config::Process::Viewsheds => flags |= kernel::Flag::RingData.bit(), + crate::config::Process::LongestLines => { + flags |= kernel::Flag::LongestLines.bit(); + } + } + } + flags + } + + /// Compute a single sector. + pub fn compute_sector( + &mut self, + angle: u16, + ring_data: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + tracing::info!("Running kernel for {angle}°"); + match self.config.backend { + crate::config::Backend::VulkanCPU => { + self.compute_sector_cpu_vulkan(ring_data, longest_lines)?; + } + crate::config::Backend::Vulkan => { + self.compute_sector_vulkan(ring_data, longest_lines)?; + } + #[expect(clippy::unimplemented, reason = "CPU kernel is only multithreaded")] + crate::config::Backend::CPU => { + unimplemented!(); + } + + #[expect(clippy::unimplemented, reason = "Coming Soon!")] + crate::config::Backend::Cuda => unimplemented!(), + } + + Ok(()) + } + + /// Do a whole sector calculation on the GPU using Vulkan. + fn compute_sector_vulkan( + &mut self, + rings: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + let Some(gpu) = self.vulkan.as_mut() else { + color_eyre::eyre::bail!("`self.gpu` not instantiated yet."); + }; + + let (surfaces_data, rings_data, longest_lines_data) = gpu.run(self.constants)?; + if Self::is_process_surfaces(&self.config.process) { + self.total_surfaces + .copy_from_slice(surfaces_data.as_slice()); + } + if Self::is_process_viewsheds(&self.config.process) { + rings.copy_from_slice(rings_data.as_slice()); + } + if Self::is_process_longest_lines(&self.config.process) { + longest_lines.copy_from_slice(longest_lines_data.as_slice()); + } + Ok(()) + } + + /// Do a whole sector calculation on the CPU. + fn compute_sector_cpu_vulkan( + &mut self, + ring_data: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + let chocolate_box_size = kernel::chocolate_box::size(self.dem.width, self.dem.tvs_width); + let mut rotated_elevations = vec![0.0; usize::try_from(chocolate_box_size)?]; + for chocolate_id in 0..(self.dem.computable_points_count * 2) { + let chocolate = kernel::chocolate_box::Rotator::new_from_cached_trig( + chocolate_id, + self.dem.width, + self.dem.tvs_width, + self.constants.sine, + self.constants.cosine, + ); + // Note that we _anti_ rotate because anti-rotating the DEM grid has the effect of normally + // rotating the line of sight. Which is just more intuitive to work with when debugging. + chocolate + .anti_rotate_value_nearest_neighbour(&self.dem.elevations, &mut rotated_elevations); + } + + let mut buffers = kernel::kernel::Buffers { + constants: &self.constants, + elevations: &rotated_elevations, + cumulative_surfaces: &mut self.total_surfaces, + longest_lines, + ring_data, + }; + + for tvs_id in 0..self.constants.total_bands { + kernel::kernel::Kernel::run(tvs_id, &mut buffers); + } + + Ok(()) + } + + /// Check to see if this angle increases the current longest line of sight for the point. + pub fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { + for (existing, candidate) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { + let angle = if *candidate >= 0.0 { + sector + } else { + sector + 180 + }; + + #[expect( + clippy::as_conversions, + clippy::cast_sign_loss, + clippy::cast_possible_truncation, + reason = "Distances always fit in u32" + )] + let absolute = candidate.abs() as u32; + + if absolute > existing.distance() { + let packed = crate::los_pack::LineOfSightPacked::new(absolute, angle)?; + *existing = packed; + } + + // For consistency with the CPU kernel we always want the first ever occurrence + // of a longest line to take precedence. However in thie Vulkan kernel we interleave + // the forward lines (0-179°) angles with the backward lines (180-359°). This means + // we have to have this awkward check here where a forward line takes precedence over + // an equally long backward line. + if absolute == existing.distance() && candidate > &0.0 && existing.angle()? >= 180 { + let packed = crate::los_pack::LineOfSightPacked::new(absolute, sector)?; + *existing = packed; + } + } + + Ok(()) + } +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..9327bad --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,5 @@ +# Nigtly is required for the specialization, const generic exprs, and portable SIMD. +# Once all are stabilized we can move to a stable toolchain +[toolchain] +channel = "nightly-2025-10-20" +components = ["rustfmt", "clippy"]