diff --git a/Cargo.lock b/Cargo.lock index 902db99939e..38ff78c5ec4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -51,7 +51,10 @@ dependencies = [ "rand", "rand_pcg", "rstest", + "serde", + "serde_with", "systems", + "toml", "uom", ] @@ -68,18 +71,42 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.19.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] name = "approx" @@ -92,32 +119,38 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bindgen" version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "cexpr", "clang-sys", "lazy_static", @@ -130,7 +163,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.38", + "syn 2.0.77", "which", ] @@ -142,9 +175,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bounded-vec-deque" @@ -152,17 +185,26 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2225b558afc76c596898f5f1b3fc35cfce0eb1b13635cbd7d1b2a7177dc10ccd" +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.79" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "2d74707dde2ba56f86ae90effb3b43ddd369504387e718014de010cec7959800" +dependencies = [ + "shlex", +] [[package]] name = "cexpr" @@ -179,33 +221,113 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets", +] + [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", "libloading", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.77", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "either" -version = "1.8.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "enum_dispatch" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys", ] [[package]] @@ -230,11 +352,17 @@ dependencies = [ "synstructure", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -247,9 +375,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -257,15 +385,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -274,38 +402,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.77", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -340,9 +468,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -351,9 +479,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "glob" @@ -367,6 +495,56 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "indexmap" version = "1.9.3" @@ -374,14 +552,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -391,49 +596,53 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.141" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "winapi", + "windows-targets", ] [[package]] name = "libm" -version = "0.2.6" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" -version = "0.4.17" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matrixmultiply" -version = "0.3.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ + "autocfg", "rawpointer", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -443,11 +652,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -553,6 +762,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-derive" version = "0.3.3" @@ -566,11 +781,10 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] @@ -587,9 +801,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -597,24 +811,24 @@ dependencies = [ [[package]] name = "object" -version = "0.30.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" [[package]] name = "paste" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "peeking_take_while" @@ -624,19 +838,20 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "pest" -version = "2.5.7" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1403e8401ad5dedea73c626b99758535b342502f8d1e361f4a2dd952749122" +checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -654,20 +869,29 @@ dependencies = [ "svg", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.38", + "syn 2.0.77", ] [[package]] @@ -677,23 +901,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -755,18 +979,32 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "regex" -version = "1.7.3" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ + "aho-corasick", + "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rstest" @@ -783,9 +1021,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -802,12 +1040,31 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + [[package]] name = "rustplotlib" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4326f7ac67e4ff419282ad12dabf1fcad09481a849b72108c890e01414ebb88a" +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + [[package]] name = "semver" version = "0.11.0" @@ -828,29 +1085,80 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.160" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_with" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.5.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +dependencies = [ + "darling", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.77", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simba" @@ -866,13 +1174,19 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "svg" version = "0.7.2" @@ -892,9 +1206,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -944,64 +1258,123 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.77", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.5.0", + "toml_datetime", + "winnow 0.5.40", +] [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap", + "indexmap 2.5.0", + "serde", + "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "uom" @@ -1015,9 +1388,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" @@ -1025,44 +1398,190 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-targets", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "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]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.4.1" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/dev-env b/dev-env new file mode 160000 index 00000000000..232438fdd52 --- /dev/null +++ b/dev-env @@ -0,0 +1 @@ +Subproject commit 232438fdd5244fc390c52083136eb71e7e63232c diff --git a/fbw-a380x/README.md b/fbw-a380x/README.md index 1f2409c2056..59427b006fe 100644 --- a/fbw-a380x/README.md +++ b/fbw-a380x/README.md @@ -56,8 +56,12 @@ These systems are currently not operational / these features are missing and sha - Complete SLAT/FLAP CTL implementation (adapted A32NX computers atm) ### ATA 28 Fuel - -- Automatic fuel transfer system +- Refuel Driver/Refuel Application placeholder pseudo-FQMS implementation (pre-cursor for realistic FQMS implementation while supporting instant load) + - CPIOM etc. not implemented yet. +- Automatic fuel transfer system - Not fully implemented yet i.e. AGT off when 2 engines on +- Manual refueling - Not supported yet +- Integrated Refuel Panel - Simulated in the systems but not modeled in the plane model, or fully connected to ELEC +- MFD entry - Not supported yet (ZFW/ZFWCG entry - Possible via EFB currently for testing) ### ATA 29 Hydraulic System diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt index 99fcf8c1436..6fca24c0466 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt @@ -203,23 +203,24 @@ Pump.18=False Pump.19=False Pump.20=False Pump.21=False -Tank.1=0 -Tank.2=1 -Tank.3=0.25 -Tank.4=0.25 -Tank.5=1 -Tank.6=1 -Tank.7=0.25 -Tank.8=0.25 -Tank.9=1 -Tank.10=0 -Tank.11=0 +Tank.1=0.4818560183048248291 +Tank.2=0.74762970209121704102 +Tank.3=0 +Tank.4=0.14810475707054138184 +Tank.5=0.72874546051025390625 +Tank.6=0.72874546051025390625 +Tank.7=0.14810457825660705566 +Tank.8=0 +Tank.9=0.74762970209121704102 +Tank.10=0.4818560183048248291 +Tank.11=0.55189013481140136719 Junction.7=1 Junction.8=1 Junction.9=1 [Systems.0] BatterySwitch=True +SeatBeltsSwitch=True StructuralDeiceSwitch=False PropDeiceSwitch=False StandbyVacuum=False @@ -234,7 +235,16 @@ TailhookState=0 FoldingWingsHandle=False FoldingWingsState=0, 0 +[Payload.0] +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 + [LocalVars.0] +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_EFIS_L_NAVAID_1_MODE=2 A32NX_EFIS_L_NAVAID_2_MODE=2 A32NX_EFIS_L_ND_MODE=3 @@ -294,6 +304,34 @@ A32NX_OVHD_HYD_ENG_4B_PUMP_PB_IS_AUTO = 1 A32NX_OVHD_PRESS_MAN_ALTITUDE_PB_IS_AUTO=1 A32NX_OVHD_PRESS_MAN_VS_CTL_PB_IS_AUTO=1 A32NX_OVHD_VENT_CAB_FANS_PB_IS_ON=1 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT index 24c830238b4..8c0d21e7e56 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT @@ -222,6 +222,10 @@ TailhookHandle=False TailhookState=0 FoldingWingsHandle=False FoldingWingsState=0, 0 +SeatBeltsSwitch=True + +[Payload.0] +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 [LocalVars.0] A320_Neo_AIRCOND_LVL_1=50 @@ -241,6 +245,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1 A32NX_BARO_BRIGHTNESS=0.75 A32NX_CALLS_EMERLOCK_TOGGLE=1 A32NX_CALLS_EMER_ON=0 +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_CARGOSMOKE_AFT_DISCHARGED = 0 A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0 A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0 @@ -357,6 +367,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0 A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5 A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5 A32NX_PARK_BRAKE_LEVER_POS=0 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT index deef85c3ed9..48bc7b56f3b 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT @@ -224,6 +224,7 @@ TailhookState=0 FoldingWingsHandle=False FoldingWingsState=0, 0 ExternalPowerSwitch=False +SeatBeltsSwitch=False [LocalVars.0] A320_Neo_AIRCOND_LVL_1=50 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT index 6b0cba85026..9b9d548c0cf 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT @@ -203,17 +203,17 @@ Pump.18=False Pump.19=False Pump.20=False Pump.21=False -Tank.1=0 -Tank.2=1 -Tank.3=0.25 -Tank.4=0.25 -Tank.5=1 -Tank.6=1 -Tank.7=0.25 -Tank.8=0.25 -Tank.9=1 -Tank.10=0 -Tank.11=0 +Tank.1=0.4818560183048248291 +Tank.2=0.74762970209121704102 +Tank.3=0 +Tank.4=0.14810475707054138184 +Tank.5=0.72874546051025390625 +Tank.6=0.72874546051025390625 +Tank.7=0.14810457825660705566 +Tank.8=0 +Tank.9=0.74762970209121704102 +Tank.10=0.4818560183048248291 +Tank.11=0.55189013481140136719 Junction.7=1 Junction.8=1 Junction.9=1 @@ -234,6 +234,9 @@ TailhookState=0 FoldingWingsHandle=False FoldingWingsState=0, 0 +[Payload.0] +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 + [LocalVars.0] A320_Neo_AIRCOND_LVL_1=50 A320_Neo_AIRCOND_LVL_2=50 @@ -252,6 +255,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1 A32NX_BARO_BRIGHTNESS=0.75 A32NX_CALLS_EMERLOCK_TOGGLE=1 A32NX_CALLS_EMER_ON=0 +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_CARGOSMOKE_AFT_DISCHARGED = 0 A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0 A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0 @@ -391,6 +400,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0 A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5 A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5 A32NX_PARK_BRAKE_LEVER_POS=0 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT index e1429500b32..9ede50cea2c 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT @@ -219,6 +219,7 @@ Junction.9=1 [Systems.0] BatterySwitch=True +SeatBeltsSwitch=True StructuralDeiceSwitch=False PropDeiceSwitch=False StandbyVacuum=False @@ -233,6 +234,9 @@ TailhookState=0 FoldingWingsHandle=False FoldingWingsState=0, 0 +[Payload.0] +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 + [LocalVars.0] A320_NEO_CDU_START_PAGE=35 A320_Neo_AIRCOND_LVL_1=50 @@ -252,6 +256,12 @@ A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=1 A32NX_BARO_BRIGHTNESS=0.75 A32NX_CALLS_EMERLOCK_TOGGLE=1 A32NX_CALLS_EMER_ON=0 +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_CARGOSMOKE_AFT_DISCHARGED = 0 A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0 A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0 @@ -390,6 +400,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0 A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5 A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5 A32NX_PARK_BRAKE_LEVER_POS=0 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 @@ -402,6 +440,7 @@ A32NX_RCDR_TEST = 0 A32NX_SEC_1_PUSHBUTTON_PRESSED=1 A32NX_SEC_2_PUSHBUTTON_PRESSED=1 A32NX_SEC_3_PUSHBUTTON_PRESSED=1 +A32NX_SPOILERS_ARMED=1 A32NX_START_STATE=8 A32NX_SVGEINT_OVRD_ON = 0 A32NX_SWITCH_RADAR_PWS_Position=1 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml index cc6cc057007..de2e6dd6e95 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml @@ -2071,9 +2071,8 @@ - (L:XMLVAR_SWITCH_OVHD_INTLT_SEATBELT_Position) 1 == (A:CABIN SEATBELTS ALERT - SWITCH, bool) 0 == and if{ - (>K:CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE) + (L:XMLVAR_SWITCH_OVHD_INTLT_SEATBELT_Position) (A:CABIN SEATBELTS ALERT SWITCH, bool) != if{ + (>K:CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE) } diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT index ae03e1e6f64..95cfbb4e069 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT @@ -212,23 +212,24 @@ Pump.18=True Pump.19=True Pump.20=True Pump.21=True -Tank.1=0 -Tank.2=1 -Tank.3=0.25 -Tank.4=0.25 -Tank.5=1 -Tank.6=1 -Tank.7=0.25 -Tank.8=0.25 -Tank.9=1 -Tank.10=0 -Tank.11=0 +Tank.1=0.4818560183048248291 +Tank.2=0.74762970209121704102 +Tank.3=0 +Tank.4=0.14810475707054138184 +Tank.5=0.72874546051025390625 +Tank.6=0.72874546051025390625 +Tank.7=0.14810457825660705566 +Tank.8=0 +Tank.9=0.74762970209121704102 +Tank.10=0.4818560183048248291 +Tank.11=0.55189013481140136719 Junction.7=1 Junction.8=1 Junction.9=1 [Systems.0] BatterySwitch=True +SeatBeltsSwitch=True StructuralDeiceSwitch=False PropDeiceSwitch=False StandbyVacuum=False @@ -244,7 +245,7 @@ FoldingWingsHandle=False FoldingWingsState=0, 0 [Payload.0] -PayloadList = 9200,18000,12000,10000,2000,5000,3000,3000,3000,3000,1,1 +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 [LocalVars.0] A32NX_AIDS_PRINT_ON = 0 @@ -259,6 +260,12 @@ A32NX_BARO_BRIGHTNESS=0.75 A32NX_CABIN_READY=1 A32NX_CALLS_EMERLOCK_TOGGLE=1 A32NX_CALLS_EMER_ON=0 +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_CARGOSMOKE_AFT_DISCHARGED = 0 A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0 A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0 @@ -404,6 +411,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0 A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5 A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5 A32NX_PARK_BRAKE_LEVER_POS=1 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 @@ -416,11 +451,16 @@ A32NX_RCDR_TEST = 0 A32NX_SEC_1_PUSHBUTTON_PRESSED=1 A32NX_SEC_2_PUSHBUTTON_PRESSED=1 A32NX_SEC_3_PUSHBUTTON_PRESSED=1 +A32NX_FLAPS_HANDLE_INDEX=1 +A32NX_FLAPS_HANDLE_PERCENT=0.25 +A32NX_SPOILERS_ARMED=1 A32NX_START_STATE=4 A32NX_SVGEINT_OVRD_ON = 0 A32NX_SWITCH_RADAR_PWS_Position=1 A32NX_SWITCH_TCAS_Position=2 A32NX_SWITCH_TCAS_TRAFFIC_POSITION = 2 +A32NX_THS_GREEN_SERVO_SOLENOID_ENERGIZED=1 +A32NX_THS_GREEN_COMMANDED_POSITION=-2.0075902938842773438 A32NX_TO_CONFIG_NORMAL=1 A32NX_VENTILATION_BLOWER_FAULT=0 A32NX_VENTILATION_BLOWER_TOGGLE=1 @@ -531,6 +571,7 @@ VSSlotIndex=2 SpoilersHandle=000.00 SpoilersArmed=True FlapsHandle=020.00 +ElevatorTrim=060.04 LeftFlap=014.28 RightFlap=014.28 GearsHandle=000.01 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt index 9f883d39e31..485c5bb7c48 100644 --- a/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt +++ b/fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt @@ -237,6 +237,9 @@ Potentiometer.97=0 Potentiometer.98=0.5 Potentiometer.99=0.5 +[Payload.0] +PayloadList=1296.3,4629.7,7037.2,8703.8,7037.2,7777.9,7037.2,6296.4,7037.2,7037.2,2222.3,5370.5,4629.7,3148.2,10491.8,7456.0, 923.7, 1.0, 1.0 + [LocalVars.0] A320_Neo_AIRCOND_LVL_1=50 A320_Neo_AIRCOND_LVL_2=50 @@ -251,6 +254,12 @@ A32NX_ATT_HDG_SWITCHING_KNOB=1 A32NX_AVIONICS_COMPLT_ON = 0 A32NX_AVIONICS_STARTUP_SOUNDS_INHIBIT=0 A32NX_BARO_BRIGHTNESS=0.75 +A32NX_CARGO_FWD=4759 +A32NX_CARGO_FWD_DESIRED=4759 +A32NX_CARGO_AFT=3382 +A32NX_CARGO_AFT_DESIRED=3382 +A32NX_CARGO_BULK=419 +A32NX_CARGO_BULK_DESIRED=419 A32NX_CARGOSMOKE_AFT_DISCHARGED = 0 A32NX_CARGOSMOKE_DISCH1LOCK_TOGGLE=0 A32NX_CARGOSMOKE_DISCH2LOCK_TOGGLE=0 @@ -384,6 +393,34 @@ A32NX_OXYGEN_TMR_RESET_FAULT = 0 A32NX_PANEL_DCDU_L_BRIGHTNESS=0.5 A32NX_PANEL_DCDU_R_BRIGHTNESS=0.5 A32NX_PARK_BRAKE_LEVER_POS=0 +A32NX_PAX_MAIN_FWD_A=35160464 +A32NX_PAX_MAIN_FWD_A_DESIRED=35160464 +A32NX_PAX_MAIN_FWD_B=268430719 +A32NX_PAX_MAIN_FWD_B_DESIRED=268430719 +A32NX_PAX_MAIN_MID_1A=1097363095551 +A32NX_PAX_MAIN_MID_1A_DESIRED=1097363095551 +A32NX_PAX_MAIN_MID_1B=2251796592328701 +A32NX_PAX_MAIN_MID_1B_DESIRED=2251796592328701 +A32NX_PAX_MAIN_MID_1C=17589501640446 +A32NX_PAX_MAIN_MID_1C_DESIRED=17589501640446 +A32NX_PAX_MAIN_MID_2A=558386550667247 +A32NX_PAX_MAIN_MID_2A_DESIRED=558386550667247 +A32NX_PAX_MAIN_MID_2B=1647119957759 +A32NX_PAX_MAIN_MID_2B_DESIRED=1647119957759 +A32NX_PAX_MAIN_MID_2C=135157121023 +A32NX_PAX_MAIN_MID_2C_DESIRED=135157121023 +A32NX_PAX_MAIN_AFT_A=4361203744767 +A32NX_PAX_MAIN_AFT_A_DESIRED=4361203744767 +A32NX_PAX_MAIN_AFT_B=2196875509695 +A32NX_PAX_MAIN_AFT_B_DESIRED=2196875509695 +A32NX_PAX_UPPER_FWD=15615 +A32NX_PAX_UPPER_FWD_DESIRED=15615 +A32NX_PAX_UPPER_MID_A=1073741819 +A32NX_PAX_UPPER_MID_A_DESIRED=1073741819 +A32NX_PAX_UPPER_MID_B=268432127 +A32NX_PAX_UPPER_MID_B_DESIRED=268432127 +A32NX_PAX_UPPER_AFT=261631 +A32NX_PAX_UPPER_AFT_DESIRED=261631 A32NX_PRIM_1_PUSHBUTTON_PRESSED=1 A32NX_PRIM_2_PUSHBUTTON_PRESSED=1 A32NX_PRIM_3_PUSHBUTTON_PRESSED=1 @@ -399,6 +436,8 @@ A32NX_SEC_3_PUSHBUTTON_PRESSED=1 A32NX_START_STATE=3 A32NX_SVGEINT_OVRD_ON = 0 A32NX_SWITCH_TCAS_TRAFFIC_POSITION = 2 +A32NX_THS_GREEN_SERVO_SOLENOID_ENERGIZED=1 +A32NX_THS_GREEN_COMMANDED_POSITION=-2.0075902938842773438 A380X_OVHD_ELEC_BAT_SELECTOR_KNOB=2 STROBE_1_Auto=1 XMLVAR_A320_WEATHERRADAR_MODE = 1 @@ -481,9 +520,10 @@ VSSlotIndex=2 [Controls.0] SpoilersHandle=000.00 SpoilersArmed=False -FlapsHandle=000.00 -LeftFlap=000.00 -RightFlap=000.00 +FlapsHandle=020.00 +ElevatorTrim=060.04 +LeftFlap=014.28 +RightFlap=014.28 GearsHandle=000.01 Gear1=100.00 Gear2=100.00 diff --git a/fbw-a380x/src/systems/systems-host/index.ts b/fbw-a380x/src/systems/systems-host/index.ts index e9d9c4af550..af6d2caf391 100644 --- a/fbw-a380x/src/systems/systems-host/index.ts +++ b/fbw-a380x/src/systems/systems-host/index.ts @@ -17,6 +17,7 @@ import { } from '@microsoft/msfs-sdk'; import { LegacyGpws } from 'systems-host/systems/LegacyGpws'; import { LegacyFwc } from 'systems-host/systems/LegacyFwc'; +import { LegacyFuelInit } from 'systems-host/systems/LegacyFuelInit'; import { LegacySoundManager } from 'systems-host/systems/LegacySoundManager'; import { VhfRadio } from 'systems-host/systems/Communications/VhfRadio'; import { FailuresConsumer, VhfComIndices } from '@flybywiresim/fbw-sdk'; @@ -111,6 +112,7 @@ class SystemsHost extends BaseInstrument { this.backplane.addPublisher('RmpAmuBusPublisher', this.rmpAmuBusPublisher); this.backplane.addPublisher('CameraPublisher', this.cameraPublisher); this.backplane.addPublisher('PowerPublisher', this.powerPublisher); + this.backplane.addInstrument('LegacyFuel', new LegacyFuelInit()); this.hEventPublisher = new HEventPublisher(this.bus); this.fwc = new LegacyFwc(); diff --git a/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts b/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts new file mode 100644 index 00000000000..52bcd94e3eb --- /dev/null +++ b/fbw-a380x/src/systems/systems-host/systems/LegacyFuelInit.ts @@ -0,0 +1,16 @@ +import { Instrument } from '@microsoft/msfs-sdk'; + +/** + * This is needed to initialize the desired fuel L:Var on load to sync with the fuel quantity as per the fuel state management per ATC ID + * This is a temporary solution until all fuel state related ops are contained in the same module. + */ +export class LegacyFuelInit implements Instrument { + init() { + const fuelWeight = SimVar.GetSimVarValue('FUEL TOTAL QUANTITY WEIGHT', 'kilograms'); + SimVar.SetSimVarValue('L:A32NX_FUEL_DESIRED', 'kilograms', fuelWeight); + } + + public onUpdate(): void { + // noop + } +} diff --git a/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml b/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml index fe1b7175a41..f5f467527ee 100644 --- a/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml +++ b/fbw-a380x/src/wasm/systems/a380_systems/Cargo.toml @@ -10,6 +10,9 @@ nalgebra = "0.25.0" ntest = "0.7.2" fxhash = "0.2.1" rand = "0.8.0" +serde = { version = "1.0.210", features = ["derive"] } +serde_with = { version = "3.9.0", features = ["std"] } +toml = { version = "0.8.19", features = ["parse"] } systems = { path = "../../../../../fbw-common/src/wasm/systems/systems" } [dev-dependencies] diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs index e01d2c99735..4247161bb6d 100644 --- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs +++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/fuel_quantity_management_system.rs @@ -2,6 +2,7 @@ use std::{collections::HashMap, time::Duration}; use crate::systems::simulation::SimulationElement; use nalgebra::Vector3; +use serde::Deserialize; use systems::{ fuel::{self, FuelInfo, FuelSystem, FuelTank, RefuelRate}, pneumatic::EngineState, @@ -19,6 +20,8 @@ use uom::si::{ use super::A380FuelTankType; +use serde_with::{serde_as, DisplayFromStr}; + #[derive(Clone, Copy)] enum ModeSelect { AutoRefuel, @@ -28,6 +31,31 @@ enum ModeSelect { _Transfer, } +#[derive(Deserialize)] +struct ZfwParams { + target_zfw_cg: Vec, + target_zfw: Vec, +} + +#[derive(Deserialize)] +struct ZfwRange { + start: u32, + end: u32, +} + +#[serde_as] +#[derive(Deserialize)] +struct TrimTankTables { + #[serde_as(as = "Vec>")] + tables: Vec>>, +} + +#[derive(Deserialize)] +struct TrimTankMapping { + params: ZfwParams, + trim_tank_targets: TrimTankTables, +} + pub struct RefuelPanelInput { total_desired_fuel_id: VariableIdentifier, total_desired_fuel_input: Mass, @@ -46,6 +74,13 @@ pub struct RefuelPanelInput { engine_state_ids: [VariableIdentifier; 4], engine_states: [EngineState; 4], + + // TODO: Replace when proper implementation is done + target_zero_fuel_weight: Mass, + target_zero_fuel_weight_id: VariableIdentifier, + + target_zero_fuel_weight_cg_mac: f64, + target_zero_fuel_weight_cg_mac_id: VariableIdentifier, } impl RefuelPanelInput { pub fn new(context: &mut InitContext) -> Self { @@ -66,6 +101,13 @@ impl RefuelPanelInput { engine_state_ids: [1, 2, 3, 4] .map(|id| context.get_identifier(format!("ENGINE_STATE:{id}"))), engine_states: [EngineState::Off; 4], + + target_zero_fuel_weight: Mass::new::(300000.), + target_zero_fuel_weight_id: context.get_identifier("AIRFRAME_ZFW_DESIRED".to_owned()), + + target_zero_fuel_weight_cg_mac: 36.5, + target_zero_fuel_weight_cg_mac_id: context + .get_identifier("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED".to_owned()), } } @@ -90,6 +132,7 @@ impl RefuelPanelInput { } fn refuel_is_enabled(&self) -> bool { + // TODO: Should this be if two engines are running instead of just one? self.refuel_status && self .engine_states @@ -98,6 +141,14 @@ impl RefuelPanelInput { && self.is_on_ground && self.ground_speed < Velocity::new::(0.1) } + + fn target_zero_fuel_weight(&self) -> Mass { + self.target_zero_fuel_weight + } + + fn target_zero_fuel_weight_cg_mac(&self) -> f64 { + self.target_zero_fuel_weight_cg_mac + } } impl SimulationElement for RefuelPanelInput { fn read(&mut self, reader: &mut SimulatorReader) { @@ -114,6 +165,9 @@ impl SimulationElement for RefuelPanelInput { { *state = reader.read(id); } + self.target_zero_fuel_weight = + Mass::new::(reader.read(&self.target_zero_fuel_weight_id)); + self.target_zero_fuel_weight_cg_mac = reader.read(&self.target_zero_fuel_weight_cg_mac_id); } fn write(&self, writer: &mut SimulatorWriter) { @@ -165,6 +219,14 @@ impl IntegratedRefuelPanel { fn refuel_is_enabled(&self) -> bool { self.input.refuel_is_enabled() } + + fn target_zero_fuel_weight(&self) -> Mass { + self.input.target_zero_fuel_weight() + } + + fn target_zero_fuel_weight_cg_mac(&self) -> f64 { + self.input.target_zero_fuel_weight_cg_mac() + } } impl SimulationElement for IntegratedRefuelPanel { fn receive_power(&mut self, buses: &impl ElectricalBuses) { @@ -177,13 +239,17 @@ impl SimulationElement for IntegratedRefuelPanel { } } +const TRIM_TANK_TOML: &str = include_str!("./trim_tank_targets.toml"); pub struct RefuelApplication { refuel_driver: RefuelDriver, + trim_tank_map: TrimTankMapping, } impl RefuelApplication { pub fn new(_context: &mut InitContext, _powered_by: ElectricalBusType) -> Self { Self { refuel_driver: RefuelDriver::new(), + trim_tank_map: toml::from_str(TRIM_TANK_TOML) + .expect("Failed to parse trim tank TOML file"), } } @@ -194,8 +260,12 @@ impl RefuelApplication { refuel_panel_input: &mut IntegratedRefuelPanel, ) { // Automatic Refueling - let desired_quantities = - self.calculate_auto_refuel(refuel_panel_input.total_desired_fuel()); + let desired_quantities = self.calculate_auto_refuel( + refuel_panel_input.total_desired_fuel(), + // TODO FIXME: Add values from either MFD (or EFB) + refuel_panel_input.target_zero_fuel_weight(), + refuel_panel_input.target_zero_fuel_weight_cg_mac(), + ); // TODO: Uncomment when IS_SIM_READY variable is implemented // if !context.is_sim_ready() { @@ -237,10 +307,73 @@ impl RefuelApplication { } } + fn lookup_trim_fuel_from_target_fuel_range( + target_zfw_cg_keys: &[u32], + target_fuel_range: &[u32], + zero_fuel_weight_cg_rounded: u32, + ) -> Mass { + let cg_index = target_zfw_cg_keys + .iter() + .position(|&x| x == zero_fuel_weight_cg_rounded) + .unwrap_or_default(); + Mass::new::(target_fuel_range[cg_index] as f64) + } + + fn get_target_fuel_range( + zfw_category: &HashMap>, + total_desired_fuel_rounded: u32, + ) -> &Vec { + let min_fuel_desired = *zfw_category.keys().min().unwrap(); + let max_fuel_desired = *zfw_category.keys().max().unwrap(); + + zfw_category + .get(&total_desired_fuel_rounded.clamp(min_fuel_desired, max_fuel_desired)) + .unwrap() + } + + fn calculate_trim_fuel( + &mut self, + total_desired_fuel: Mass, + zero_fuel_weight: Mass, + zero_fuel_weight_cg_percent_mac: f64, + ) -> Mass { + // Init Inputs + let total_desired_fuel_rounded = + ((total_desired_fuel.get::() / 1000.0).floor() * 1000.0) as u32; + let zero_fuel_weight_cg_rounded = (zero_fuel_weight_cg_percent_mac).floor() as u32; + let target_zfw = &self.trim_tank_map.params.target_zfw; + let trim_tank_tables = &self.trim_tank_map.trim_tank_targets.tables; + + // Find the correct table to use based on ZFW + for (range, zfw_category) in target_zfw.iter().zip(trim_tank_tables) { + if (range.start as f64..=range.end as f64).contains(&zero_fuel_weight.get::()) + { + // Fetch 1) Possible ZFWCG% column values and 2) The target fuel row values + let target_zfw_cg_keys = &self.trim_tank_map.params.target_zfw_cg; + let target_fuel_range = + Self::get_target_fuel_range(zfw_category, total_desired_fuel_rounded); + + // Then, given the current target fuel (row). Shift this value depending on ZFWCG% (column) to find trim fuel value. + return Self::lookup_trim_fuel_from_target_fuel_range( + target_zfw_cg_keys, + target_fuel_range, + zero_fuel_weight_cg_rounded, + ); + } + } + Mass::default() + } + pub fn calculate_auto_refuel( &mut self, total_desired_fuel: Mass, + zero_fuel_weight: Mass, + zero_fuel_weight_cg_percent_mac: f64, ) -> HashMap { + // Note: Does not account for unusable fuel, or non-fixed H-ARM + + // TODO FIXME: If no input is provided from the MFD, The default values are ZFW = 300 000 kg (661 386 lb), and ZFCG = 36.5 %RC. + let a = Mass::new::(18000.); let b = Mass::new::(26000.); let c = Mass::new::(36000.); @@ -250,20 +383,11 @@ impl RefuelApplication { let g = Mass::new::(215702.); let h = Mass::new::(223028.); - let trim_1 = Mass::new::(4000.); - let trim_2 = Mass::new::(8000.); - let trim_max = Mass::new::(19026.); - - // TODO: Trim tank logic - let trim_fuel = match total_desired_fuel { - x if x <= f => Mass::default(), - x if x <= f + trim_1 => x - f, - x if x <= g => trim_1, - x if x <= g + trim_2 => trim_1 + total_desired_fuel - g, - x if x <= h => trim_2, - x if x <= h + (trim_max - trim_2) => trim_2 + total_desired_fuel - h, - _ => trim_max, - }; + let trim_fuel = self.calculate_trim_fuel( + total_desired_fuel, + zero_fuel_weight, + zero_fuel_weight_cg_percent_mac, + ); let wing_fuel = total_desired_fuel - trim_fuel; @@ -324,7 +448,6 @@ impl RefuelApplication { x if x <= h => mid_tank_f, _ => mid_tank_f + (wing_fuel - h) / 10., }; - // TODO: maximum amount per tick and use efb refueling rate [ (A380FuelTankType::LeftOuter, outer_tank), @@ -367,6 +490,10 @@ impl RefuelDriver { refuel_panel_input: &mut IntegratedRefuelPanel, desired_quantities: HashMap, ) { + // TODO: Proper fuel transfer logic from proper fuel ports into the correct fuel tanks (LMID/LINNER RMID/RINNER). Replace naive method below. + // TODO: Deprecating this realistically timed refueling function from refuel driver, which will only be used for instant refueling, into a proper FQMS implementation. + // TODO: Account for AGT (Auto Ground Transfer) logic, disable when 2 engines are running (only when realistic setting is used) + let speed_multi = if is_fast { Self::FAST_SPEED_FACTOR } else { 1. }; let t = delta_time.as_secs_f64(); diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs index 379901edb91..69ee4ad51b2 100644 --- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs +++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/mod.rs @@ -65,6 +65,7 @@ pub struct A380Fuel { } impl A380Fuel { + // TODO: Move to toml cfg pub const A380_FUEL: [FuelInfo<'static>; 11] = [ FuelInfo { // LEFT_OUTER - Capacity: 2731.5 diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs index 2bfe3fb974b..4125e8a40ef 100644 --- a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs +++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/test.rs @@ -164,30 +164,40 @@ impl FuelTestBed { #[allow(dead_code)] fn desired_fuel_max(mut self) -> Self { self.write_by_name("FUEL_DESIRED", 260059.); + self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.); + self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5); self } #[allow(dead_code)] fn desired_fuel_min(mut self) -> Self { self.write_by_name("FUEL_DESIRED", 0.); + self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.); + self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5); self } #[allow(dead_code)] fn desired_fuel_50000(mut self) -> Self { self.write_by_name("FUEL_DESIRED", 50000.); + self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.); + self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5); self } #[allow(dead_code)] fn desired_fuel_100000(mut self) -> Self { self.write_by_name("FUEL_DESIRED", 100000.); + self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.); + self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5); self } #[allow(dead_code)] fn desired_fuel_200000(mut self) -> Self { self.write_by_name("FUEL_DESIRED", 200000.); + self.write_by_name("AIRFRAME_ZFW_DESIRED", 300000.); + self.write_by_name("AIRFRAME_ZFW_CG_PERCENT_MAC_DESIRED", 36.5); self } @@ -266,70 +276,58 @@ fn assert_fuel_quantity_0(test_bed: &FuelTestBed) { fn assert_fuel_quantity_50000(test_bed: &FuelTestBed) { let mut expected_quantities = HashMap::new(); + expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(3000.)); expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(5500.)); expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(5500.)); - expected_quantities.insert( - A380FuelTankType::FeedOne, - Mass::new::(7000. + 3000. * 20558. / 84788.), - ); - expected_quantities.insert( - A380FuelTankType::FeedTwo, - Mass::new::(7000. + 3000. * 21836. / 84788.), - ); - expected_quantities.insert( - A380FuelTankType::FeedThree, - Mass::new::(7000. + 3000. * 21836. / 84788.), - ); - expected_quantities.insert( - A380FuelTankType::FeedFour, - Mass::new::(7000. + 3000. * 20558. / 84788.), - ); - expected_quantities.insert(A380FuelTankType::Trim, Mass::default()); + expected_quantities.insert(A380FuelTankType::FeedOne, Mass::new::(7000.)); + expected_quantities.insert(A380FuelTankType::FeedTwo, Mass::new::(7000.)); + expected_quantities.insert(A380FuelTankType::FeedThree, Mass::new::(7000.)); + expected_quantities.insert(A380FuelTankType::FeedFour, Mass::new::(7000.)); assert_fuel_quantity(test_bed, expected_quantities); } fn assert_fuel_quantity_100000(test_bed: &FuelTestBed) { let mut expected_quantities = HashMap::new(); + expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(8500.)); expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(5500.)); expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(5500.)); expected_quantities.insert( A380FuelTankType::FeedOne, - Mass::new::(7000. + 53000. * 20558. / 84788.), + Mass::new::(7000. + 44500. * 20558. / 84788.), ); expected_quantities.insert( A380FuelTankType::FeedTwo, - Mass::new::(7000. + 53000. * 21836. / 84788.), + Mass::new::(7000. + 44500. * 21836. / 84788.), ); expected_quantities.insert( A380FuelTankType::FeedThree, - Mass::new::(7000. + 53000. * 21836. / 84788.), + Mass::new::(7000. + 44500. * 21836. / 84788.), ); expected_quantities.insert( A380FuelTankType::FeedFour, - Mass::new::(7000. + 53000. * 20558. / 84788.), + Mass::new::(7000. + 44500. * 20558. / 84788.), ); - expected_quantities.insert(A380FuelTankType::Trim, Mass::default()); assert_fuel_quantity(test_bed, expected_quantities); } fn assert_fuel_quantity_200000(test_bed: &FuelTestBed) { let mut expected_quantities = HashMap::new(); + expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(13500.)); expected_quantities.insert(A380FuelTankType::LeftOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::RightOuter, Mass::new::(4000.)); expected_quantities.insert(A380FuelTankType::LeftMid, Mass::new::(27127.)); expected_quantities.insert(A380FuelTankType::RightMid, Mass::new::(27127.)); - expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(24479.)); - expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(24479.)); + expected_quantities.insert(A380FuelTankType::LeftInner, Mass::new::(19729.)); + expected_quantities.insert(A380FuelTankType::RightInner, Mass::new::(19729.)); expected_quantities.insert(A380FuelTankType::FeedOne, Mass::new::(20558.)); expected_quantities.insert(A380FuelTankType::FeedTwo, Mass::new::(21836.)); expected_quantities.insert(A380FuelTankType::FeedThree, Mass::new::(21836.)); expected_quantities.insert(A380FuelTankType::FeedFour, Mass::new::(20558.)); - expected_quantities.insert(A380FuelTankType::Trim, Mass::new::(4000.)); assert_fuel_quantity(test_bed, expected_quantities); } diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml new file mode 100644 index 00000000000..54a78765419 --- /dev/null +++ b/fbw-a380x/src/wasm/systems/a380_systems/src/fuel/trim_tank_targets.toml @@ -0,0 +1,16 @@ +[params] +target_zfw_cg = [29,30,31,32,33,34,35,36,37,38,39,40,41,42,43] +target_zfw = [ + { start = 270000, end = 292599 }, + { start = 292600, end = 315099 }, + { start = 315100, end = 337599 }, + { start = 337600, end = 372000 } +] + +[trim_tank_targets] +tables = [ + {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3000,2000,1000,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,4500,3000,2000,1000,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,5500,4500,3000,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,5500,4500,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,7000,5500,4500,3500,2000,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,8000,7000,5500,4500,3500,2000,1000,0,0,0], 57000 = [10000,10000,10000,10000,9000,8000,7000,6000,4500,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0,0], 59000 = [12000,12000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0,0], 60000 = [13000,13000,11500,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0,0], 61000 = [14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0,0], 62000 = [14000,13000,12000,10500,9500,8500,7000,6000,5000,4000,2500,1500,0,0,0], 63000 = [14000,13000,12000,10500,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 64000 = [14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 65000 = [14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0,0], 66000 = [14500,13000,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 67000 = [14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 68000 = [14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0,0], 69000 = [14500,13500,12000,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 70000 = [14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 71000 = [14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0,0], 72000 = [14500,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 73000 = [15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 74000 = [15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0,0], 75000 = [15000,13500,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 76000 = [15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 77000 = [15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0,0], 78000 = [15000,14000,12500,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 79000 = [15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 80000 = [15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0,0], 81000 = [15000,14000,13000,11500,10500,9500,8500,7000,6000,5000,3500,2500,1000,0,0], 82000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 83000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 84000 = [15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1500,0,0], 85000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,0,0], 86000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0], 87000 = [15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,500,0], 88000 = [15500,14500,13000,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 89000 = [15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 90000 = [15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500,0], 91000 = [15500,14500,13500,12000,11000,10000,9000,7500,6500,5500,4000,3000,1500,500,0], 92000 = [16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0], 93000 = [16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,2000,500,0], 94000 = [16000,14500,13500,12500,11000,10000,9000,8000,6500,5500,4500,3000,2000,500,0], 95000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500,0], 96000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0], 97000 = [16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,1000,0], 98000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000,0], 99000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0], 100000 = [16000,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000,1000,0], 101000 = [16000,15000,14000,12500,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000,0], 102000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2000,1000,0], 103000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0], 104000 = [16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2500,1000,0], 105000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000,0], 106000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 107000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 108000 = [16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500,1000,0], 109000 = [16500,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000,0], 110000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 111000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 112000 = [16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500,0], 113000 = [17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,2500,1500,0], 114000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500,1500,0], 115000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500,1500,0], 116000 = [17000,15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500,1500,500], 117000 = [17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500,1500,500], 118000 = [17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,3000,1500,500], 119000 = [17000,16000,14500,13500,12500,11000,10000,8500,7500,6500,5000,4000,3000,1500,500], 120000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000,1500,500], 121000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000,1500,500], 122000 = [17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,1500,500], 123000 = [17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500,4000,3000,1500,500], 124000 = [17000,16000,15000,13500,12500,11500,10000,9000,7500,6500,5500,4000,3000,1500,500], 125000 = [17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 126000 = [17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 127000 = [17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000,3000,2000,500], 128000 = [17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500], 129000 = [17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000,500], 130000 = [17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000,2000,500], 131000 = [17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000,2000,500], 132000 = [17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,500], 133000 = [17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000,500], 134000 = [17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000], 135000 = [17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3000,2000,1000], 136000 = [17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500,4500,3000,2000,1000], 137000 = [17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 138000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 139000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 140000 = [17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,5500,4500,3500,2000,1000], 141000 = [17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 142000 = [17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 143000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 144000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 145000 = [18000,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 146000 = [18000,16500,15500,14500,13000,12000,10500,9500,8000,7000,6000,4500,3500,2000,1000], 147000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 148000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 149000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2000,1000], 150000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000], 151000 = [18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500,1000], 152000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,4500,3500,2500,1000], 153000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,4500,3500,2500,1000], 154000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 155000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 156000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 157000 = [18000,17000,15500,14500,13000,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 158000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 159000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7000,6000,5000,3500,2500,1000], 160000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1000], 161000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 162000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 163000 = [18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,3500,2500,1500], 164000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,3000,1500], 165000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000,3000,2000], 166000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5000,4000,3000,2000], 167000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5500,4000,3000,2000], 168000 = [18000,17000,16000,14500,13500,12000,11000,9500,8500,7500,6500,5500,4500,3000,2000], 169000 = [18000,17000,16000,14500,13500,12000,11000,10000,9000,7500,6500,5500,4500,3500,2000], 170000 = [18000,17000,16000,14500,13500,12000,11000,10000,9000,8000,6500,5500,4500,3500,2500], 171000 = [18500,17000,16000,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500,3500,2500], 172000 = [18500,17000,16000,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500,3500,2500], 173000 = [18500,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000,3500,2500], 174000 = [18500,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000,4000,2500], 175000 = [18500,17000,16000,15000,14000,12500,11500,10500,9500,8500,7500,6000,5000,4000,3000], 176000 = [18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6500,5000,4000,3000], 177000 = [18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5500,4000,3000], 178000 = [18500,17500,16500,15000,14000,13000,12000,11000,10000,8500,7500,6500,5500,4500,3000], 179000 = [18500,17500,16500,15500,14000,13000,12000,11000,10000,9000,7500,6500,5500,4500,3500], 180000 = [18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,8000,6500,5500,4500,3500], 181000 = [18500,17500,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500,3500], 182000 = [18500,18000,16500,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500,3500], 183000 = [18500,18000,17000,15500,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000,3500], 184000 = [18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000,4000], 185000 = [18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000,5000,4000], 186000 = [18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000,5000,4000], 187000 = [18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5000,4000], 188000 = [18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500,5500,4000], 189000 = [18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500,5500,4500], 190000 = [18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500,5500,4500], 191000 = [18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500,5500,4500], 192000 = [18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500,4500], 193000 = [18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000,4500], 194000 = [18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000,5000], 195000 = [18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000,5000], 196000 = [18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000,5000], 197000 = [18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000,5000], 198000 = [18500,18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500,5000], 199000 = [18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500,5500], 200000 = [18500,18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500,5500], 201000 = [18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500,5500], 202000 = [18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500,5500], 203000 = [18500,18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000,5500], 204000 = [18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000,6000], 205000 = [18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000,6000], 206000 = [18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8000,7000,6000], 207000 = [18500,18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7000,6000], 208000 = [18500,18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500,6000], 209000 = [18500,18500,18500,18500,17500,16000,15000,14000,13000,12000,10500,9500,8500,7500,6500], 210000 = [18500,18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,9500,8500,7500,6500], 211000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,11000,10000,8500,7500,6500], 212000 = [18500,18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500,6500], 213000 = [18500,18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000,6500], 214000 = [18500,18500,18500,18500,18000,16500,15500,14500,13500,12500,11000,10000,9000,8000,7000], 215000 = [18500,18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,8000,7000], 216000 = [18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,9000,8000,7000], 217000 = [18500,18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10500,9500,8500,7000], 218000 = [18500,18500,18500,18500,18000,17000,16000,15000,14000,12500,11500,10500,9500,8500,7500], 219000 = [18500,18500,18500,18500,18500,17000,16000,15000,14000,13000,11500,10500,9500,8500,7500], 220000 = [18500,18500,18500,18500,18500,17500,16000,15000,14000,13000,12000,11000,9500,8500,7500], 221000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,12000,11000,10000,8500,7500], 222000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13000,12000,11000,10000,9000,7500], 223000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13500,12000,11000,10000,9000,8000], 224000 = [18500,18500,18500,18500,18500,17500,16500,15500,14500,13500,12500,11000,10000,9000,8000], 225000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13500,12500,11500,10000,9000,7500], 226000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11500,10500,8500,7000], 227000 = [18500,18500,18500,18500,18500,18000,17000,16000,15000,13500,12500,11500,10000,8000,6500], 228000 = [18500,18500,18500,18500,18500,18000,17000,16000,15000,14000,13000,11500,9500,7500,6000], 229000 = [18500,18500,18500,18500,18500,18500,17000,16000,15000,14000,12500,11000,9000,7000,5500], 230000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,14000,12000,10500,8500,6500,5500], 231000 = [18500,18500,18500,18500,18500,18500,17500,16500,15500,13500,11500,10000,8000,6500,5500], 232000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13000,11000,9500,8000,7000,5500], 233000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,12500,10500,9000,8000,7000,5500], 234000 = [18500,18500,18500,18500,18500,18500,17500,15500,14000,12000,10500,9000,8000,7000,5500], 235000 = [18500,18500,18500,18500,18500,18500,17000,15000,13500,11500,10500,9000,8000,7000,5500], 236000 = [18500,18500,18500,18500,18500,18500,16500,14500,13000,11500,10500,9000,8000,7000,5500], 237000 = [18500,18500,18500,18500,18500,18000,16000,14000,13000,11500,10500,9500,8000,7000,5500], 238000 = [18500,18500,18500,18500,18500,17500,15500,14000,13000,11500,10500,9500,8000,7000,5500], 239000 = [18500,18500,18500,18500,18500,17000,15000,14000,13000,11500,10500,9500,8000,7000,5500], 240000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 241000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 242000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6500], 243000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18000,16500,15500,14500,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18000,16500,15500,14500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18000,17000,15500,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18000,17000,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18000,17500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]}, + {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3000,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,4500,3500,2000,1000,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,4500,3500,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6000,4500,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,7000,6000,4500,3500,2000,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 59000 = [12000,12000,12000,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0,0], 60000 = [13000,13000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0,0,0], 61000 = [14000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 62000 = [15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 63000 = [15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0,0], 64000 = [15000,14000,12500,11500,10500,9000,8000,6500,5500,4000,2500,1500,0,0,0], 65000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0,0,0], 66000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 67000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 68000 = [15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0,0], 69000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0,0], 70000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 71000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 72000 = [15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0,0], 73000 = [15500,14500,13000,12000,11000,9500,8500,7000,5500,4500,3000,2000,500,0,0], 74000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0,0], 75000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 76000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 77000 = [16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0,0], 78000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,1000,0,0], 79000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 80000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 81000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 82000 = [16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0,0], 83000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0,0], 84000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0,0], 85000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 86000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 87000 = [16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1500,0,0], 88000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0,0], 89000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0,0], 90000 = [16500,15500,14000,13000,11500,10500,10500,8000,6500,5500,4000,3000,1500,500,0], 91000 = [16500,15500,14000,13000,11500,10500,10500,8000,6500,5500,4000,3000,1500,500,0], 92000 = [16500,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,500,0], 93000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0], 94000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,1500,500,0], 95000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 96000 = [17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 97000 = [17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4500,3000,2000,500,0], 98000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500,0], 99000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500,0], 100000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0], 101000 = [17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,500,0], 102000 = [17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3500,2000,1000,0], 103000 = [17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,1000,0], 104000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,1000,0], 105000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 106000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 107000 = [17500,16000,15000,13500,12500,11000,10000,8500,7500,6000,5000,3500,2000,1000,0], 108000 = [17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,5000,3500,2500,1000,0], 109000 = [17500,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000,0], 110000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6000,5000,3500,2500,1000,0], 111000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6000,5000,3500,2500,1000,0], 112000 = [17500,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0], 113000 = [18000,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000,3500,2500,1000,0], 114000 = [18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 115000 = [18000,16500,15500,14000,13000,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 116000 = [18000,16500,15500,14000,13000,11500,10000,9000,7500,6500,5000,4000,2500,1000,0], 117000 = [18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000,4000,2500,1500,0], 118000 = [18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000,4000,2500,1500,0], 119000 = [18000,16500,15500,14000,13000,11500,10500,9000,8000,6500,5000,4000,2500,1500,0], 120000 = [18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 121000 = [18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 122000 = [18000,17000,15500,14500,13000,11500,10500,9000,8000,6500,5500,4000,2500,1500,0], 123000 = [18000,17000,15500,14500,13000,11500,10500,9000,8000,6500,5500,4000,3000,1500,0], 124000 = [18000,17000,15500,14500,13000,12000,10500,9000,8000,6500,5500,4000,3000,1500,0], 125000 = [18000,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500,4000,3000,1500,0], 126000 = [18000,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500,4000,3000,1500,0], 127000 = [18500,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 128000 = [18500,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 129000 = [18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4000,3000,1500,500], 130000 = [18500,17000,16000,14500,13500,12000,10500,9500,8000,7000,5500,4500,3000,1500,500], 131000 = [18500,17000,16000,14500,13500,12000,10500,9500,8000,7000,5500,4500,3000,1500,500], 132000 = [18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500,3000,1500,500], 133000 = [18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500,3000,1500,500], 134000 = [18500,17000,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,1500,500], 135000 = [18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 136000 = [18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 137000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,5500,4500,3000,2000,500], 138000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500], 139000 = [18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500,3000,2000,500], 140000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 141000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 142000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 143000 = [18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000,4500,3000,2000,500], 144000 = [18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3000,2000,500], 145000 = [18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500,3000,2000,500], 146000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 147000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 148000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 149000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7000,6000,4500,3500,2000,500], 150000 = [18500,17500,16500,15000,13500,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 151000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 152000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 153000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 154000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 155000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 156000 = [18500,17500,16500,15000,14000,12500,11000,10000,8500,7500,6000,4500,3500,2000,500], 157000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,4500,3500,2000,500], 158000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,500], 159000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 160000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 161000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2000,1000], 162000 = [18500,18000,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000], 163000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1000], 164000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,3500,2500,1500], 165000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,5000,4000,2500,1500], 166000 = [18500,18000,16500,15500,14000,12500,11500,10000,8500,7500,6500,5000,4000,3000,1500], 167000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000,4000,3000,1500], 168000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5500,4000,3000,2000], 169000 = [18500,18000,16500,15500,14000,12500,11500,10000,9000,8000,6500,5500,4500,3000,2000], 170000 = [18500,18000,16500,15500,14000,12500,11500,10500,9000,8000,7000,5500,4500,3000,2000], 171000 = [18500,18000,16500,15500,14000,12500,11500,10500,9000,8000,7000,5500,4500,3500,2000], 172000 = [18500,18000,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500,2000], 173000 = [18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500,3500,2500], 174000 = [18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500,2500], 175000 = [18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500,2500], 176000 = [18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6000,5000,4000,2500], 177000 = [18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000,2500], 178000 = [18500,18000,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000,4000,3000], 179000 = [18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7500,6500,5500,4000,3000], 180000 = [18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4500,3000], 181000 = [18500,18500,17500,16000,15000,14000,12500,11500,10500,9000,8000,6500,5500,4500,3000], 182000 = [18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500,3500], 183000 = [18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,6000,4500,3500], 184000 = [18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8000,7000,6000,4500,3500], 185000 = [18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,5000,3500], 186000 = [18500,18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000,3500], 187000 = [18500,18500,18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000,4000], 188000 = [18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6500,5000,4000], 189000 = [18500,18500,18000,17000,16000,14500,13500,12500,11000,10000,8500,7500,6500,5000,4000], 190000 = [18500,18500,18500,17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500,4000], 191000 = [18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500,4000], 192000 = [18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500,4500], 193000 = [18500,18500,18500,17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500,4500], 194000 = [18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000,5500,4500], 195000 = [18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000,4500], 196000 = [18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000,4500], 197000 = [18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000,5000], 198000 = [18500,18500,18500,18000,17000,15500,14500,13000,12000,11000,9500,8500,7500,6000,5000], 199000 = [18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,9500,8500,7500,6000,5000], 200000 = [18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500,5000], 201000 = [18500,18500,18500,18500,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500,5000], 202000 = [18500,18500,18500,18500,17000,16000,15000,13500,12500,11000,10000,9000,7500,6500,5500], 203000 = [18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500,5500], 204000 = [18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,9000,8000,6500,5500], 205000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10500,9000,8000,7000,5500], 206000 = [18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000,5500], 207000 = [18500,18500,18500,18500,17500,16500,15500,14000,13000,11500,10500,9500,8000,7000,6000], 208000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,12000,10500,9500,8500,7000,6000], 209000 = [18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000,6000], 210000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,11000,9500,8500,7500,6000], 211000 = [18500,18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500,6000], 212000 = [18500,18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500,6500], 213000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12500,11000,10000,9000,7500,6500], 214000 = [18500,18500,18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7500,6500], 215000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,9000,8000,6500], 216000 = [18500,18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10500,9000,8000,7000], 217000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9000,8000,7000], 218000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11500,10500,9500,8000,7000], 219000 = [18500,18500,18500,18500,18500,17500,16500,15500,14000,13000,12000,10500,9500,8500,7000], 220000 = [18500,18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,10500,9500,8500,7000], 221000 = [18500,18500,18500,18500,18500,18000,16500,15500,14500,13000,12000,11000,9500,8500,7500], 222000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13500,12000,11000,10000,8500,7500], 223000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12000,11000,10000,8500,7500], 224000 = [18500,18500,18500,18500,18500,18000,17000,16000,14500,13500,12500,11000,10000,9000,7500], 225000 = [18500,18500,18500,18500,18500,18500,17000,16000,15000,13500,12500,11500,10000,9000,7000], 226000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11500,10000,8500,6500], 227000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,14000,12500,11500,10000,8000,6000], 228000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,13000,11000,9500,7500,5500], 229000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,10500,9000,7000,5000], 230000 = [18500,18500,18500,18500,18500,18500,17500,16500,15500,14000,12000,10000,8500,6500,5000], 231000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,13500,11500,9500,8000,6500,5000], 232000 = [18500,18500,18500,18500,18500,18500,18000,17000,15000,13000,11000,9000,8000,6500,5000], 233000 = [18500,18500,18500,18500,18500,18500,18000,16500,14500,12500,10500,9000,8000,6500,5500], 234000 = [18500,18500,18500,18500,18500,18500,18000,16000,14000,12000,10500,9000,8000,6500,5500], 235000 = [18500,18500,18500,18500,18500,18500,17500,15500,13500,11500,10500,9000,8000,6500,5500], 236000 = [18500,18500,18500,18500,18500,18500,17000,15000,13000,11500,10500,9000,8000,6500,5500], 237000 = [18500,18500,18500,18500,18500,18500,16500,14500,13000,12000,10500,9000,8000,6500,5500], 238000 = [18500,18500,18500,18500,18500,18000,16000,14500,13000,12000,10500,9000,8000,6500,5500], 239000 = [18500,18500,18500,18500,18500,17500,15500,14500,13000,12000,10500,9500,8000,6500,5500], 240000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500], 241000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,6500,5500], 242000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,6500], 243000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,10500,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,10500,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,17500,16000,14500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,17500,16000,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,17500,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,17500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]}, + {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3500,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,5000,3500,2000,500,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,5000,3500,2000,1000,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6500,5000,3500,2000,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,8000,6500,5000,3500,2500,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,9000,9000,6500,5000,3500,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,9000,9000,6500,5000,3500,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,10500,9000,9000,6500,5000,4000,2500,1000,0,0,0], 59000 = [12000,12000,12000,12000,10500,9000,9000,6500,5000,4000,2500,1000,0,0,0], 60000 = [13000,13000,13000,12000,10500,9500,9500,6500,5500,4000,2500,1000,0,0,0], 61000 = [14000,14000,13500,12000,10500,9500,9500,6500,5500,4000,2500,1500,0,0,0], 62000 = [15000,14500,13500,12000,10500,9500,9500,6500,5500,4000,2500,1500,0,0,0], 63000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,2500,1500,0,0,0], 64000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,3000,1500,0,0,0], 65000 = [16000,15000,13500,12000,11000,9500,9500,7000,5500,4000,3000,1500,0,0,0], 66000 = [16500,15000,13500,12500,11000,9500,9500,7000,5500,4500,3000,1500,0,0,0], 67000 = [16500,15000,13500,12500,11000,9500,9500,7000,5500,4500,3000,1500,0,0,0], 68000 = [16500,15000,14000,12500,11000,9500,9500,7000,5500,4500,3000,1500,500,0,0], 69000 = [16500,15000,14000,12500,11000,10000,10000,7000,6000,4500,3000,1500,500,0,0], 70000 = [16500,15000,14000,12500,11000,10000,10000,7000,6000,4500,3000,1500,500,0,0], 71000 = [16500,15500,14000,12500,11000,10000,10000,7000,6000,4500,3000,2000,500,0,0], 72000 = [16500,15500,14000,12500,11500,10000,10000,7500,6000,4500,3000,2000,500,0,0], 73000 = [16500,15500,14000,12500,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 74000 = [17000,15500,14000,12500,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 75000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,4500,3500,2000,500,0,0], 76000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,5000,3500,2000,500,0,0], 77000 = [17000,15500,14000,13000,11500,10000,10000,7500,6000,5000,3500,2000,500,0,0], 78000 = [17000,15500,14500,13000,11500,10500,10500,7500,6000,5000,3500,2000,1000,0,0], 79000 = [17000,15500,14500,13000,11500,10500,10500,7500,6500,5000,3500,2000,1000,0,0], 80000 = [17000,16000,14500,13000,11500,10500,10500,7500,6500,5000,3500,2500,1000,0,0], 81000 = [17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2500,1000,0,0], 82000 = [17000,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2500,1000,0,0], 83000 = [17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,4000,2500,1000,0,0], 84000 = [17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,4000,2500,1000,0,0], 85000 = [17500,16000,14500,13500,12000,10500,9500,8000,6500,5500,4000,2500,1000,0,0], 86000 = [17500,16000,14500,13500,12000,10500,9500,8000,6500,5500,4000,2500,1000,0,0], 87000 = [17500,16000,15000,13500,12000,10500,9500,8000,6500,5500,4000,2500,1500,0,0], 88000 = [17500,16000,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1500,0,0], 89000 = [17500,16000,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1500,0,0], 90000 = [17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,3000,1500,0,0], 91000 = [17500,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000,3000,1500,0,0], 92000 = [17500,16500,15000,13500,12500,11000,9500,8500,7000,5500,4500,3000,1500,0,0], 93000 = [18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4500,3000,1500,0,0], 94000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0,0], 95000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500,0,0], 96000 = [18000,16500,15000,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500,500,0], 97000 = [18000,16500,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,500,0], 98000 = [18000,16500,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,2000,500,0], 99000 = [18000,16500,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000,500,0], 100000 = [18000,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000,500,0], 101000 = [18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500,2000,500,0], 102000 = [18000,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500,3500,2000,500,0], 103000 = [18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500,3500,2000,500,0], 104000 = [18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,5000,3500,2000,500,0], 105000 = [18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000,500,0], 106000 = [18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000,500,0], 107000 = [18500,17000,16000,14500,13000,11500,10500,9000,7500,6500,5000,3500,2000,500,0], 108000 = [18500,17000,16000,14500,13000,11500,10500,9000,7500,6500,5000,3500,2000,500,0], 109000 = [18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000,500,0], 110000 = [18500,17500,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000,1000,0], 111000 = [18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2000,1000,0], 112000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 113000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 114000 = [18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,3500,2500,1000,0], 115000 = [18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 116000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 117000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 118000 = [18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000,2500,1000,0], 119000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 120000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 121000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,6500,5500,4000,2500,1000,0], 122000 = [18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500,1000,0], 123000 = [18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1000,0], 124000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1500,0], 125000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500,1500,0], 126000 = [18500,18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000,2500,1500,0], 127000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,2500,1500,0], 128000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500,0], 129000 = [18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500,0], 130000 = [18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4000,3000,1500,0], 131000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 132000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 133000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 134000 = [18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500,0], 135000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,5500,4500,3000,1500,0], 136000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 137000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 138000 = [18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500,3000,1500,0], 139000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,6000,4500,3000,1500,0], 140000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,6000,4500,3000,1500,0], 141000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 142000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 143000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 144000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 145000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0], 146000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,500], 147000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,500], 148000 = [18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,500], 149000 = [18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,500], 150000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 151000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,14500,2000,500], 152000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 153000 = [18500,18500,17000,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,2000,500], 154000 = [18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,2000,500], 155000 = [18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,4500,3500,2000,500], 156000 = [18500,18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3500,2000,500], 157000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 158000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 159000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 160000 = [18500,18500,17500,16000,14500,13000,11500,11500,9000,7500,6000,4500,3500,2000,500], 161000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,500], 162000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,1000], 163000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,4500,3500,2000,1000], 164000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,5000,3500,2500,1000], 165000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6000,5000,3500,2500,1000], 166000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6500,5000,4000,2500,1000], 167000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,7500,6500,5000,4000,2500,1500], 168000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,8000,6500,5500,4000,3000,1500], 169000 = [18500,18500,17500,16000,14500,13000,12000,12000,9000,8000,6500,5500,4000,3000,1500], 170000 = [18500,18500,17500,16000,14500,13000,12000,12000,9500,8000,7000,5500,4500,3000,1500], 171000 = [18500,18500,17500,16000,14500,13000,12000,12000,9500,8000,7000,5500,4500,3000,2000], 172000 = [18500,18500,17500,16000,14500,13500,12000,12000,9500,8500,7000,5500,4500,3000,2000], 173000 = [18500,18500,17500,16000,14500,13500,12000,12000,9500,8500,7000,6000,4500,3500,2000], 174000 = [18500,18500,17500,16000,15000,13500,12500,12500,10000,8500,7000,6000,4500,3500,2000], 175000 = [18500,18500,17500,16000,15000,13500,12500,12500,10000,8500,7500,6000,5000,3500,2000], 176000 = [18500,18500,17500,16500,15000,14000,12500,12500,10000,8500,7500,6000,5000,3500,2500], 177000 = [18500,18500,17500,16500,15000,14000,12500,12500,10000,9000,7500,6500,5000,3500,2500], 178000 = [18500,18500,18000,16500,15500,14000,12500,12500,10000,9000,7500,6500,5000,4000,2500], 179000 = [18500,18500,18000,16500,15500,14000,13000,13000,10500,9000,8000,6500,5000,4000,2500], 180000 = [18500,18500,18000,16500,15500,14000,13000,13000,10500,9000,8000,6500,5500,4000,2500], 181000 = [18500,18500,18000,17000,15500,14500,13000,13000,10500,9000,8000,6500,5500,4000,3000], 182000 = [18500,18500,18000,17000,15500,14500,13000,13000,10500,9500,8000,7000,5500,4000,3000], 183000 = [18500,18500,18500,17000,16000,14500,13500,13500,10500,9500,8000,7000,5500,4500,3000], 184000 = [18500,18500,18500,17000,16000,14500,13500,13500,11000,9500,8500,7000,5500,4500,3000], 185000 = [18500,18500,18500,17500,16000,14500,13500,13500,11000,9500,8500,7000,6000,4500,3500], 186000 = [18500,18500,18500,17500,16000,15000,13500,13500,11000,10000,8500,7000,6000,4500,3500], 187000 = [18500,18500,18500,17500,16000,15000,13500,13500,11000,10000,8500,7500,6000,5000,3500], 188000 = [18500,18500,18500,17500,16500,15000,14000,14000,11000,10000,8500,7500,6000,5000,3500], 189000 = [18500,18500,18500,17500,16500,15000,14000,14000,11500,10000,9000,7500,6000,5000,3500], 190000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10000,9000,7500,6500,5000,4000], 191000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10500,9000,7500,6500,5000,4000], 192000 = [18500,18500,18500,18000,16500,15500,14000,14000,11500,10500,9000,8000,6500,5500,4000], 193000 = [18500,18500,18500,18000,17000,15500,14500,14500,11500,10500,9000,8000,6500,5500,4000], 194000 = [18500,18500,18500,18000,17000,15500,14500,14500,12000,10500,9500,8000,6500,5500,4000], 195000 = [18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500,4500], 196000 = [18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500,4500], 197000 = [18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000,6000,4500], 198000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,11000,9500,8500,7000,6000,4500], 199000 = [18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7000,6000,4500], 200000 = [18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,10000,8500,7500,6000,5000], 201000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,8500,7500,6000,5000], 202000 = [18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,9000,7500,6500,5000], 203000 = [18500,18500,18500,18500,18000,16500,15500,14000,12500,11500,10000,9000,7500,6500,5000], 204000 = [18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9000,7500,6500,5000], 205000 = [18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,10500,9000,8000,6500,5500], 206000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9000,8000,6500,5500], 207000 = [18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9500,8000,7000,5500], 208000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9500,8000,7000,5500], 209000 = [18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8000,7000,5500], 210000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,11000,9500,8500,7000,6000], 211000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,9500,8500,7000,6000], 212000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7500,6000], 213000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,10000,6000,7500,6000], 214000 = [18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,9000,7500,6000], 215000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11500,10000,9000,7500,6500], 216000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10000,9000,7500,6500], 217000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11500,10500,9000,8000,6500], 218000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13000,11500,10500,9000,8000,6500], 219000 = [18500,18500,18500,18500,18500,18000,17000,15500,14500,13000,12000,10500,9500,8000,7000], 220000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,12000,10500,9500,8000,7000], 221000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000], 222000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13500,12000,11000,9500,8500,7000], 223000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7500], 224000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12500,11000,10000,8500,7000], 225000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11000,10000,8500,6500], 226000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,14000,12500,11500,10000,8000,6000], 227000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11500,9500,7500,5500], 228000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,11000,9000,7000,5000], 229000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,13000,10500,8500,6500,5000], 230000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14500,12500,10000,8000,6000,5000], 231000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14000,12000,9500,7500,6000,5000], 232000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,13500,11500,9000,7500,6500,5000], 233000 = [18500,18500,18500,18500,18500,18500,18500,17000,15000,13000,11000,9000,7500,6500,5000], 234000 = [18500,18500,18500,18500,18500,18500,18500,16500,14500,12500,10500,9000,7500,6500,5000], 235000 = [18500,18500,18500,18500,18500,18500,18500,16000,14000,12000,10500,9000,7500,6500,5000], 236000 = [18500,18500,18500,18500,18500,18500,18000,15500,13500,12000,10500,9000,8000,6500,5000], 237000 = [18500,18500,18500,18500,18500,18500,17500,15000,13500,12000,10500,9000,8000,6500,5000], 238000 = [18500,18500,18500,18500,18500,18500,17000,14500,13500,12000,10500,9000,8000,6500,5000], 239000 = [18500,18500,18500,18500,18500,18500,16500,14500,13500,12000,10500,9000,8000,6500,5000], 240000 = [18500,18500,18500,18500,18500,18000,16000,15000,13500,12000,10500,9000,8000,6500,5000], 241000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500], 242000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,6500], 243000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,18000,16500,15000,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,18000,16500,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,18000,16500,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,18000,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]}, + {47000 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 48000 = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,500,0,0,0], 49000 = [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,500,0,0,0], 50000 = [3000,3000,3000,3000,3000,3000,3000,3000,3000,3000,2000,500,0,0,0], 51000 = [4000,4000,4000,4000,4000,4000,4000,4000,4000,3500,2000,500,0,0,0], 52000 = [5000,5000,5000,5000,5000,5000,5000,5000,5000,3500,2000,500,0,0,0], 53000 = [6000,6000,6000,6000,6000,6000,6000,6000,5000,3500,2000,500,0,0,0], 54000 = [7000,7000,7000,7000,7000,7000,7000,6500,5000,3500,2500,1000,0,0,0], 55000 = [8000,8000,8000,8000,8000,8000,8000,6500,5000,4000,2500,1000,0,0,0], 56000 = [9000,9000,9000,9000,9000,9000,8000,6500,5500,4000,2500,1000,0,0,0], 57000 = [10000,10000,10000,10000,10000,9500,8000,7000,5500,4000,2500,1000,0,0,0], 58000 = [11000,11000,11000,11000,11000,9500,8000,7000,5500,4000,2500,1000,0,0,0], 59000 = [12000,12000,12000,12000,11000,9500,8500,7000,5500,4000,2500,1000,0,0,0], 60000 = [13000,13000,13000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0,0], 61000 = [14000,14000,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0,0,0], 62000 = [15000,15000,14000,13000,11500,10000,8500,7000,5500,4000,2500,1500,0,0,0], 63000 = [16000,15500,14000,13000,11500,10000,8500,7000,5500,4000,3000,1500,0,0,0], 64000 = [17000,15500,14500,13000,11500,10000,8500,7000,5500,4500,3000,1500,0,0,0], 65000 = [17000,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1500,0,0,0], 66000 = [17500,16000,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0,0,0], 67000 = [17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0,0], 68000 = [17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0,0], 69000 = [17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0,0,0], 70000 = [17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0,0,0], 71000 = [17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,500,0,0], 72000 = [17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500,0,0], 73000 = [17500,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500,0,0], 74000 = [17500,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,500,0,0], 75000 = [18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0,0], 76000 = [18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0,0], 77000 = [18000,16500,15000,13500,12000,10500,9500,8000,6500,5000,3500,2000,500,0,0], 78000 = [18000,16500,15000,13500,12000,11000,9500,8000,6500,5000,3500,2000,500,0,0], 79000 = [18000,16500,15000,13500,12500,11000,9500,8000,6500,5000,3500,2000,500,0,0], 80000 = [18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0,0], 81000 = [18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2500,1000,0,0], 82000 = [18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,4000,2500,1000,0,0], 83000 = [18000,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000,0,0], 84000 = [18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,2500,1000,0,0], 85000 = [18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0,0], 86000 = [18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0], 87000 = [18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0,0], 88000 = [18500,17000,15500,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0,0], 89000 = [18500,17000,15500,14000,13000,11500,10000,8500,7000,5500,4000,2500,1000,0,0], 90000 = [18500,17000,15500,14500,13000,11500,10000,8500,7000,5500,4000,2500,1500,0,0], 91000 = [18500,17000,16000,14500,13000,11500,10000,8500,7000,5500,4000,3000,1500,0,0], 92000 = [18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4500,3000,1500,0,0], 93000 = [18500,17500,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1500,0,0], 94000 = [18500,17500,16000,14500,13000,11500,10000,8500,7500,6000,4500,3000,1500,0,0], 95000 = [18500,17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0,0], 96000 = [18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0,0], 97000 = [18500,17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 98000 = [18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 99000 = [18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 100000 = [18500,17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 101000 = [18500,17500,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0,0], 102000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500,0], 103000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500,0], 104000 = [18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,500,0], 105000 = [18500,18000,16500,15000,13500,12000,10500,9000,8000,6500,5000,3500,2000,500,0], 106000 = [18500,18000,16500,15000,13500,12000,10500,9500,8000,6500,5000,3500,2000,500,0], 107000 = [18500,18000,16500,15000,13500,12000,11000,9500,8000,6500,5000,3500,2000,500,0], 108000 = [18500,18000,16500,15000,13500,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 109000 = [18500,18000,16500,15000,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 110000 = [18500,18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 111000 = [18500,18000,16500,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 112000 = [18500,18000,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 113000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 114000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 115000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2000,500,0], 116000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5000,3500,2500,1000,0], 117000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000,0], 118000 = [18500,18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,2500,1000,0], 119000 = [18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0], 120000 = [18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,2500,1000,0], 121000 = [18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4000,2500,1000,0], 122000 = [18500,18500,17000,15500,14000,12500,11500,10000,8500,7000,5500,4000,2500,1000,0], 123000 = [18500,18500,17000,15500,14000,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 124000 = [18500,18500,17000,15500,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 125000 = [18500,18500,17000,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 126000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 127000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 128000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 129000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 130000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 131000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 132000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4000,2500,1000,0], 133000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,5500,4500,2500,1000,0], 134000 = [18500,18500,17500,16000,14500,13000,11500,10000,8500,7000,6000,4500,3000,1000,0], 135000 = [18500,18500,17500,16000,14500,13000,11500,10000,9000,7500,6000,4500,3000,1500,0], 136000 = [18500,18500,17500,16000,14500,13000,11500,10500,9000,7500,6000,4500,3000,1500,0], 137000 = [18500,18500,17500,16000,14500,13000,12000,10500,9000,7500,6000,4500,3000,1500,0], 138000 = [18500,18500,17500,16000,14500,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 139000 = [18500,18500,17500,16000,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 140000 = [18500,18500,17500,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 141000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 142000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 143000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 144000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 145000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 146000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 147000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 148000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 149000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 150000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 151000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 152000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 153000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 154000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 155000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 156000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 157000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 158000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 159000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,0], 160000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,1500,500], 161000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,2000,500], 162000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3000,2000,500], 163000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,4500,3500,2000,500], 164000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6000,5000,3500,2000,500], 165000 = [18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5000,3500,2000,1000], 166000 = [18500,18500,18000,16500,15500,14000,12500,10500,9000,7500,6500,5000,3500,2500,1000], 167000 = [18500,18500,18500,17000,15500,14000,12500,11000,9000,8000,6500,5000,4000,2500,1000], 168000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1000], 169000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,6500,5500,4000,2500,1500], 170000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8000,7000,5500,4000,3000,1500], 171000 = [18500,18500,18500,17000,15500,14000,12500,11000,9500,8500,7000,5500,4000,3000,1500], 172000 = [18500,18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,5500,4500,3000,1500], 173000 = [18500,18500,18500,17000,15500,14000,12500,11000,10000,8500,7000,6000,4500,3000,1500], 174000 = [18500,18500,18500,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000,2000], 175000 = [18500,18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500,2000], 176000 = [18500,18500,18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,5000,3500,2000], 177000 = [18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500,2000], 178000 = [18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500,2000], 179000 = [18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500,2500], 180000 = [18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000,4000,2500], 181000 = [18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500,4000,2500], 182000 = [18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500,4000,2500], 183000 = [18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000,2500], 184000 = [18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4000,3000], 185000 = [18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500,4500,3000], 186000 = [18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,6000,4500,3000], 187000 = [18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7500,6000,4500,3000], 188000 = [18500,18500,18500,18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500,3500], 189000 = [18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,4500,3500], 190000 = [18500,18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6000,5000,3500], 191000 = [18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500,5000,3500], 192000 = [18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500,5000,3500], 193000 = [18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000,4000], 194000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5000,4000], 195000 = [18500,18500,18500,18500,17500,16000,15000,13500,12000,11000,9500,8000,6500,5500,4000], 196000 = [18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500,4000], 197000 = [18500,18500,18500,18500,18000,16500,15000,13500,12500,11000,9500,8500,7000,5500,4000], 198000 = [18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500,4500], 199000 = [18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,5500,4500], 200000 = [18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7000,6000,4500], 201000 = [18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,10000,8500,7500,6000,4500], 202000 = [18500,18500,18500,18500,18500,17000,15500,14000,13000,11500,10000,9000,7500,6000,4500], 203000 = [18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000,5000], 204000 = [18500,18500,18500,18500,18500,17000,16000,14500,13000,11500,10500,9000,7500,6000,5000], 205000 = [18500,18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,7500,6500,5000], 206000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9000,8000,6500,5000], 207000 = [18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500,5000], 208000 = [18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500,5500], 209000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000,5500], 210000 = [18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8000,7000,5500], 211000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,7000,5500], 212000 = [18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8500,7000,5500], 213000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10000,8500,7000,6000], 214000 = [18500,18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,10000,8500,7500,6000], 215000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,13000,11500,10000,8500,7500,6000], 216000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10000,9000,7500,6000], 217000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,11500,10500,9000,7500,6500], 218000 = [18500,18500,18500,18500,18500,18500,17000,16000,14500,13000,12000,10500,9000,7500,6500], 219000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,13000,12000,10500,9000,8000,6500], 220000 = [18500,18500,18500,18500,18500,18500,17500,16000,14500,13500,12000,10500,9500,8000,6500], 221000 = [18500,18500,18500,18500,18500,18500,17500,16000,15000,13500,12000,10500,9500,8000,6500], 222000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13500,12000,11000,9500,8000,7000], 223000 = [18500,18500,18500,18500,18500,18500,17500,16500,15000,13500,12500,11000,9500,8500,7000], 224000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,9500,8500,6500], 225000 = [18500,18500,18500,18500,18500,18500,18000,16500,15000,14000,12500,11000,10000,8000,6000], 226000 = [18500,18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11500,10000,7500,5500], 227000 = [18500,18500,18500,18500,18500,18500,18000,17000,15500,14000,13000,11500,9500,7000,4500], 228000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,14000,13000,11000,9000,6500,4500], 229000 = [18500,18500,18500,18500,18500,18500,18500,17000,15500,14500,13000,10500,8500,6000,4500], 230000 = [18500,18500,18500,18500,18500,18500,18500,17000,16000,14500,12500,10000,8000,6000,4500], 231000 = [18500,18500,18500,18500,18500,18500,18500,17500,16000,14000,12000,9500,7500,6000,4500], 232000 = [18500,18500,18500,18500,18500,18500,18500,17500,16000,13500,11500,9000,7500,6000,4500], 233000 = [18500,18500,18500,18500,18500,18500,18500,17500,15500,13000,11000,9000,7500,6000,4500], 234000 = [18500,18500,18500,18500,18500,18500,18500,17000,15000,12500,10500,9000,7500,6000,4500], 235000 = [18500,18500,18500,18500,18500,18500,18500,16500,14500,12000,10500,9000,7500,6000,4500], 236000 = [18500,18500,18500,18500,18500,18500,18500,16000,14000,12000,10500,9000,7500,6000,4500], 237000 = [18500,18500,18500,18500,18500,18500,18000,15500,13500,12000,10500,9000,7500,6000,4500], 238000 = [18500,18500,18500,18500,18500,18500,17500,15000,13500,12000,10500,9000,7500,6000,4500], 239000 = [18500,18500,18500,18500,18500,18500,17000,15000,13500,12000,10500,9000,7500,6000,4500], 240000 = [18500,18500,18500,18500,18500,18500,16500,15000,13500,12000,10500,9000,7500,6000,5000], 241000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9000,7500,6500,5500], 242000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9000,8000,6500,6500], 243000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,10500,9500,8000,7500,7500], 244000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12000,11000,9500,8500,8500,8500], 245000 = [18500,18500,18500,18500,18500,18000,16500,15000,13500,12500,11000,9500,9500,9500,9500], 246000 = [18500,18500,18500,18500,18500,18000,16500,15500,14000,12500,11000,10500,10500,10500,10500], 247000 = [18500,18500,18500,18500,18500,18000,17000,15500,14000,12500,11500,11500,11500,11500,11500], 248000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,12500,12500,12500,12500,12500,12500], 249000 = [18500,18500,18500,18500,18500,18500,17000,15500,14000,13500,13500,13500,13500,13500,13500], 250000 = [18500,18500,18500,18500,18500,18500,17000,15500,14500,14500,14500,14500,14500,14500,14500], 251000 = [18500,18500,18500,18500,18500,18500,17000,15500,15500,15500,15500,15500,15500,15500,15500], 252000 = [18500,18500,18500,18500,18500,18500,17000,16500,16500,16500,16500,16500,16500,16500,16500], 253000 = [18500,18500,18500,18500,18500,18500,17500,17500,17500,17500,17500,17500,17500,17500,17500], 254000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 255000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 256000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 257000 = [18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500,18500], 258000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 259000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 260000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 261000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 262000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 263000 = [19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000,19000], 264000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 265000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 266000 = [9500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 267000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 268000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 269000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 270000 = [19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500,19500], 271000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 272000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 273000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 274000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 275000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 276000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 277000 = [20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000], 278000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 279000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 280000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 281000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 282000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 283000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 284000 = [20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500,20500], 285000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 286000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 287000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 288000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 289000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000], 290000 = [21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000,21000]} +] diff --git a/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs b/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs index 4597bc32006..94485b6fb57 100644 --- a/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs +++ b/fbw-a380x/src/wasm/systems/a380_systems/src/payload/mod.rs @@ -86,6 +86,7 @@ pub struct A380Payload { impl A380Payload { // Note: These constants reflect flight_model.cfg values and will have to be updated in sync with the configuration pub const DEFAULT_PER_PAX_WEIGHT_KG: f64 = 84.; + // TODO: Move into a toml cfg const A380_PAX: [PaxInfo<'static>; 14] = [ PaxInfo { max_pax: 28, @@ -179,6 +180,7 @@ impl A380Payload { }, // PAX UPPER AFT: 18 ]; + // TODO: Move into a toml cfg const A380_CARGO: [CargoInfo<'static>; 3] = [ CargoInfo { max_cargo_kg: 28577., @@ -228,6 +230,7 @@ impl A380Payload { Mass::new::(c.max_cargo_kg), ) }); + // TODO: Move into a toml cfg let boarding_agents = [ BoardingAgent::new( context.get_identifier("INTERACTIVE POINT OPEN:0".to_owned()), diff --git a/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx b/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx index bea9ef6eb0f..8bd264e923c 100644 --- a/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx +++ b/fbw-common/src/systems/instruments/src/EFB/Ground/Pages/Fuel/A380_842/A380Fuel.tsx @@ -120,9 +120,10 @@ export const A380Fuel: React.FC = ({ massUnitForDisplay, isOnGround, }) => { - const [TOTAL_FUEL_GALLONS] = useState(85471.7); // 323545.6 litres - const [FUEL_GALLONS_TO_KG] = useState(3.039075693483925); - const [TOTAL_MAX_FUEL_KG] = useState(TOTAL_FUEL_GALLONS * FUEL_GALLONS_TO_KG); + const TOTAL_FUEL_GALLONS = 85471.7; // 323545.6 litres + const FUEL_GALLONS_TO_KG = 3.039075693483925; // Check: MSFS fuel density is currently always fixed, if this changes this will need to read from the var. + const TOTAL_MAX_FUEL_KG = TOTAL_FUEL_GALLONS * FUEL_GALLONS_TO_KG; + const TOTAL_UI_MAX_FUEL_KG = 220000.0; // Temporarily while we are using WV003, so the slider will not set a value that is far above current MTOW. OFP and manual entry not affected. const [eng1Running] = useSimVar('ENG COMBUSTION:1', 'Bool', 1_000); const [eng2Running] = useSimVar('ENG COMBUSTION:2', 'Bool', 1_000); @@ -235,7 +236,7 @@ export const A380Fuel: React.FC = ({ if (percent < 0.5) { percent = 0; } - const fuel = Math.round(TOTAL_MAX_FUEL_KG * (percent / 100)); + const fuel = Math.round(TOTAL_UI_MAX_FUEL_KG * (percent / 100)); updateDesiredFuel(fuel); }; @@ -606,7 +607,7 @@ export const A380Fuel: React.FC = ({