diff --git a/Pipfile.lock b/Pipfile.lock
index 6920199acd6921b8aaad8d5c01345959dedecdf3..c3e6428aa31386f3f6d820e908fae7c7a3bc726d 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -126,59 +126,59 @@
         },
         "fonttools": {
             "hashes": [
-                "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e",
-                "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c",
-                "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f",
-                "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03",
-                "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c",
-                "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438",
-                "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998",
-                "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05",
-                "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60",
-                "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a",
-                "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189",
-                "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c",
-                "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6",
-                "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61",
-                "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd",
-                "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8",
-                "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a",
-                "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc",
-                "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b",
-                "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6",
-                "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81",
-                "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40",
-                "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71",
-                "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d",
-                "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9",
-                "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c",
-                "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7",
-                "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d",
-                "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f",
-                "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6",
-                "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18",
-                "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6",
-                "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b",
-                "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478",
-                "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967",
-                "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c",
-                "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69",
-                "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2",
-                "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4",
-                "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838",
-                "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6",
-                "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880",
-                "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe",
-                "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3",
-                "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2",
-                "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6",
-                "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246",
-                "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf",
-                "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c",
-                "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51"
+                "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7",
+                "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b",
+                "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261",
+                "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0",
+                "sha256:22f38464daa6cdb7b6aebd14ab06609328fe1e9705bb0fcc7d1e69de7109ee02",
+                "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841",
+                "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45",
+                "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4",
+                "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b",
+                "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a",
+                "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048",
+                "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90",
+                "sha256:5e8d657cd7326eeaba27de2740e847c6b39dde2f8d7cd7cc56f6aad404ddf0bd",
+                "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674",
+                "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72",
+                "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c",
+                "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07",
+                "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b",
+                "sha256:86721fbc389ef5cc1e2f477019e5069e8e4421e8d9576e9c26f840dbb04678de",
+                "sha256:89bdc5d88bdeec1b15af790810e267e8332d92561dce4f0748c2b95c9bdf3926",
+                "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e",
+                "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628",
+                "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca",
+                "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29",
+                "sha256:a8c2794ded89399cc2169c4d0bf7941247b8d5932b2659e09834adfbb01589aa",
+                "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe",
+                "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427",
+                "sha256:aedbeb1db64496d098e6be92b2e63b5fac4e53b1b92032dfc6988e1ea9134a4d",
+                "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765",
+                "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5",
+                "sha256:b586ab5b15b6097f2fb71cafa3c98edfd0dba1ad8027229e7b1e204a58b0e09d",
+                "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314",
+                "sha256:bc5dbb4685e51235ef487e4bd501ddfc49be5aede5e40f4cefcccabc6e60fb4b",
+                "sha256:bdcc9f04b36c6c20978d3f060e5323a43f6222accc4e7fcbef3f428e216d96af",
+                "sha256:c3ca99e0d460eff46e033cd3992a969658c3169ffcd533e0a39c63a38beb6831",
+                "sha256:caf8230f3e10f8f5d7593eb6d252a37caf58c480b19a17e250a63dad63834cf3",
+                "sha256:cd70de1a52a8ee2d1877b6293af8a2484ac82514f10b1c67c1c5762d38073e56",
+                "sha256:cf4fe7c124aa3f4e4c1940880156e13f2f4d98170d35c749e6b4f119a872551e",
+                "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276",
+                "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0",
+                "sha256:dc5294a3d5c84226e3dbba1b6f61d7ad813a8c0238fceea4e09aa04848c3d851",
+                "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5",
+                "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54",
+                "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b",
+                "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f",
+                "sha256:ed63959d00b61959b035c7d47f9313c2c1ece090ff63afea702fe86de00dbed4",
+                "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977",
+                "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f",
+                "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35",
+                "sha256:fb594b5a99943042c702c550d5494bdd7577f6ef19b0bc73877c948a63184a32"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==4.55.0"
+            "version": "==4.55.3"
         },
         "kiwisolver": {
             "hashes": [
@@ -302,112 +302,113 @@
         },
         "matplotlib": {
             "hashes": [
-                "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21",
-                "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5",
-                "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697",
-                "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9",
-                "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca",
-                "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64",
-                "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e",
-                "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03",
-                "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae",
-                "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa",
-                "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3",
-                "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e",
-                "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a",
-                "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc",
-                "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea",
-                "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b",
-                "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e",
-                "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447",
-                "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b",
-                "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92",
-                "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb",
-                "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66",
-                "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9",
-                "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7",
-                "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2",
-                "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30",
-                "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d",
-                "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7",
-                "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4",
-                "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41",
-                "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2",
-                "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556",
-                "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f",
-                "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772",
-                "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c",
-                "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a",
-                "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51",
-                "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49",
-                "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c",
-                "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"
+                "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0",
+                "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d",
+                "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465",
+                "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc",
+                "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764",
+                "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010",
+                "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83",
+                "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04",
+                "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639",
+                "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749",
+                "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d",
+                "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045",
+                "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d",
+                "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f",
+                "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a",
+                "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc",
+                "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0",
+                "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c",
+                "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006",
+                "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060",
+                "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6",
+                "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12",
+                "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9",
+                "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70",
+                "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5",
+                "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9",
+                "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815",
+                "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da",
+                "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4",
+                "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad",
+                "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9",
+                "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e",
+                "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4",
+                "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d",
+                "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5",
+                "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d",
+                "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3",
+                "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f",
+                "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a",
+                "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de",
+                "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"
             ],
             "index": "pypi",
             "markers": "python_version >= '3.9'",
-            "version": "==3.9.2"
+            "version": "==3.9.3"
         },
         "numpy": {
             "hashes": [
-                "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe",
-                "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0",
-                "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48",
-                "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a",
-                "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564",
-                "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958",
-                "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17",
-                "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0",
-                "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee",
-                "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b",
-                "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4",
-                "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4",
-                "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6",
-                "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4",
-                "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d",
-                "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f",
-                "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f",
-                "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f",
-                "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56",
-                "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9",
-                "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd",
-                "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23",
-                "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed",
-                "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a",
-                "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098",
-                "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1",
-                "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512",
-                "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f",
-                "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09",
-                "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f",
-                "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc",
-                "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8",
-                "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0",
-                "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761",
-                "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef",
-                "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5",
-                "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e",
-                "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b",
-                "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d",
-                "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43",
-                "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c",
-                "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41",
-                "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff",
-                "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408",
-                "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2",
-                "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9",
-                "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57",
-                "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb",
-                "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9",
-                "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3",
-                "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a",
-                "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0",
-                "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e",
-                "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598",
-                "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"
+                "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608",
+                "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef",
+                "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90",
+                "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae",
+                "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83",
+                "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0",
+                "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73",
+                "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671",
+                "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69",
+                "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa",
+                "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066",
+                "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da",
+                "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9",
+                "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e",
+                "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3",
+                "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a",
+                "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74",
+                "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3",
+                "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410",
+                "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72",
+                "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d",
+                "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4",
+                "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038",
+                "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e",
+                "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13",
+                "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d",
+                "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95",
+                "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31",
+                "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3",
+                "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03",
+                "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6",
+                "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2",
+                "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b",
+                "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7",
+                "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab",
+                "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219",
+                "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571",
+                "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d",
+                "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1",
+                "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca",
+                "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661",
+                "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e",
+                "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e",
+                "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e",
+                "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a",
+                "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3",
+                "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881",
+                "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221",
+                "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742",
+                "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773",
+                "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e",
+                "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529",
+                "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67",
+                "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c",
+                "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"
             ],
             "index": "pypi",
             "markers": "python_version >= '3.10'",
-            "version": "==2.1.3"
+            "version": "==2.2.0"
         },
         "openpyxl": {
             "hashes": [
@@ -604,7 +605,7 @@
                 "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
                 "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
             ],
-            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==2.9.0.post0"
         },
         "pytz": {
@@ -663,19 +664,19 @@
         },
         "setuptools": {
             "hashes": [
-                "sha256:5c4ccb41111392671f02bb5f8436dfc5a9a7185e80500531b133f5775c4163ef",
-                "sha256:87cb777c3b96d638ca02031192d40390e0ad97737e27b6b4fa831bea86f2f829"
+                "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6",
+                "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"
             ],
             "markers": "python_version >= '3.9'",
-            "version": "==75.5.0"
+            "version": "==75.6.0"
         },
         "six": {
             "hashes": [
-                "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
-                "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
+                "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
+                "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
             ],
-            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
-            "version": "==1.16.0"
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+            "version": "==1.17.0"
         },
         "soupsieve": {
             "hashes": [
diff --git a/libs b/libs
index e999a694089e47c020248cad04fa7f8443fb51ab..2f58fd6bdf1896be9945b73ca9b36af322b84eb1 160000
--- a/libs
+++ b/libs
@@ -1 +1 @@
-Subproject commit e999a694089e47c020248cad04fa7f8443fb51ab
+Subproject commit 2f58fd6bdf1896be9945b73ca9b36af322b84eb1
diff --git a/performance_assessment/CMakeLists.txt b/performance_assessment/CMakeLists.txt
index c20a9dfcb05161392e012e8a14d2ccbace7d355d..7facc45b497306dbeef946bba4b6427d05cbabbd 100644
--- a/performance_assessment/CMakeLists.txt
+++ b/performance_assessment/CMakeLists.txt
@@ -38,6 +38,8 @@ add_executable(${MODULE_NAME}
 
 # Link the runtime libraries -> Use the actual needed libraries
 target_link_libraries(${MODULE_NAME}
+    PUBLIC
+		Matplot++::matplot
     PRIVATE
         UnicadoLibs::aixml
         UnicadoLibs::runtimeInfo
diff --git a/performance_assessment/csv_filesperformance_assessment_fuelPayloadRange.csv b/performance_assessment/csv_filesperformance_assessment_fuelPayloadRange.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2197d9318abd2b517ed4cbf915c16c3086e752f0
--- /dev/null
+++ b/performance_assessment/csv_filesperformance_assessment_fuelPayloadRange.csv
@@ -0,0 +1,3901 @@
+# Range [NM]; Payload [kg]; Consumed Fuel [kg]; Time [h]
+0; 0; 2769.14; 0
+0; 386; 2793.65; 0
+0; 772; 2818.16; 0
+0; 1158; 2842.67; 0
+0; 1544; 2867.18; 0
+0; 1930; 2891.7; 0
+0; 2316; 2916.21; 0
+0; 2702; 2940.72; 0
+0; 3088; 2965.23; 0
+0; 3474; 2989.74; 0
+0; 3860; 3014.25; 0
+0; 4246; 3038.76; 0
+0; 4632; 3063.27; 0
+0; 5018; 3087.78; 0
+0; 5404; 3112.3; 0
+0; 5790; 3136.81; 0
+0; 6176; 3161.32; 0
+0; 6562; 3185.83; 0
+0; 6948; 3210.34; 0
+0; 7334; 3234.85; 0
+0; 7720; 3259.36; 0
+0; 8106; 3283.87; 0
+0; 8492; 3308.39; 0
+0; 8878; 3332.9; 0
+0; 9264; 3357.41; 0
+0; 9650; 3381.92; 0
+0; 10036; 3406.43; 0
+0; 10422; 3430.94; 0
+0; 10808; 3455.45; 0
+0; 11194; 3479.96; 0
+0; 11580; 3504.47; 0
+0; 11966; 3528.99; 0
+0; 12352; 3553.5; 0
+0; 12738; 3578.01; 0
+0; 13124; 3602.52; 0
+0; 13510; 3627.03; 0
+0; 13896; 3651.54; 0
+0; 14282; 3676.05; 0
+0; 14668; 3700.56; 0
+0; 15054; 3725.08; 0
+0; 15440; 3749.59; 0
+0; 15826; 3774.1; 0
+0; 16212; 3798.61; 0
+0; 16598; 3823.12; 0
+0; 16984; 3847.63; 0
+0; 17370; 3872.14; 0
+0; 17756; 3896.65; 0
+0; 18142; 3921.16; 0
+0; 18528; 3945.68; 0
+0; 18914; 3970.19; 0
+0; 19300; 3994.7; 0
+
+111380; 0; 3203.67; 272.499
+111380; 386; 3232.03; 272.499
+111380; 772; 3260.39; 272.499
+111380; 1158; 3288.74; 272.499
+111380; 1544; 3317.1; 272.499
+111380; 1930; 3345.46; 272.499
+111380; 2316; 3373.82; 272.499
+111380; 2702; 3402.17; 272.499
+111380; 3088; 3430.53; 272.499
+111380; 3474; 3458.89; 272.499
+111380; 3860; 3487.25; 272.499
+111380; 4246; 3515.6; 272.499
+111380; 4632; 3543.96; 272.499
+111380; 5018; 3572.32; 272.499
+111380; 5404; 3600.68; 272.499
+111380; 5790; 3629.03; 272.499
+111380; 6176; 3657.39; 272.499
+111380; 6562; 3685.75; 272.499
+111380; 6948; 3714.11; 272.499
+111380; 7334; 3742.46; 272.499
+111380; 7720; 3770.82; 272.499
+111380; 8106; 3799.18; 272.499
+111380; 8492; 3827.54; 272.499
+111380; 8878; 3855.89; 272.499
+111380; 9264; 3884.25; 272.499
+111380; 9650; 3912.61; 272.499
+111380; 10036; 3940.97; 272.499
+111380; 10422; 3969.32; 272.499
+111380; 10808; 3997.68; 272.499
+111380; 11194; 4026.04; 272.499
+111380; 11580; 4054.4; 272.499
+111380; 11966; 4082.75; 272.499
+111380; 12352; 4111.11; 272.499
+111380; 12738; 4139.47; 272.499
+111380; 13124; 4167.83; 272.499
+111380; 13510; 4196.18; 272.499
+111380; 13896; 4224.54; 272.499
+111380; 14282; 4252.9; 272.499
+111380; 14668; 4281.26; 272.499
+111380; 15054; 4309.61; 272.499
+111380; 15440; 4337.97; 272.499
+111380; 15826; 4366.33; 272.499
+111380; 16212; 4394.69; 272.499
+111380; 16598; 4423.04; 272.499
+111380; 16984; 4451.4; 272.499
+111380; 17370; 4479.76; 272.499
+111380; 17756; 4508.12; 272.499
+111380; 18142; 4536.47; 272.499
+111380; 18528; 4564.83; 272.499
+111380; 18914; 4593.19; 272.499
+111380; 19300; 4621.55; 272.499
+
+222761; 0; 3641.87; 544.998
+222761; 386; 3674.1; 544.998
+222761; 772; 3706.34; 544.998
+222761; 1158; 3738.58; 544.998
+222761; 1544; 3770.81; 544.998
+222761; 1930; 3803.05; 544.998
+222761; 2316; 3835.29; 544.998
+222761; 2702; 3867.52; 544.998
+222761; 3088; 3899.76; 544.998
+222761; 3474; 3931.99; 544.998
+222761; 3860; 3964.23; 544.998
+222761; 4246; 3996.47; 544.998
+222761; 4632; 4028.7; 544.998
+222761; 5018; 4060.94; 544.998
+222761; 5404; 4093.17; 544.998
+222761; 5790; 4125.41; 544.998
+222761; 6176; 4157.65; 544.998
+222761; 6562; 4189.88; 544.998
+222761; 6948; 4222.12; 544.998
+222761; 7334; 4254.36; 544.998
+222761; 7720; 4286.59; 544.998
+222761; 8106; 4318.83; 544.998
+222761; 8492; 4351.06; 544.998
+222761; 8878; 4383.3; 544.998
+222761; 9264; 4415.54; 544.998
+222761; 9650; 4447.77; 544.998
+222761; 10036; 4480.01; 544.998
+222761; 10422; 4512.25; 544.998
+222761; 10808; 4544.48; 544.998
+222761; 11194; 4576.72; 544.998
+222761; 11580; 4608.95; 544.998
+222761; 11966; 4641.19; 544.998
+222761; 12352; 4673.43; 544.998
+222761; 12738; 4705.66; 544.998
+222761; 13124; 4737.9; 544.998
+222761; 13510; 4770.13; 544.998
+222761; 13896; 4802.37; 544.998
+222761; 14282; 4834.61; 544.998
+222761; 14668; 4866.84; 544.998
+222761; 15054; 4899.08; 544.998
+222761; 15440; 4931.32; 544.998
+222761; 15826; 4963.55; 544.998
+222761; 16212; 4995.79; 544.998
+222761; 16598; 5028.02; 544.998
+222761; 16984; 5060.26; 544.998
+222761; 17370; 5092.5; 544.998
+222761; 17756; 5124.73; 544.998
+222761; 18142; 5156.97; 544.998
+222761; 18528; 5189.21; 544.998
+222761; 18914; 5221.44; 544.998
+222761; 19300; 5253.68; 544.998
+
+334141; 0; 4083.76; 817.498
+334141; 386; 4119.91; 817.498
+334141; 772; 4156.05; 817.498
+334141; 1158; 4192.2; 817.498
+334141; 1544; 4228.35; 817.498
+334141; 1930; 4264.5; 817.498
+334141; 2316; 4300.64; 817.498
+334141; 2702; 4336.79; 817.498
+334141; 3088; 4372.94; 817.498
+334141; 3474; 4409.09; 817.498
+334141; 3860; 4445.23; 817.498
+334141; 4246; 4481.38; 817.498
+334141; 4632; 4517.53; 817.498
+334141; 5018; 4553.68; 817.498
+334141; 5404; 4589.83; 817.498
+334141; 5790; 4625.97; 817.498
+334141; 6176; 4662.12; 817.498
+334141; 6562; 4698.27; 817.498
+334141; 6948; 4734.42; 817.498
+334141; 7334; 4770.56; 817.498
+334141; 7720; 4806.71; 817.498
+334141; 8106; 4842.86; 817.498
+334141; 8492; 4879.01; 817.498
+334141; 8878; 4915.15; 817.498
+334141; 9264; 4951.3; 817.498
+334141; 9650; 4987.45; 817.498
+334141; 10036; 5023.6; 817.498
+334141; 10422; 5059.74; 817.498
+334141; 10808; 5095.89; 817.498
+334141; 11194; 5132.04; 817.498
+334141; 11580; 5168.19; 817.498
+334141; 11966; 5204.33; 817.498
+334141; 12352; 5240.48; 817.498
+334141; 12738; 5276.63; 817.498
+334141; 13124; 5312.78; 817.498
+334141; 13510; 5348.92; 817.498
+334141; 13896; 5385.07; 817.498
+334141; 14282; 5421.22; 817.498
+334141; 14668; 5457.37; 817.498
+334141; 15054; 5493.52; 817.498
+334141; 15440; 5529.66; 817.498
+334141; 15826; 5565.81; 817.498
+334141; 16212; 5601.96; 817.498
+334141; 16598; 5638.11; 817.498
+334141; 16984; 5674.25; 817.498
+334141; 17370; 5710.4; 817.498
+334141; 17756; 5746.55; 817.498
+334141; 18142; 5782.7; 817.498
+334141; 18528; 5818.84; 817.498
+334141; 18914; 5854.99; 817.498
+334141; 19300; 5891.14; 817.498
+
+445522; 0; 4529.37; 1090
+445522; 386; 4569.46; 1090
+445522; 772; 4609.56; 1090
+445522; 1158; 4649.65; 1090
+445522; 1544; 4689.74; 1090
+445522; 1930; 4729.83; 1090
+445522; 2316; 4769.92; 1090
+445522; 2702; 4810.02; 1090
+445522; 3088; 4850.11; 1090
+445522; 3474; 4890.2; 1090
+445522; 3860; 4930.29; 1090
+445522; 4246; 4970.38; 1090
+445522; 4632; 5010.48; 1090
+445522; 5018; 5050.57; 1090
+445522; 5404; 5090.66; 1090
+445522; 5790; 5130.75; 1090
+445522; 6176; 5170.84; 1090
+445522; 6562; 5210.94; 1090
+445522; 6948; 5251.03; 1090
+445522; 7334; 5291.12; 1090
+445522; 7720; 5331.21; 1090
+445522; 8106; 5371.3; 1090
+445522; 8492; 5411.4; 1090
+445522; 8878; 5451.49; 1090
+445522; 9264; 5491.58; 1090
+445522; 9650; 5531.67; 1090
+445522; 10036; 5571.76; 1090
+445522; 10422; 5611.86; 1090
+445522; 10808; 5651.95; 1090
+445522; 11194; 5692.04; 1090
+445522; 11580; 5732.13; 1090
+445522; 11966; 5772.22; 1090
+445522; 12352; 5812.32; 1090
+445522; 12738; 5852.41; 1090
+445522; 13124; 5892.5; 1090
+445522; 13510; 5932.59; 1090
+445522; 13896; 5972.68; 1090
+445522; 14282; 6012.78; 1090
+445522; 14668; 6052.87; 1090
+445522; 15054; 6092.96; 1090
+445522; 15440; 6133.05; 1090
+445522; 15826; 6173.14; 1090
+445522; 16212; 6213.24; 1090
+445522; 16598; 6253.33; 1090
+445522; 16984; 6293.42; 1090
+445522; 17370; 6333.51; 1090
+445522; 17756; 6373.6; 1090
+445522; 18142; 6413.7; 1090
+445522; 18528; 6453.79; 1090
+445522; 18914; 6493.88; 1090
+445522; 19300; 6533.97; 1090
+
+556902; 0; 4978.74; 1362.5
+556902; 386; 5022.81; 1362.5
+556902; 772; 5066.88; 1362.5
+556902; 1158; 5110.95; 1362.5
+556902; 1544; 5155.02; 1362.5
+556902; 1930; 5199.09; 1362.5
+556902; 2316; 5243.16; 1362.5
+556902; 2702; 5287.23; 1362.5
+556902; 3088; 5331.3; 1362.5
+556902; 3474; 5375.37; 1362.5
+556902; 3860; 5419.44; 1362.5
+556902; 4246; 5463.51; 1362.5
+556902; 4632; 5507.58; 1362.5
+556902; 5018; 5551.65; 1362.5
+556902; 5404; 5595.72; 1362.5
+556902; 5790; 5639.78; 1362.5
+556902; 6176; 5683.85; 1362.5
+556902; 6562; 5727.92; 1362.5
+556902; 6948; 5771.99; 1362.5
+556902; 7334; 5816.06; 1362.5
+556902; 7720; 5860.13; 1362.5
+556902; 8106; 5904.2; 1362.5
+556902; 8492; 5948.27; 1362.5
+556902; 8878; 5992.34; 1362.5
+556902; 9264; 6036.41; 1362.5
+556902; 9650; 6080.48; 1362.5
+556902; 10036; 6124.55; 1362.5
+556902; 10422; 6168.62; 1362.5
+556902; 10808; 6212.69; 1362.5
+556902; 11194; 6256.76; 1362.5
+556902; 11580; 6300.83; 1362.5
+556902; 11966; 6344.9; 1362.5
+556902; 12352; 6388.97; 1362.5
+556902; 12738; 6433.04; 1362.5
+556902; 13124; 6477.11; 1362.5
+556902; 13510; 6521.18; 1362.5
+556902; 13896; 6565.25; 1362.5
+556902; 14282; 6609.32; 1362.5
+556902; 14668; 6653.39; 1362.5
+556902; 15054; 6697.45; 1362.5
+556902; 15440; 6741.52; 1362.5
+556902; 15826; 6785.59; 1362.5
+556902; 16212; 6829.66; 1362.5
+556902; 16598; 6873.73; 1362.5
+556902; 16984; 6917.8; 1362.5
+556902; 17370; 6961.87; 1362.5
+556902; 17756; 7005.94; 1362.5
+556902; 18142; 7050.01; 1362.5
+556902; 18528; 7094.08; 1362.5
+556902; 18914; 7138.15; 1362.5
+556902; 19300; 7182.22; 1362.5
+
+668283; 0; 5431.89; 1635
+668283; 386; 5479.97; 1635
+668283; 772; 5528.05; 1635
+668283; 1158; 5576.13; 1635
+668283; 1544; 5624.21; 1635
+668283; 1930; 5672.3; 1635
+668283; 2316; 5720.38; 1635
+668283; 2702; 5768.46; 1635
+668283; 3088; 5816.54; 1635
+668283; 3474; 5864.62; 1635
+668283; 3860; 5912.7; 1635
+668283; 4246; 5960.78; 1635
+668283; 4632; 6008.86; 1635
+668283; 5018; 6056.94; 1635
+668283; 5404; 6105.02; 1635
+668283; 5790; 6153.1; 1635
+668283; 6176; 6201.18; 1635
+668283; 6562; 6249.26; 1635
+668283; 6948; 6297.34; 1635
+668283; 7334; 6345.43; 1635
+668283; 7720; 6393.51; 1635
+668283; 8106; 6441.59; 1635
+668283; 8492; 6489.67; 1635
+668283; 8878; 6537.75; 1635
+668283; 9264; 6585.83; 1635
+668283; 9650; 6633.91; 1635
+668283; 10036; 6681.99; 1635
+668283; 10422; 6730.07; 1635
+668283; 10808; 6778.15; 1635
+668283; 11194; 6826.23; 1635
+668283; 11580; 6874.31; 1635
+668283; 11966; 6922.39; 1635
+668283; 12352; 6970.47; 1635
+668283; 12738; 7018.55; 1635
+668283; 13124; 7066.64; 1635
+668283; 13510; 7114.72; 1635
+668283; 13896; 7162.8; 1635
+668283; 14282; 7210.88; 1635
+668283; 14668; 7258.96; 1635
+668283; 15054; 7307.04; 1635
+668283; 15440; 7355.12; 1635
+668283; 15826; 7403.2; 1635
+668283; 16212; 7451.28; 1635
+668283; 16598; 7499.36; 1635
+668283; 16984; 7547.44; 1635
+668283; 17370; 7595.52; 1635
+668283; 17756; 7643.6; 1635
+668283; 18142; 7691.68; 1635
+668283; 18528; 7739.76; 1635
+668283; 18914; 7787.85; 1635
+668283; 19300; 7835.93; 1635
+
+779663; 0; 5888.93; 1907.49
+779663; 386; 5941.06; 1907.49
+779663; 772; 5993.19; 1907.49
+779663; 1158; 6045.31; 1907.49
+779663; 1544; 6097.44; 1907.49
+779663; 1930; 6149.56; 1907.49
+779663; 2316; 6201.69; 1907.49
+779663; 2702; 6253.82; 1907.49
+779663; 3088; 6305.94; 1907.49
+779663; 3474; 6358.07; 1907.49
+779663; 3860; 6410.19; 1907.49
+779663; 4246; 6462.32; 1907.49
+779663; 4632; 6514.45; 1907.49
+779663; 5018; 6566.57; 1907.49
+779663; 5404; 6618.7; 1907.49
+779663; 5790; 6670.83; 1907.49
+779663; 6176; 6722.95; 1907.49
+779663; 6562; 6775.08; 1907.49
+779663; 6948; 6827.2; 1907.49
+779663; 7334; 6879.33; 1907.49
+779663; 7720; 6931.46; 1907.49
+779663; 8106; 6983.58; 1907.49
+779663; 8492; 7035.71; 1907.49
+779663; 8878; 7087.84; 1907.49
+779663; 9264; 7139.96; 1907.49
+779663; 9650; 7192.09; 1907.49
+779663; 10036; 7244.21; 1907.49
+779663; 10422; 7296.34; 1907.49
+779663; 10808; 7348.47; 1907.49
+779663; 11194; 7400.59; 1907.49
+779663; 11580; 7452.72; 1907.49
+779663; 11966; 7504.85; 1907.49
+779663; 12352; 7556.97; 1907.49
+779663; 12738; 7609.1; 1907.49
+779663; 13124; 7661.22; 1907.49
+779663; 13510; 7713.35; 1907.49
+779663; 13896; 7765.48; 1907.49
+779663; 14282; 7817.6; 1907.49
+779663; 14668; 7869.73; 1907.49
+779663; 15054; 7921.85; 1907.49
+779663; 15440; 7973.98; 1907.49
+779663; 15826; 8026.11; 1907.49
+779663; 16212; 8078.23; 1907.49
+779663; 16598; 8130.36; 1907.49
+779663; 16984; 8182.49; 1907.49
+779663; 17370; 8234.61; 1907.49
+779663; 17756; 8286.74; 1907.49
+779663; 18142; 8338.86; 1907.49
+779663; 18528; 8390.99; 1907.49
+779663; 18914; 8443.12; 1907.49
+779663; 19300; 8495.24; 1907.49
+
+891044; 0; 6349.78; 2179.99
+891044; 386; 6405.98; 2179.99
+891044; 772; 6462.19; 2179.99
+891044; 1158; 6518.39; 2179.99
+891044; 1544; 6574.6; 2179.99
+891044; 1930; 6630.8; 2179.99
+891044; 2316; 6687.01; 2179.99
+891044; 2702; 6743.21; 2179.99
+891044; 3088; 6799.42; 2179.99
+891044; 3474; 6855.63; 2179.99
+891044; 3860; 6911.83; 2179.99
+891044; 4246; 6968.04; 2179.99
+891044; 4632; 7024.24; 2179.99
+891044; 5018; 7080.45; 2179.99
+891044; 5404; 7136.65; 2179.99
+891044; 5790; 7192.86; 2179.99
+891044; 6176; 7249.06; 2179.99
+891044; 6562; 7305.27; 2179.99
+891044; 6948; 7361.47; 2179.99
+891044; 7334; 7417.68; 2179.99
+891044; 7720; 7473.88; 2179.99
+891044; 8106; 7530.09; 2179.99
+891044; 8492; 7586.3; 2179.99
+891044; 8878; 7642.5; 2179.99
+891044; 9264; 7698.71; 2179.99
+891044; 9650; 7754.91; 2179.99
+891044; 10036; 7811.12; 2179.99
+891044; 10422; 7867.32; 2179.99
+891044; 10808; 7923.53; 2179.99
+891044; 11194; 7979.73; 2179.99
+891044; 11580; 8035.94; 2179.99
+891044; 11966; 8092.14; 2179.99
+891044; 12352; 8148.35; 2179.99
+891044; 12738; 8204.55; 2179.99
+891044; 13124; 8260.76; 2179.99
+891044; 13510; 8316.97; 2179.99
+891044; 13896; 8373.17; 2179.99
+891044; 14282; 8429.38; 2179.99
+891044; 14668; 8485.58; 2179.99
+891044; 15054; 8541.79; 2179.99
+891044; 15440; 8597.99; 2179.99
+891044; 15826; 8654.2; 2179.99
+891044; 16212; 8710.4; 2179.99
+891044; 16598; 8766.61; 2179.99
+891044; 16984; 8822.81; 2179.99
+891044; 17370; 8879.02; 2179.99
+891044; 17756; 8935.22; 2179.99
+891044; 18142; 8991.43; 2179.99
+891044; 18528; 9047.64; 2179.99
+891044; 18914; 9103.84; 2179.99
+891044; 19300; 9160.05; 2179.99
+
+1.00242e+06; 0; 6814.51; 2452.49
+1.00242e+06; 386; 6874.82; 2452.49
+1.00242e+06; 772; 6935.14; 2452.49
+1.00242e+06; 1158; 6995.46; 2452.49
+1.00242e+06; 1544; 7055.78; 2452.49
+1.00242e+06; 1930; 7116.1; 2452.49
+1.00242e+06; 2316; 7176.42; 2452.49
+1.00242e+06; 2702; 7236.74; 2452.49
+1.00242e+06; 3088; 7297.06; 2452.49
+1.00242e+06; 3474; 7357.38; 2452.49
+1.00242e+06; 3860; 7417.69; 2452.49
+1.00242e+06; 4246; 7478.01; 2452.49
+1.00242e+06; 4632; 7538.33; 2452.49
+1.00242e+06; 5018; 7598.65; 2452.49
+1.00242e+06; 5404; 7658.97; 2452.49
+1.00242e+06; 5790; 7719.29; 2452.49
+1.00242e+06; 6176; 7779.61; 2452.49
+1.00242e+06; 6562; 7839.93; 2452.49
+1.00242e+06; 6948; 7900.25; 2452.49
+1.00242e+06; 7334; 7960.57; 2452.49
+1.00242e+06; 7720; 8020.88; 2452.49
+1.00242e+06; 8106; 8081.2; 2452.49
+1.00242e+06; 8492; 8141.52; 2452.49
+1.00242e+06; 8878; 8201.84; 2452.49
+1.00242e+06; 9264; 8262.16; 2452.49
+1.00242e+06; 9650; 8322.48; 2452.49
+1.00242e+06; 10036; 8382.8; 2452.49
+1.00242e+06; 10422; 8443.12; 2452.49
+1.00242e+06; 10808; 8503.44; 2452.49
+1.00242e+06; 11194; 8563.75; 2452.49
+1.00242e+06; 11580; 8624.07; 2452.49
+1.00242e+06; 11966; 8684.39; 2452.49
+1.00242e+06; 12352; 8744.71; 2452.49
+1.00242e+06; 12738; 8805.03; 2452.49
+1.00242e+06; 13124; 8865.35; 2452.49
+1.00242e+06; 13510; 8925.67; 2452.49
+1.00242e+06; 13896; 8985.99; 2452.49
+1.00242e+06; 14282; 9046.31; 2452.49
+1.00242e+06; 14668; 9106.63; 2452.49
+1.00242e+06; 15054; 9166.94; 2452.49
+1.00242e+06; 15440; 9227.26; 2452.49
+1.00242e+06; 15826; 9287.58; 2452.49
+1.00242e+06; 16212; 9347.9; 2452.49
+1.00242e+06; 16598; 9408.22; 2452.49
+1.00242e+06; 16984; 9468.54; 2452.49
+1.00242e+06; 17370; 9528.86; 2452.49
+1.00242e+06; 17756; 9589.18; 2452.49
+1.00242e+06; 18142; 9649.5; 2452.49
+1.00242e+06; 18528; 9709.82; 2452.49
+1.00242e+06; 18914; 9770.13; 2452.49
+1.00242e+06; 19300; 9830.45; 2452.49
+
+1.1138e+06; 0; 7283.15; 2724.99
+1.1138e+06; 386; 7347.62; 2724.99
+1.1138e+06; 772; 7412.08; 2724.99
+1.1138e+06; 1158; 7476.55; 2724.99
+1.1138e+06; 1544; 7541.02; 2724.99
+1.1138e+06; 1930; 7605.49; 2724.99
+1.1138e+06; 2316; 7669.95; 2724.99
+1.1138e+06; 2702; 7734.42; 2724.99
+1.1138e+06; 3088; 7798.89; 2724.99
+1.1138e+06; 3474; 7863.35; 2724.99
+1.1138e+06; 3860; 7927.82; 2724.99
+1.1138e+06; 4246; 7992.29; 2724.99
+1.1138e+06; 4632; 8056.76; 2724.99
+1.1138e+06; 5018; 8121.22; 2724.99
+1.1138e+06; 5404; 8185.69; 2724.99
+1.1138e+06; 5790; 8250.16; 2724.99
+1.1138e+06; 6176; 8314.63; 2724.99
+1.1138e+06; 6562; 8379.09; 2724.99
+1.1138e+06; 6948; 8443.56; 2724.99
+1.1138e+06; 7334; 8508.03; 2724.99
+1.1138e+06; 7720; 8572.49; 2724.99
+1.1138e+06; 8106; 8636.96; 2724.99
+1.1138e+06; 8492; 8701.43; 2724.99
+1.1138e+06; 8878; 8765.9; 2724.99
+1.1138e+06; 9264; 8830.36; 2724.99
+1.1138e+06; 9650; 8894.83; 2724.99
+1.1138e+06; 10036; 8959.3; 2724.99
+1.1138e+06; 10422; 9023.76; 2724.99
+1.1138e+06; 10808; 9088.23; 2724.99
+1.1138e+06; 11194; 9152.7; 2724.99
+1.1138e+06; 11580; 9217.17; 2724.99
+1.1138e+06; 11966; 9281.63; 2724.99
+1.1138e+06; 12352; 9346.1; 2724.99
+1.1138e+06; 12738; 9410.57; 2724.99
+1.1138e+06; 13124; 9475.03; 2724.99
+1.1138e+06; 13510; 9539.5; 2724.99
+1.1138e+06; 13896; 9603.97; 2724.99
+1.1138e+06; 14282; 9668.44; 2724.99
+1.1138e+06; 14668; 9732.9; 2724.99
+1.1138e+06; 15054; 9797.37; 2724.99
+1.1138e+06; 15440; 9861.84; 2724.99
+1.1138e+06; 15826; 9926.3; 2724.99
+1.1138e+06; 16212; 9990.77; 2724.99
+1.1138e+06; 16598; 10055.2; 2724.99
+1.1138e+06; 16984; 10119.7; 2724.99
+1.1138e+06; 17370; 10184.2; 2724.99
+1.1138e+06; 17756; 10248.6; 2724.99
+1.1138e+06; 18142; 10313.1; 2724.99
+1.1138e+06; 18528; 10377.6; 2724.99
+1.1138e+06; 18914; 10442; 2724.99
+1.1138e+06; 19300; 10506.5; 2724.99
+
+1.22519e+06; 0; 7755.74; 2997.49
+1.22519e+06; 386; 7824.39; 2997.49
+1.22519e+06; 772; 7893.04; 2997.49
+1.22519e+06; 1158; 7961.69; 2997.49
+1.22519e+06; 1544; 8030.34; 2997.49
+1.22519e+06; 1930; 8099; 2997.49
+1.22519e+06; 2316; 8167.65; 2997.49
+1.22519e+06; 2702; 8236.3; 2997.49
+1.22519e+06; 3088; 8304.95; 2997.49
+1.22519e+06; 3474; 8373.6; 2997.49
+1.22519e+06; 3860; 8442.25; 2997.49
+1.22519e+06; 4246; 8510.9; 2997.49
+1.22519e+06; 4632; 8579.55; 2997.49
+1.22519e+06; 5018; 8648.2; 2997.49
+1.22519e+06; 5404; 8716.85; 2997.49
+1.22519e+06; 5790; 8785.5; 2997.49
+1.22519e+06; 6176; 8854.15; 2997.49
+1.22519e+06; 6562; 8922.8; 2997.49
+1.22519e+06; 6948; 8991.45; 2997.49
+1.22519e+06; 7334; 9060.1; 2997.49
+1.22519e+06; 7720; 9128.75; 2997.49
+1.22519e+06; 8106; 9197.4; 2997.49
+1.22519e+06; 8492; 9266.05; 2997.49
+1.22519e+06; 8878; 9334.7; 2997.49
+1.22519e+06; 9264; 9403.35; 2997.49
+1.22519e+06; 9650; 9472; 2997.49
+1.22519e+06; 10036; 9540.65; 2997.49
+1.22519e+06; 10422; 9609.3; 2997.49
+1.22519e+06; 10808; 9677.95; 2997.49
+1.22519e+06; 11194; 9746.6; 2997.49
+1.22519e+06; 11580; 9815.25; 2997.49
+1.22519e+06; 11966; 9883.9; 2997.49
+1.22519e+06; 12352; 9952.56; 2997.49
+1.22519e+06; 12738; 10021.2; 2997.49
+1.22519e+06; 13124; 10089.9; 2997.49
+1.22519e+06; 13510; 10158.5; 2997.49
+1.22519e+06; 13896; 10227.2; 2997.49
+1.22519e+06; 14282; 10295.8; 2997.49
+1.22519e+06; 14668; 10364.5; 2997.49
+1.22519e+06; 15054; 10433.1; 2997.49
+1.22519e+06; 15440; 10501.8; 2997.49
+1.22519e+06; 15826; 10570.4; 2997.49
+1.22519e+06; 16212; 10639.1; 2997.49
+1.22519e+06; 16598; 10707.7; 2997.49
+1.22519e+06; 16984; 10776.4; 2997.49
+1.22519e+06; 17370; 10845; 2997.49
+1.22519e+06; 17756; 10913.7; 2997.49
+1.22519e+06; 18142; 10982.3; 2997.49
+1.22519e+06; 18528; 11051; 2997.49
+1.22519e+06; 18914; 11119.6; 2997.49
+1.22519e+06; 19300; 11188.3; 2997.49
+
+1.33657e+06; 0; 8232.32; 3269.99
+1.33657e+06; 386; 8305.19; 3269.99
+1.33657e+06; 772; 8378.05; 3269.99
+1.33657e+06; 1158; 8450.92; 3269.99
+1.33657e+06; 1544; 8523.79; 3269.99
+1.33657e+06; 1930; 8596.66; 3269.99
+1.33657e+06; 2316; 8669.53; 3269.99
+1.33657e+06; 2702; 8742.4; 3269.99
+1.33657e+06; 3088; 8815.27; 3269.99
+1.33657e+06; 3474; 8888.14; 3269.99
+1.33657e+06; 3860; 8961; 3269.99
+1.33657e+06; 4246; 9033.87; 3269.99
+1.33657e+06; 4632; 9106.74; 3269.99
+1.33657e+06; 5018; 9179.61; 3269.99
+1.33657e+06; 5404; 9252.48; 3269.99
+1.33657e+06; 5790; 9325.35; 3269.99
+1.33657e+06; 6176; 9398.22; 3269.99
+1.33657e+06; 6562; 9471.09; 3269.99
+1.33657e+06; 6948; 9543.95; 3269.99
+1.33657e+06; 7334; 9616.82; 3269.99
+1.33657e+06; 7720; 9689.69; 3269.99
+1.33657e+06; 8106; 9762.56; 3269.99
+1.33657e+06; 8492; 9835.43; 3269.99
+1.33657e+06; 8878; 9908.3; 3269.99
+1.33657e+06; 9264; 9981.17; 3269.99
+1.33657e+06; 9650; 10054; 3269.99
+1.33657e+06; 10036; 10126.9; 3269.99
+1.33657e+06; 10422; 10199.8; 3269.99
+1.33657e+06; 10808; 10272.6; 3269.99
+1.33657e+06; 11194; 10345.5; 3269.99
+1.33657e+06; 11580; 10418.4; 3269.99
+1.33657e+06; 11966; 10491.2; 3269.99
+1.33657e+06; 12352; 10564.1; 3269.99
+1.33657e+06; 12738; 10637; 3269.99
+1.33657e+06; 13124; 10709.9; 3269.99
+1.33657e+06; 13510; 10782.7; 3269.99
+1.33657e+06; 13896; 10855.6; 3269.99
+1.33657e+06; 14282; 10928.5; 3269.99
+1.33657e+06; 14668; 11001.3; 3269.99
+1.33657e+06; 15054; 11074.2; 3269.99
+1.33657e+06; 15440; 11147.1; 3269.99
+1.33657e+06; 15826; 11219.9; 3269.99
+1.33657e+06; 16212; 11292.8; 3269.99
+1.33657e+06; 16598; 11365.7; 3269.99
+1.33657e+06; 16984; 11438.5; 3269.99
+1.33657e+06; 17370; 11511.4; 3269.99
+1.33657e+06; 17756; 11584.3; 3269.99
+1.33657e+06; 18142; 11657.1; 3269.99
+1.33657e+06; 18528; 11730; 3269.99
+1.33657e+06; 18914; 11802.9; 3269.99
+1.33657e+06; 19300; 11875.8; 3269.99
+
+1.44795e+06; 0; 8712.9; 3542.49
+1.44795e+06; 386; 8790.02; 3542.49
+1.44795e+06; 772; 8867.15; 3542.49
+1.44795e+06; 1158; 8944.27; 3542.49
+1.44795e+06; 1544; 9021.39; 3542.49
+1.44795e+06; 1930; 9098.52; 3542.49
+1.44795e+06; 2316; 9175.64; 3542.49
+1.44795e+06; 2702; 9252.76; 3542.49
+1.44795e+06; 3088; 9329.88; 3542.49
+1.44795e+06; 3474; 9407.01; 3542.49
+1.44795e+06; 3860; 9484.13; 3542.49
+1.44795e+06; 4246; 9561.25; 3542.49
+1.44795e+06; 4632; 9638.37; 3542.49
+1.44795e+06; 5018; 9715.5; 3542.49
+1.44795e+06; 5404; 9792.62; 3542.49
+1.44795e+06; 5790; 9869.74; 3542.49
+1.44795e+06; 6176; 9946.87; 3542.49
+1.44795e+06; 6562; 10024; 3542.49
+1.44795e+06; 6948; 10101.1; 3542.49
+1.44795e+06; 7334; 10178.2; 3542.49
+1.44795e+06; 7720; 10255.4; 3542.49
+1.44795e+06; 8106; 10332.5; 3542.49
+1.44795e+06; 8492; 10409.6; 3542.49
+1.44795e+06; 8878; 10486.7; 3542.49
+1.44795e+06; 9264; 10563.8; 3542.49
+1.44795e+06; 9650; 10641; 3542.49
+1.44795e+06; 10036; 10718.1; 3542.49
+1.44795e+06; 10422; 10795.2; 3542.49
+1.44795e+06; 10808; 10872.3; 3542.49
+1.44795e+06; 11194; 10949.5; 3542.49
+1.44795e+06; 11580; 11026.6; 3542.49
+1.44795e+06; 11966; 11103.7; 3542.49
+1.44795e+06; 12352; 11180.8; 3542.49
+1.44795e+06; 12738; 11258; 3542.49
+1.44795e+06; 13124; 11335.1; 3542.49
+1.44795e+06; 13510; 11412.2; 3542.49
+1.44795e+06; 13896; 11489.3; 3542.49
+1.44795e+06; 14282; 11566.4; 3542.49
+1.44795e+06; 14668; 11643.6; 3542.49
+1.44795e+06; 15054; 11720.7; 3542.49
+1.44795e+06; 15440; 11797.8; 3542.49
+1.44795e+06; 15826; 11874.9; 3542.49
+1.44795e+06; 16212; 11952.1; 3542.49
+1.44795e+06; 16598; 12029.2; 3542.49
+1.44795e+06; 16984; 12106.3; 3542.49
+1.44795e+06; 17370; 12183.4; 3542.49
+1.44795e+06; 17756; 12260.5; 3542.49
+1.44795e+06; 18142; 12337.7; 3542.49
+1.44795e+06; 18528; 12414.8; 3542.49
+1.44795e+06; 18914; 12491.9; 3542.49
+1.44795e+06; 19300; 12569; 3542.49
+
+1.55933e+06; 0; 9197.53; 3814.99
+1.55933e+06; 386; 9278.94; 3814.99
+1.55933e+06; 772; 9360.36; 3814.99
+1.55933e+06; 1158; 9441.77; 3814.99
+1.55933e+06; 1544; 9523.18; 3814.99
+1.55933e+06; 1930; 9604.59; 3814.99
+1.55933e+06; 2316; 9686.01; 3814.99
+1.55933e+06; 2702; 9767.42; 3814.99
+1.55933e+06; 3088; 9848.83; 3814.99
+1.55933e+06; 3474; 9930.24; 3814.99
+1.55933e+06; 3860; 10011.7; 3814.99
+1.55933e+06; 4246; 10093.1; 3814.99
+1.55933e+06; 4632; 10174.5; 3814.99
+1.55933e+06; 5018; 10255.9; 3814.99
+1.55933e+06; 5404; 10337.3; 3814.99
+1.55933e+06; 5790; 10418.7; 3814.99
+1.55933e+06; 6176; 10500.1; 3814.99
+1.55933e+06; 6562; 10581.5; 3814.99
+1.55933e+06; 6948; 10663; 3814.99
+1.55933e+06; 7334; 10744.4; 3814.99
+1.55933e+06; 7720; 10825.8; 3814.99
+1.55933e+06; 8106; 10907.2; 3814.99
+1.55933e+06; 8492; 10988.6; 3814.99
+1.55933e+06; 8878; 11070; 3814.99
+1.55933e+06; 9264; 11151.4; 3814.99
+1.55933e+06; 9650; 11232.8; 3814.99
+1.55933e+06; 10036; 11314.3; 3814.99
+1.55933e+06; 10422; 11395.7; 3814.99
+1.55933e+06; 10808; 11477.1; 3814.99
+1.55933e+06; 11194; 11558.5; 3814.99
+1.55933e+06; 11580; 11639.9; 3814.99
+1.55933e+06; 11966; 11721.3; 3814.99
+1.55933e+06; 12352; 11802.7; 3814.99
+1.55933e+06; 12738; 11884.1; 3814.99
+1.55933e+06; 13124; 11965.6; 3814.99
+1.55933e+06; 13510; 12047; 3814.99
+1.55933e+06; 13896; 12128.4; 3814.99
+1.55933e+06; 14282; 12209.8; 3814.99
+1.55933e+06; 14668; 12291.2; 3814.99
+1.55933e+06; 15054; 12372.6; 3814.99
+1.55933e+06; 15440; 12454; 3814.99
+1.55933e+06; 15826; 12535.4; 3814.99
+1.55933e+06; 16212; 12616.9; 3814.99
+1.55933e+06; 16598; 12698.3; 3814.99
+1.55933e+06; 16984; 12779.7; 3814.99
+1.55933e+06; 17370; 12861.1; 3814.99
+1.55933e+06; 17756; 12942.5; 3814.99
+1.55933e+06; 18142; 13023.9; 3814.99
+1.55933e+06; 18528; 13105.3; 3814.99
+1.55933e+06; 18914; 13186.7; 3814.99
+1.55933e+06; 19300; 13268.2; 3814.99
+
+1.67071e+06; 0; 9686.4; 4087.49
+1.67071e+06; 386; 9772.14; 4087.49
+1.67071e+06; 772; 9857.88; 4087.49
+1.67071e+06; 1158; 9943.62; 4087.49
+1.67071e+06; 1544; 10029.4; 4087.49
+1.67071e+06; 1930; 10115.1; 4087.49
+1.67071e+06; 2316; 10200.8; 4087.49
+1.67071e+06; 2702; 10286.6; 4087.49
+1.67071e+06; 3088; 10372.3; 4087.49
+1.67071e+06; 3474; 10458.1; 4087.49
+1.67071e+06; 3860; 10543.8; 4087.49
+1.67071e+06; 4246; 10629.5; 4087.49
+1.67071e+06; 4632; 10715.3; 4087.49
+1.67071e+06; 5018; 10801; 4087.49
+1.67071e+06; 5404; 10886.8; 4087.49
+1.67071e+06; 5790; 10972.5; 4087.49
+1.67071e+06; 6176; 11058.2; 4087.49
+1.67071e+06; 6562; 11144; 4087.49
+1.67071e+06; 6948; 11229.7; 4087.49
+1.67071e+06; 7334; 11315.5; 4087.49
+1.67071e+06; 7720; 11401.2; 4087.49
+1.67071e+06; 8106; 11486.9; 4087.49
+1.67071e+06; 8492; 11572.7; 4087.49
+1.67071e+06; 8878; 11658.4; 4087.49
+1.67071e+06; 9264; 11744.2; 4087.49
+1.67071e+06; 9650; 11829.9; 4087.49
+1.67071e+06; 10036; 11915.6; 4087.49
+1.67071e+06; 10422; 12001.4; 4087.49
+1.67071e+06; 10808; 12087.1; 4087.49
+1.67071e+06; 11194; 12172.9; 4087.49
+1.67071e+06; 11580; 12258.6; 4087.49
+1.67071e+06; 11966; 12344.3; 4087.49
+1.67071e+06; 12352; 12430.1; 4087.49
+1.67071e+06; 12738; 12515.8; 4087.49
+1.67071e+06; 13124; 12601.6; 4087.49
+1.67071e+06; 13510; 12687.3; 4087.49
+1.67071e+06; 13896; 12773; 4087.49
+1.67071e+06; 14282; 12858.8; 4087.49
+1.67071e+06; 14668; 12944.5; 4087.49
+1.67071e+06; 15054; 13030.3; 4087.49
+1.67071e+06; 15440; 13116; 4087.49
+1.67071e+06; 15826; 13201.7; 4087.49
+1.67071e+06; 16212; 13287.5; 4087.49
+1.67071e+06; 16598; 13373.2; 4087.49
+1.67071e+06; 16984; 13459; 4087.49
+1.67071e+06; 17370; 13544.7; 4087.49
+1.67071e+06; 17756; 13630.4; 4087.49
+1.67071e+06; 18142; 13716.2; 4087.49
+1.67071e+06; 18528; 13801.9; 4087.49
+1.67071e+06; 18914; 13887.6; 4087.49
+1.67071e+06; 19300; 13973.4; 4087.49
+
+1.78209e+06; 0; 10179.3; 4359.99
+1.78209e+06; 386; 10269.4; 4359.99
+1.78209e+06; 772; 10359.5; 4359.99
+1.78209e+06; 1158; 10449.6; 4359.99
+1.78209e+06; 1544; 10539.7; 4359.99
+1.78209e+06; 1930; 10629.8; 4359.99
+1.78209e+06; 2316; 10719.9; 4359.99
+1.78209e+06; 2702; 10810; 4359.99
+1.78209e+06; 3088; 10900.1; 4359.99
+1.78209e+06; 3474; 10990.2; 4359.99
+1.78209e+06; 3860; 11080.3; 4359.99
+1.78209e+06; 4246; 11170.4; 4359.99
+1.78209e+06; 4632; 11260.5; 4359.99
+1.78209e+06; 5018; 11350.6; 4359.99
+1.78209e+06; 5404; 11440.7; 4359.99
+1.78209e+06; 5790; 11530.8; 4359.99
+1.78209e+06; 6176; 11620.9; 4359.99
+1.78209e+06; 6562; 11711; 4359.99
+1.78209e+06; 6948; 11801.1; 4359.99
+1.78209e+06; 7334; 11891.2; 4359.99
+1.78209e+06; 7720; 11981.3; 4359.99
+1.78209e+06; 8106; 12071.4; 4359.99
+1.78209e+06; 8492; 12161.5; 4359.99
+1.78209e+06; 8878; 12251.6; 4359.99
+1.78209e+06; 9264; 12341.7; 4359.99
+1.78209e+06; 9650; 12431.8; 4359.99
+1.78209e+06; 10036; 12521.9; 4359.99
+1.78209e+06; 10422; 12612; 4359.99
+1.78209e+06; 10808; 12702.1; 4359.99
+1.78209e+06; 11194; 12792.2; 4359.99
+1.78209e+06; 11580; 12882.3; 4359.99
+1.78209e+06; 11966; 12972.4; 4359.99
+1.78209e+06; 12352; 13062.5; 4359.99
+1.78209e+06; 12738; 13152.6; 4359.99
+1.78209e+06; 13124; 13242.8; 4359.99
+1.78209e+06; 13510; 13332.9; 4359.99
+1.78209e+06; 13896; 13423; 4359.99
+1.78209e+06; 14282; 13513.1; 4359.99
+1.78209e+06; 14668; 13603.2; 4359.99
+1.78209e+06; 15054; 13693.3; 4359.99
+1.78209e+06; 15440; 13783.4; 4359.99
+1.78209e+06; 15826; 13873.5; 4359.99
+1.78209e+06; 16212; 13963.6; 4359.99
+1.78209e+06; 16598; 14053.7; 4359.99
+1.78209e+06; 16984; 14143.8; 4359.99
+1.78209e+06; 17370; 14233.9; 4359.99
+1.78209e+06; 17756; 14324; 4359.99
+1.78209e+06; 18142; 14414.1; 4359.99
+1.78209e+06; 18528; 14504.2; 4359.99
+1.78209e+06; 18914; 14594.3; 4359.99
+1.78209e+06; 19300; 14684.4; 4359.99
+
+1.89347e+06; 0; 10676.3; 4632.49
+1.89347e+06; 386; 10770.8; 4632.49
+1.89347e+06; 772; 10865.3; 4632.49
+1.89347e+06; 1158; 10959.8; 4632.49
+1.89347e+06; 1544; 11054.3; 4632.49
+1.89347e+06; 1930; 11148.8; 4632.49
+1.89347e+06; 2316; 11243.3; 4632.49
+1.89347e+06; 2702; 11337.8; 4632.49
+1.89347e+06; 3088; 11432.3; 4632.49
+1.89347e+06; 3474; 11526.8; 4632.49
+1.89347e+06; 3860; 11621.3; 4632.49
+1.89347e+06; 4246; 11715.8; 4632.49
+1.89347e+06; 4632; 11810.3; 4632.49
+1.89347e+06; 5018; 11904.8; 4632.49
+1.89347e+06; 5404; 11999.3; 4632.49
+1.89347e+06; 5790; 12093.8; 4632.49
+1.89347e+06; 6176; 12188.3; 4632.49
+1.89347e+06; 6562; 12282.8; 4632.49
+1.89347e+06; 6948; 12377.3; 4632.49
+1.89347e+06; 7334; 12471.8; 4632.49
+1.89347e+06; 7720; 12566.3; 4632.49
+1.89347e+06; 8106; 12660.8; 4632.49
+1.89347e+06; 8492; 12755.3; 4632.49
+1.89347e+06; 8878; 12849.8; 4632.49
+1.89347e+06; 9264; 12944.3; 4632.49
+1.89347e+06; 9650; 13038.8; 4632.49
+1.89347e+06; 10036; 13133.3; 4632.49
+1.89347e+06; 10422; 13227.8; 4632.49
+1.89347e+06; 10808; 13322.3; 4632.49
+1.89347e+06; 11194; 13416.8; 4632.49
+1.89347e+06; 11580; 13511.3; 4632.49
+1.89347e+06; 11966; 13605.8; 4632.49
+1.89347e+06; 12352; 13700.3; 4632.49
+1.89347e+06; 12738; 13794.9; 4632.49
+1.89347e+06; 13124; 13889.4; 4632.49
+1.89347e+06; 13510; 13983.9; 4632.49
+1.89347e+06; 13896; 14078.4; 4632.49
+1.89347e+06; 14282; 14172.9; 4632.49
+1.89347e+06; 14668; 14267.4; 4632.49
+1.89347e+06; 15054; 14361.9; 4632.49
+1.89347e+06; 15440; 14456.4; 4632.49
+1.89347e+06; 15826; 14550.9; 4632.49
+1.89347e+06; 16212; 14645.4; 4632.49
+1.89347e+06; 16598; 14739.9; 4632.49
+1.89347e+06; 16984; 14834.4; 4632.49
+1.89347e+06; 17370; 14928.9; 4632.49
+1.89347e+06; 17756; 15023.4; 4632.49
+1.89347e+06; 18142; 15117.9; 4632.49
+1.89347e+06; 18528; 15212.4; 4632.49
+1.89347e+06; 18914; 15306.9; 4632.49
+1.89347e+06; 19300; 15401.4; 4632.49
+
+2.00485e+06; 0; 11177.5; 4904.99
+2.00485e+06; 386; 11276.4; 4904.99
+2.00485e+06; 772; 11375.4; 4904.99
+2.00485e+06; 1158; 11474.3; 4904.99
+2.00485e+06; 1544; 11573.3; 4904.99
+2.00485e+06; 1930; 11672.2; 4904.99
+2.00485e+06; 2316; 11771.1; 4904.99
+2.00485e+06; 2702; 11870.1; 4904.99
+2.00485e+06; 3088; 11969; 4904.99
+2.00485e+06; 3474; 12067.9; 4904.99
+2.00485e+06; 3860; 12166.9; 4904.99
+2.00485e+06; 4246; 12265.8; 4904.99
+2.00485e+06; 4632; 12364.8; 4904.99
+2.00485e+06; 5018; 12463.7; 4904.99
+2.00485e+06; 5404; 12562.6; 4904.99
+2.00485e+06; 5790; 12661.6; 4904.99
+2.00485e+06; 6176; 12760.5; 4904.99
+2.00485e+06; 6562; 12859.4; 4904.99
+2.00485e+06; 6948; 12958.4; 4904.99
+2.00485e+06; 7334; 13057.3; 4904.99
+2.00485e+06; 7720; 13156.3; 4904.99
+2.00485e+06; 8106; 13255.2; 4904.99
+2.00485e+06; 8492; 13354.1; 4904.99
+2.00485e+06; 8878; 13453.1; 4904.99
+2.00485e+06; 9264; 13552; 4904.99
+2.00485e+06; 9650; 13651; 4904.99
+2.00485e+06; 10036; 13749.9; 4904.99
+2.00485e+06; 10422; 13848.8; 4904.99
+2.00485e+06; 10808; 13947.8; 4904.99
+2.00485e+06; 11194; 14046.7; 4904.99
+2.00485e+06; 11580; 14145.6; 4904.99
+2.00485e+06; 11966; 14244.6; 4904.99
+2.00485e+06; 12352; 14343.5; 4904.99
+2.00485e+06; 12738; 14442.5; 4904.99
+2.00485e+06; 13124; 14541.4; 4904.99
+2.00485e+06; 13510; 14640.3; 4904.99
+2.00485e+06; 13896; 14739.3; 4904.99
+2.00485e+06; 14282; 14838.2; 4904.99
+2.00485e+06; 14668; 14937.2; 4904.99
+2.00485e+06; 15054; 15036.1; 4904.99
+2.00485e+06; 15440; 15135; 4904.99
+2.00485e+06; 15826; 15234; 4904.99
+2.00485e+06; 16212; 15332.9; 4904.99
+2.00485e+06; 16598; 15431.8; 4904.99
+2.00485e+06; 16984; 15530.8; 4904.99
+2.00485e+06; 17370; 15629.7; 4904.99
+2.00485e+06; 17756; 15728.7; 4904.99
+2.00485e+06; 18142; 15827.6; 4904.99
+2.00485e+06; 18528; 15926.5; 4904.99
+2.00485e+06; 18914; 16025.5; 4904.99
+2.00485e+06; 19300; 16124.4; 4904.99
+
+2.11623e+06; 0; 11682.9; 5177.49
+2.11623e+06; 386; 11786.3; 5177.49
+2.11623e+06; 772; 11889.8; 5177.49
+2.11623e+06; 1158; 11993.2; 5177.49
+2.11623e+06; 1544; 12096.6; 5177.49
+2.11623e+06; 1930; 12200; 5177.49
+2.11623e+06; 2316; 12303.4; 5177.49
+2.11623e+06; 2702; 12406.8; 5177.49
+2.11623e+06; 3088; 12510.2; 5177.49
+2.11623e+06; 3474; 12613.6; 5177.49
+2.11623e+06; 3860; 12717; 5177.49
+2.11623e+06; 4246; 12820.5; 5177.49
+2.11623e+06; 4632; 12923.9; 5177.49
+2.11623e+06; 5018; 13027.3; 5177.49
+2.11623e+06; 5404; 13130.7; 5177.49
+2.11623e+06; 5790; 13234.1; 5177.49
+2.11623e+06; 6176; 13337.5; 5177.49
+2.11623e+06; 6562; 13440.9; 5177.49
+2.11623e+06; 6948; 13544.3; 5177.49
+2.11623e+06; 7334; 13647.8; 5177.49
+2.11623e+06; 7720; 13751.2; 5177.49
+2.11623e+06; 8106; 13854.6; 5177.49
+2.11623e+06; 8492; 13958; 5177.49
+2.11623e+06; 8878; 14061.4; 5177.49
+2.11623e+06; 9264; 14164.8; 5177.49
+2.11623e+06; 9650; 14268.2; 5177.49
+2.11623e+06; 10036; 14371.6; 5177.49
+2.11623e+06; 10422; 14475.1; 5177.49
+2.11623e+06; 10808; 14578.5; 5177.49
+2.11623e+06; 11194; 14681.9; 5177.49
+2.11623e+06; 11580; 14785.3; 5177.49
+2.11623e+06; 11966; 14888.7; 5177.49
+2.11623e+06; 12352; 14992.1; 5177.49
+2.11623e+06; 12738; 15095.5; 5177.49
+2.11623e+06; 13124; 15198.9; 5177.49
+2.11623e+06; 13510; 15302.4; 5177.49
+2.11623e+06; 13896; 15405.8; 5177.49
+2.11623e+06; 14282; 15509.2; 5177.49
+2.11623e+06; 14668; 15612.6; 5177.49
+2.11623e+06; 15054; 15716; 5177.49
+2.11623e+06; 15440; 15819.4; 5177.49
+2.11623e+06; 15826; 15922.8; 5177.49
+2.11623e+06; 16212; 16026.2; 5177.49
+2.11623e+06; 16598; 16129.6; 5177.49
+2.11623e+06; 16984; 16233.1; 5177.49
+2.11623e+06; 17370; 16336.5; 5177.49
+2.11623e+06; 17756; 16439.9; 5177.49
+2.11623e+06; 18142; 16543.3; 5177.49
+2.11623e+06; 18528; 16646.7; 5177.49
+2.11623e+06; 18914; 16750.1; 5177.49
+2.11623e+06; 19300; 16853.5; 5177.49
+
+2.22761e+06; 0; 12192.6; 5449.98
+2.22761e+06; 386; 12300.5; 5449.98
+2.22761e+06; 772; 12408.5; 5449.98
+2.22761e+06; 1158; 12516.4; 5449.98
+2.22761e+06; 1544; 12624.3; 5449.98
+2.22761e+06; 1930; 12732.2; 5449.98
+2.22761e+06; 2316; 12840.2; 5449.98
+2.22761e+06; 2702; 12948.1; 5449.98
+2.22761e+06; 3088; 13056; 5449.98
+2.22761e+06; 3474; 13163.9; 5449.98
+2.22761e+06; 3860; 13271.8; 5449.98
+2.22761e+06; 4246; 13379.8; 5449.98
+2.22761e+06; 4632; 13487.7; 5449.98
+2.22761e+06; 5018; 13595.6; 5449.98
+2.22761e+06; 5404; 13703.5; 5449.98
+2.22761e+06; 5790; 13811.5; 5449.98
+2.22761e+06; 6176; 13919.4; 5449.98
+2.22761e+06; 6562; 14027.3; 5449.98
+2.22761e+06; 6948; 14135.2; 5449.98
+2.22761e+06; 7334; 14243.2; 5449.98
+2.22761e+06; 7720; 14351.1; 5449.98
+2.22761e+06; 8106; 14459; 5449.98
+2.22761e+06; 8492; 14566.9; 5449.98
+2.22761e+06; 8878; 14674.9; 5449.98
+2.22761e+06; 9264; 14782.8; 5449.98
+2.22761e+06; 9650; 14890.7; 5449.98
+2.22761e+06; 10036; 14998.6; 5449.98
+2.22761e+06; 10422; 15106.5; 5449.98
+2.22761e+06; 10808; 15214.5; 5449.98
+2.22761e+06; 11194; 15322.4; 5449.98
+2.22761e+06; 11580; 15430.3; 5449.98
+2.22761e+06; 11966; 15538.2; 5449.98
+2.22761e+06; 12352; 15646.2; 5449.98
+2.22761e+06; 12738; 15754.1; 5449.98
+2.22761e+06; 13124; 15862; 5449.98
+2.22761e+06; 13510; 15969.9; 5449.98
+2.22761e+06; 13896; 16077.9; 5449.98
+2.22761e+06; 14282; 16185.8; 5449.98
+2.22761e+06; 14668; 16293.7; 5449.98
+2.22761e+06; 15054; 16401.6; 5449.98
+2.22761e+06; 15440; 16509.6; 5449.98
+2.22761e+06; 15826; 16617.5; 5449.98
+2.22761e+06; 16212; 16725.4; 5449.98
+2.22761e+06; 16598; 16833.3; 5449.98
+2.22761e+06; 16984; 16941.2; 5449.98
+2.22761e+06; 17370; 17049.2; 5449.98
+2.22761e+06; 17756; 17157.1; 5449.98
+2.22761e+06; 18142; 17265; 5449.98
+2.22761e+06; 18528; 17372.9; 5449.98
+2.22761e+06; 18914; 17480.9; 5449.98
+2.22761e+06; 19300; 17588.8; 5449.98
+
+2.33899e+06; 0; 12706.6; 5722.48
+2.33899e+06; 386; 12819.1; 5722.48
+2.33899e+06; 772; 12931.5; 5722.48
+2.33899e+06; 1158; 13044; 5722.48
+2.33899e+06; 1544; 13156.5; 5722.48
+2.33899e+06; 1930; 13269; 5722.48
+2.33899e+06; 2316; 13381.4; 5722.48
+2.33899e+06; 2702; 13493.9; 5722.48
+2.33899e+06; 3088; 13606.4; 5722.48
+2.33899e+06; 3474; 13718.8; 5722.48
+2.33899e+06; 3860; 13831.3; 5722.48
+2.33899e+06; 4246; 13943.8; 5722.48
+2.33899e+06; 4632; 14056.3; 5722.48
+2.33899e+06; 5018; 14168.7; 5722.48
+2.33899e+06; 5404; 14281.2; 5722.48
+2.33899e+06; 5790; 14393.7; 5722.48
+2.33899e+06; 6176; 14506.2; 5722.48
+2.33899e+06; 6562; 14618.6; 5722.48
+2.33899e+06; 6948; 14731.1; 5722.48
+2.33899e+06; 7334; 14843.6; 5722.48
+2.33899e+06; 7720; 14956; 5722.48
+2.33899e+06; 8106; 15068.5; 5722.48
+2.33899e+06; 8492; 15181; 5722.48
+2.33899e+06; 8878; 15293.5; 5722.48
+2.33899e+06; 9264; 15405.9; 5722.48
+2.33899e+06; 9650; 15518.4; 5722.48
+2.33899e+06; 10036; 15630.9; 5722.48
+2.33899e+06; 10422; 15743.4; 5722.48
+2.33899e+06; 10808; 15855.8; 5722.48
+2.33899e+06; 11194; 15968.3; 5722.48
+2.33899e+06; 11580; 16080.8; 5722.48
+2.33899e+06; 11966; 16193.2; 5722.48
+2.33899e+06; 12352; 16305.7; 5722.48
+2.33899e+06; 12738; 16418.2; 5722.48
+2.33899e+06; 13124; 16530.7; 5722.48
+2.33899e+06; 13510; 16643.1; 5722.48
+2.33899e+06; 13896; 16755.6; 5722.48
+2.33899e+06; 14282; 16868.1; 5722.48
+2.33899e+06; 14668; 16980.6; 5722.48
+2.33899e+06; 15054; 17093; 5722.48
+2.33899e+06; 15440; 17205.5; 5722.48
+2.33899e+06; 15826; 17318; 5722.48
+2.33899e+06; 16212; 17430.5; 5722.48
+2.33899e+06; 16598; 17542.9; 5722.48
+2.33899e+06; 16984; 17655.4; 5722.48
+2.33899e+06; 17370; 17767.9; 5722.48
+2.33899e+06; 17756; 17880.3; 5722.48
+2.33899e+06; 18142; 17992.8; 5722.48
+2.33899e+06; 18528; 18105.3; 5722.48
+2.33899e+06; 18914; 18217.8; 5722.48
+2.33899e+06; 19300; 18330.2; 5722.48
+
+2.45037e+06; 0; 13224.9; 5994.98
+2.45037e+06; 386; 13341.9; 5994.98
+2.45037e+06; 772; 13459; 5994.98
+2.45037e+06; 1158; 13576.1; 5994.98
+2.45037e+06; 1544; 13693.1; 5994.98
+2.45037e+06; 1930; 13810.2; 5994.98
+2.45037e+06; 2316; 13927.2; 5994.98
+2.45037e+06; 2702; 14044.3; 5994.98
+2.45037e+06; 3088; 14161.4; 5994.98
+2.45037e+06; 3474; 14278.4; 5994.98
+2.45037e+06; 3860; 14395.5; 5994.98
+2.45037e+06; 4246; 14512.5; 5994.98
+2.45037e+06; 4632; 14629.6; 5994.98
+2.45037e+06; 5018; 14746.7; 5994.98
+2.45037e+06; 5404; 14863.7; 5994.98
+2.45037e+06; 5790; 14980.8; 5994.98
+2.45037e+06; 6176; 15097.9; 5994.98
+2.45037e+06; 6562; 15214.9; 5994.98
+2.45037e+06; 6948; 15332; 5994.98
+2.45037e+06; 7334; 15449; 5994.98
+2.45037e+06; 7720; 15566.1; 5994.98
+2.45037e+06; 8106; 15683.2; 5994.98
+2.45037e+06; 8492; 15800.2; 5994.98
+2.45037e+06; 8878; 15917.3; 5994.98
+2.45037e+06; 9264; 16034.3; 5994.98
+2.45037e+06; 9650; 16151.4; 5994.98
+2.45037e+06; 10036; 16268.5; 5994.98
+2.45037e+06; 10422; 16385.5; 5994.98
+2.45037e+06; 10808; 16502.6; 5994.98
+2.45037e+06; 11194; 16619.6; 5994.98
+2.45037e+06; 11580; 16736.7; 5994.98
+2.45037e+06; 11966; 16853.8; 5994.98
+2.45037e+06; 12352; 16970.8; 5994.98
+2.45037e+06; 12738; 17087.9; 5994.98
+2.45037e+06; 13124; 17204.9; 5994.98
+2.45037e+06; 13510; 17322; 5994.98
+2.45037e+06; 13896; 17439.1; 5994.98
+2.45037e+06; 14282; 17556.1; 5994.98
+2.45037e+06; 14668; 17673.2; 5994.98
+2.45037e+06; 15054; 17790.3; 5994.98
+2.45037e+06; 15440; 17907.3; 5994.98
+2.45037e+06; 15826; 18024.4; 5994.98
+2.45037e+06; 16212; 18141.4; 5994.98
+2.45037e+06; 16598; 18258.5; 5994.98
+2.45037e+06; 16984; 18375.6; 5994.98
+2.45037e+06; 17370; 18492.6; 5994.98
+2.45037e+06; 17756; 18609.7; 5994.98
+2.45037e+06; 18142; 18726.7; 5994.98
+2.45037e+06; 18528; 18843.8; 5994.98
+2.45037e+06; 18914; 18960.9; 5994.98
+2.45037e+06; 19300; 19077.9; 5994.98
+
+2.56175e+06; 0; 13747.5; 6267.48
+2.56175e+06; 386; 13869.2; 6267.48
+2.56175e+06; 772; 13990.9; 6267.48
+2.56175e+06; 1158; 14112.6; 6267.48
+2.56175e+06; 1544; 14234.3; 6267.48
+2.56175e+06; 1930; 14356; 6267.48
+2.56175e+06; 2316; 14477.7; 6267.48
+2.56175e+06; 2702; 14599.3; 6267.48
+2.56175e+06; 3088; 14721; 6267.48
+2.56175e+06; 3474; 14842.7; 6267.48
+2.56175e+06; 3860; 14964.4; 6267.48
+2.56175e+06; 4246; 15086.1; 6267.48
+2.56175e+06; 4632; 15207.8; 6267.48
+2.56175e+06; 5018; 15329.5; 6267.48
+2.56175e+06; 5404; 15451.2; 6267.48
+2.56175e+06; 5790; 15572.8; 6267.48
+2.56175e+06; 6176; 15694.5; 6267.48
+2.56175e+06; 6562; 15816.2; 6267.48
+2.56175e+06; 6948; 15937.9; 6267.48
+2.56175e+06; 7334; 16059.6; 6267.48
+2.56175e+06; 7720; 16181.3; 6267.48
+2.56175e+06; 8106; 16303; 6267.48
+2.56175e+06; 8492; 16424.7; 6267.48
+2.56175e+06; 8878; 16546.3; 6267.48
+2.56175e+06; 9264; 16668; 6267.48
+2.56175e+06; 9650; 16789.7; 6267.48
+2.56175e+06; 10036; 16911.4; 6267.48
+2.56175e+06; 10422; 17033.1; 6267.48
+2.56175e+06; 10808; 17154.8; 6267.48
+2.56175e+06; 11194; 17276.5; 6267.48
+2.56175e+06; 11580; 17398.1; 6267.48
+2.56175e+06; 11966; 17519.8; 6267.48
+2.56175e+06; 12352; 17641.5; 6267.48
+2.56175e+06; 12738; 17763.2; 6267.48
+2.56175e+06; 13124; 17884.9; 6267.48
+2.56175e+06; 13510; 18006.6; 6267.48
+2.56175e+06; 13896; 18128.3; 6267.48
+2.56175e+06; 14282; 18250; 6267.48
+2.56175e+06; 14668; 18371.6; 6267.48
+2.56175e+06; 15054; 18493.3; 6267.48
+2.56175e+06; 15440; 18615; 6267.48
+2.56175e+06; 15826; 18736.7; 6267.48
+2.56175e+06; 16212; 18858.4; 6267.48
+2.56175e+06; 16598; 18980.1; 6267.48
+2.56175e+06; 16984; 19101.8; 6267.48
+2.56175e+06; 17370; 19223.5; 6267.48
+2.56175e+06; 17756; 19345.1; 6267.48
+2.56175e+06; 18142; 19466.8; 6267.48
+2.56175e+06; 18528; 19588.5; 6267.48
+2.56175e+06; 18914; 19710.2; 6267.48
+2.56175e+06; 19300; 19831.9; 6267.48
+
+2.67313e+06; 0; 14274.9; 6539.98
+2.67313e+06; 386; 14401.3; 6539.98
+2.67313e+06; 772; 14527.6; 6539.98
+2.67313e+06; 1158; 14654; 6539.98
+2.67313e+06; 1544; 14780.3; 6539.98
+2.67313e+06; 1930; 14906.7; 6539.98
+2.67313e+06; 2316; 15033; 6539.98
+2.67313e+06; 2702; 15159.4; 6539.98
+2.67313e+06; 3088; 15285.8; 6539.98
+2.67313e+06; 3474; 15412.1; 6539.98
+2.67313e+06; 3860; 15538.5; 6539.98
+2.67313e+06; 4246; 15664.8; 6539.98
+2.67313e+06; 4632; 15791.2; 6539.98
+2.67313e+06; 5018; 15917.5; 6539.98
+2.67313e+06; 5404; 16043.9; 6539.98
+2.67313e+06; 5790; 16170.2; 6539.98
+2.67313e+06; 6176; 16296.6; 6539.98
+2.67313e+06; 6562; 16423; 6539.98
+2.67313e+06; 6948; 16549.3; 6539.98
+2.67313e+06; 7334; 16675.7; 6539.98
+2.67313e+06; 7720; 16802; 6539.98
+2.67313e+06; 8106; 16928.4; 6539.98
+2.67313e+06; 8492; 17054.7; 6539.98
+2.67313e+06; 8878; 17181.1; 6539.98
+2.67313e+06; 9264; 17307.4; 6539.98
+2.67313e+06; 9650; 17433.8; 6539.98
+2.67313e+06; 10036; 17560.2; 6539.98
+2.67313e+06; 10422; 17686.5; 6539.98
+2.67313e+06; 10808; 17812.9; 6539.98
+2.67313e+06; 11194; 17939.2; 6539.98
+2.67313e+06; 11580; 18065.6; 6539.98
+2.67313e+06; 11966; 18191.9; 6539.98
+2.67313e+06; 12352; 18318.3; 6539.98
+2.67313e+06; 12738; 18444.6; 6539.98
+2.67313e+06; 13124; 18571; 6539.98
+2.67313e+06; 13510; 18697.4; 6539.98
+2.67313e+06; 13896; 18823.7; 6539.98
+2.67313e+06; 14282; 18950.1; 6539.98
+2.67313e+06; 14668; 19076.4; 6539.98
+2.67313e+06; 15054; 19202.8; 6539.98
+2.67313e+06; 15440; 19329.1; 6539.98
+2.67313e+06; 15826; 19455.5; 6539.98
+2.67313e+06; 16212; 19581.8; 6539.98
+2.67313e+06; 16598; 19708.2; 6539.98
+2.67313e+06; 16984; 19834.5; 6539.98
+2.67313e+06; 17370; 19960.9; 6539.98
+2.67313e+06; 17756; 20087.3; 6539.98
+2.67313e+06; 18142; 20213.6; 6539.98
+2.67313e+06; 18528; 20340; 6539.98
+2.67313e+06; 18914; 20466.3; 6539.98
+2.67313e+06; 19300; 20592.7; 6539.98
+
+2.78451e+06; 0; 14806.5; 6812.48
+2.78451e+06; 386; 14937.5; 6812.48
+2.78451e+06; 772; 15068.6; 6812.48
+2.78451e+06; 1158; 15199.7; 6812.48
+2.78451e+06; 1544; 15330.7; 6812.48
+2.78451e+06; 1930; 15461.8; 6812.48
+2.78451e+06; 2316; 15592.8; 6812.48
+2.78451e+06; 2702; 15723.9; 6812.48
+2.78451e+06; 3088; 15855; 6812.48
+2.78451e+06; 3474; 15986; 6812.48
+2.78451e+06; 3860; 16117.1; 6812.48
+2.78451e+06; 4246; 16248.1; 6812.48
+2.78451e+06; 4632; 16379.2; 6812.48
+2.78451e+06; 5018; 16510.3; 6812.48
+2.78451e+06; 5404; 16641.3; 6812.48
+2.78451e+06; 5790; 16772.4; 6812.48
+2.78451e+06; 6176; 16903.4; 6812.48
+2.78451e+06; 6562; 17034.5; 6812.48
+2.78451e+06; 6948; 17165.6; 6812.48
+2.78451e+06; 7334; 17296.6; 6812.48
+2.78451e+06; 7720; 17427.7; 6812.48
+2.78451e+06; 8106; 17558.7; 6812.48
+2.78451e+06; 8492; 17689.8; 6812.48
+2.78451e+06; 8878; 17820.9; 6812.48
+2.78451e+06; 9264; 17951.9; 6812.48
+2.78451e+06; 9650; 18083; 6812.48
+2.78451e+06; 10036; 18214; 6812.48
+2.78451e+06; 10422; 18345.1; 6812.48
+2.78451e+06; 10808; 18476.2; 6812.48
+2.78451e+06; 11194; 18607.2; 6812.48
+2.78451e+06; 11580; 18738.3; 6812.48
+2.78451e+06; 11966; 18869.3; 6812.48
+2.78451e+06; 12352; 19000.4; 6812.48
+2.78451e+06; 12738; 19131.5; 6812.48
+2.78451e+06; 13124; 19262.5; 6812.48
+2.78451e+06; 13510; 19393.6; 6812.48
+2.78451e+06; 13896; 19524.6; 6812.48
+2.78451e+06; 14282; 19655.7; 6812.48
+2.78451e+06; 14668; 19786.8; 6812.48
+2.78451e+06; 15054; 19917.8; 6812.48
+2.78451e+06; 15440; 20048.9; 6812.48
+2.78451e+06; 15826; 20179.9; 6812.48
+2.78451e+06; 16212; 20311; 6812.48
+2.78451e+06; 16598; 20442.1; 6812.48
+2.78451e+06; 16984; 20573.1; 6812.48
+2.78451e+06; 17370; 20704.2; 6812.48
+2.78451e+06; 17756; 20835.2; 6812.48
+2.78451e+06; 18142; 20966.3; 6812.48
+2.78451e+06; 18528; 21097.4; 6812.48
+2.78451e+06; 18914; 21228.4; 6812.48
+2.78451e+06; 19300; 21359.5; 6812.48
+
+2.80165e+06; 0; 14888.7; 6854.41
+2.80165e+06; 384.654; 15020; 6854.41
+2.80165e+06; 769.308; 15151.3; 6854.41
+2.80165e+06; 1153.96; 15282.7; 6854.41
+2.80165e+06; 1538.62; 15414; 6854.41
+2.80165e+06; 1923.27; 15545.3; 6854.41
+2.80165e+06; 2307.92; 15676.6; 6854.41
+2.80165e+06; 2692.58; 15808; 6854.41
+2.80165e+06; 3077.23; 15939.3; 6854.41
+2.80165e+06; 3461.89; 16070.6; 6854.41
+2.80165e+06; 3846.54; 16202; 6854.41
+2.80165e+06; 4231.2; 16333.3; 6854.41
+2.80165e+06; 4615.85; 16464.6; 6854.41
+2.80165e+06; 5000.5; 16595.9; 6854.41
+2.80165e+06; 5385.16; 16727.3; 6854.41
+2.80165e+06; 5769.81; 16858.6; 6854.41
+2.80165e+06; 6154.47; 16989.9; 6854.41
+2.80165e+06; 6539.12; 17121.2; 6854.41
+2.80165e+06; 6923.77; 17252.6; 6854.41
+2.80165e+06; 7308.43; 17383.9; 6854.41
+2.80165e+06; 7693.08; 17515.2; 6854.41
+2.80165e+06; 8077.74; 17646.6; 6854.41
+2.80165e+06; 8462.39; 17777.9; 6854.41
+2.80165e+06; 8847.05; 17909.2; 6854.41
+2.80165e+06; 9231.7; 18040.5; 6854.41
+2.80165e+06; 9616.35; 18171.9; 6854.41
+2.80165e+06; 10001; 18303.2; 6854.41
+2.80165e+06; 10385.7; 18434.5; 6854.41
+2.80165e+06; 10770.3; 18565.9; 6854.41
+2.80165e+06; 11155; 18697.2; 6854.41
+2.80165e+06; 11539.6; 18828.5; 6854.41
+2.80165e+06; 11924.3; 18959.8; 6854.41
+2.80165e+06; 12308.9; 19091.2; 6854.41
+2.80165e+06; 12693.6; 19222.5; 6854.41
+2.80165e+06; 13078.2; 19353.8; 6854.41
+2.80165e+06; 13462.9; 19485.2; 6854.41
+2.80165e+06; 13847.5; 19616.5; 6854.41
+2.80165e+06; 14232.2; 19747.8; 6854.41
+2.80165e+06; 14616.9; 19879.1; 6854.41
+2.80165e+06; 15001.5; 20010.5; 6854.41
+2.80165e+06; 15386.2; 20141.8; 6854.41
+2.80165e+06; 15770.8; 20273.1; 6854.41
+2.80165e+06; 16155.5; 20404.5; 6854.41
+2.80165e+06; 16540.1; 20535.8; 6854.41
+2.80165e+06; 16924.8; 20667.1; 6854.41
+2.80165e+06; 17309.4; 20798.4; 6854.41
+2.80165e+06; 17694.1; 20929.8; 6854.41
+2.80165e+06; 18078.7; 21061.1; 6854.41
+2.80165e+06; 18463.4; 21192.4; 6854.41
+2.80165e+06; 18848.1; 21323.8; 6854.41
+2.80165e+06; 19232.7; 21455.1; 6854.41
+
+2.81879e+06; 0; 14971; 6896.35
+2.81879e+06; 383.308; 15102.6; 6896.35
+2.81879e+06; 766.617; 15234.2; 6896.35
+2.81879e+06; 1149.92; 15365.7; 6896.35
+2.81879e+06; 1533.23; 15497.3; 6896.35
+2.81879e+06; 1916.54; 15628.9; 6896.35
+2.81879e+06; 2299.85; 15760.5; 6896.35
+2.81879e+06; 2683.16; 15892.1; 6896.35
+2.81879e+06; 3066.47; 16023.7; 6896.35
+2.81879e+06; 3449.77; 16155.3; 6896.35
+2.81879e+06; 3833.08; 16286.9; 6896.35
+2.81879e+06; 4216.39; 16418.5; 6896.35
+2.81879e+06; 4599.7; 16550.1; 6896.35
+2.81879e+06; 4983.01; 16681.7; 6896.35
+2.81879e+06; 5366.32; 16813.3; 6896.35
+2.81879e+06; 5749.62; 16944.9; 6896.35
+2.81879e+06; 6132.93; 17076.4; 6896.35
+2.81879e+06; 6516.24; 17208; 6896.35
+2.81879e+06; 6899.55; 17339.6; 6896.35
+2.81879e+06; 7282.86; 17471.2; 6896.35
+2.81879e+06; 7666.17; 17602.8; 6896.35
+2.81879e+06; 8049.47; 17734.4; 6896.35
+2.81879e+06; 8432.78; 17866; 6896.35
+2.81879e+06; 8816.09; 17997.6; 6896.35
+2.81879e+06; 9199.4; 18129.2; 6896.35
+2.81879e+06; 9582.71; 18260.8; 6896.35
+2.81879e+06; 9966.02; 18392.4; 6896.35
+2.81879e+06; 10349.3; 18524; 6896.35
+2.81879e+06; 10732.6; 18655.5; 6896.35
+2.81879e+06; 11115.9; 18787.1; 6896.35
+2.81879e+06; 11499.2; 18918.7; 6896.35
+2.81879e+06; 11882.6; 19050.3; 6896.35
+2.81879e+06; 12265.9; 19181.9; 6896.35
+2.81879e+06; 12649.2; 19313.5; 6896.35
+2.81879e+06; 13032.5; 19445.1; 6896.35
+2.81879e+06; 13415.8; 19576.7; 6896.35
+2.81879e+06; 13799.1; 19708.3; 6896.35
+2.81879e+06; 14182.4; 19839.9; 6896.35
+2.81879e+06; 14565.7; 19971.5; 6896.35
+2.81879e+06; 14949; 20103.1; 6896.35
+2.81879e+06; 15332.3; 20234.7; 6896.35
+2.81879e+06; 15715.6; 20366.2; 6896.35
+2.81879e+06; 16098.9; 20497.8; 6896.35
+2.81879e+06; 16482.3; 20629.4; 6896.35
+2.81879e+06; 16865.6; 20761; 6896.35
+2.81879e+06; 17248.9; 20892.6; 6896.35
+2.81879e+06; 17632.2; 21024.2; 6896.35
+2.81879e+06; 18015.5; 21155.8; 6896.35
+2.81879e+06; 18398.8; 21287.4; 6896.35
+2.81879e+06; 18782.1; 21419; 6896.35
+2.81879e+06; 19165.4; 21550.6; 6896.35
+
+2.83593e+06; 0; 15053.4; 6938.28
+2.83593e+06; 381.962; 15185.2; 6938.28
+2.83593e+06; 763.925; 15317.1; 6938.28
+2.83593e+06; 1145.89; 15448.9; 6938.28
+2.83593e+06; 1527.85; 15580.8; 6938.28
+2.83593e+06; 1909.81; 15712.6; 6938.28
+2.83593e+06; 2291.77; 15844.5; 6938.28
+2.83593e+06; 2673.74; 15976.3; 6938.28
+2.83593e+06; 3055.7; 16108.2; 6938.28
+2.83593e+06; 3437.66; 16240; 6938.28
+2.83593e+06; 3819.62; 16371.9; 6938.28
+2.83593e+06; 4201.59; 16503.7; 6938.28
+2.83593e+06; 4583.55; 16635.6; 6938.28
+2.83593e+06; 4965.51; 16767.4; 6938.28
+2.83593e+06; 5347.47; 16899.3; 6938.28
+2.83593e+06; 5729.44; 17031.2; 6938.28
+2.83593e+06; 6111.4; 17163; 6938.28
+2.83593e+06; 6493.36; 17294.9; 6938.28
+2.83593e+06; 6875.32; 17426.7; 6938.28
+2.83593e+06; 7257.29; 17558.6; 6938.28
+2.83593e+06; 7639.25; 17690.4; 6938.28
+2.83593e+06; 8021.21; 17822.3; 6938.28
+2.83593e+06; 8403.17; 17954.1; 6938.28
+2.83593e+06; 8785.14; 18086; 6938.28
+2.83593e+06; 9167.1; 18217.8; 6938.28
+2.83593e+06; 9549.06; 18349.7; 6938.28
+2.83593e+06; 9931.02; 18481.5; 6938.28
+2.83593e+06; 10313; 18613.4; 6938.28
+2.83593e+06; 10694.9; 18745.2; 6938.28
+2.83593e+06; 11076.9; 18877.1; 6938.28
+2.83593e+06; 11458.9; 19008.9; 6938.28
+2.83593e+06; 11840.8; 19140.8; 6938.28
+2.83593e+06; 12222.8; 19272.6; 6938.28
+2.83593e+06; 12604.8; 19404.5; 6938.28
+2.83593e+06; 12986.7; 19536.3; 6938.28
+2.83593e+06; 13368.7; 19668.2; 6938.28
+2.83593e+06; 13750.6; 19800; 6938.28
+2.83593e+06; 14132.6; 19931.9; 6938.28
+2.83593e+06; 14514.6; 20063.7; 6938.28
+2.83593e+06; 14896.5; 20195.6; 6938.28
+2.83593e+06; 15278.5; 20327.5; 6938.28
+2.83593e+06; 15660.5; 20459.3; 6938.28
+2.83593e+06; 16042.4; 20591.2; 6938.28
+2.83593e+06; 16424.4; 20723; 6938.28
+2.83593e+06; 16806.3; 20854.9; 6938.28
+2.83593e+06; 17188.3; 20986.7; 6938.28
+2.83593e+06; 17570.3; 21118.6; 6938.28
+2.83593e+06; 17952.2; 21250.4; 6938.28
+2.83593e+06; 18334.2; 21382.3; 6938.28
+2.83593e+06; 18716.2; 21514.1; 6938.28
+2.83593e+06; 19098.1; 21646; 6938.28
+
+2.85307e+06; 0; 15135.9; 6980.21
+2.85307e+06; 380.617; 15268; 6980.21
+2.85307e+06; 761.233; 15400.1; 6980.21
+2.85307e+06; 1141.85; 15532.2; 6980.21
+2.85307e+06; 1522.47; 15664.3; 6980.21
+2.85307e+06; 1903.08; 15796.4; 6980.21
+2.85307e+06; 2283.7; 15928.5; 6980.21
+2.85307e+06; 2664.32; 16060.6; 6980.21
+2.85307e+06; 3044.93; 16192.7; 6980.21
+2.85307e+06; 3425.55; 16324.9; 6980.21
+2.85307e+06; 3806.17; 16457; 6980.21
+2.85307e+06; 4186.78; 16589.1; 6980.21
+2.85307e+06; 4567.4; 16721.2; 6980.21
+2.85307e+06; 4948.02; 16853.3; 6980.21
+2.85307e+06; 5328.63; 16985.4; 6980.21
+2.85307e+06; 5709.25; 17117.5; 6980.21
+2.85307e+06; 6089.87; 17249.6; 6980.21
+2.85307e+06; 6470.48; 17381.7; 6980.21
+2.85307e+06; 6851.1; 17513.8; 6980.21
+2.85307e+06; 7231.72; 17645.9; 6980.21
+2.85307e+06; 7612.33; 17778; 6980.21
+2.85307e+06; 7992.95; 17910.1; 6980.21
+2.85307e+06; 8373.57; 18042.3; 6980.21
+2.85307e+06; 8754.18; 18174.4; 6980.21
+2.85307e+06; 9134.8; 18306.5; 6980.21
+2.85307e+06; 9515.42; 18438.6; 6980.21
+2.85307e+06; 9896.03; 18570.7; 6980.21
+2.85307e+06; 10276.6; 18702.8; 6980.21
+2.85307e+06; 10657.3; 18834.9; 6980.21
+2.85307e+06; 11037.9; 18967; 6980.21
+2.85307e+06; 11418.5; 19099.1; 6980.21
+2.85307e+06; 11799.1; 19231.2; 6980.21
+2.85307e+06; 12179.7; 19363.3; 6980.21
+2.85307e+06; 12560.3; 19495.4; 6980.21
+2.85307e+06; 12941; 19627.5; 6980.21
+2.85307e+06; 13321.6; 19759.6; 6980.21
+2.85307e+06; 13702.2; 19891.8; 6980.21
+2.85307e+06; 14082.8; 20023.9; 6980.21
+2.85307e+06; 14463.4; 20156; 6980.21
+2.85307e+06; 14844; 20288.1; 6980.21
+2.85307e+06; 15224.7; 20420.2; 6980.21
+2.85307e+06; 15605.3; 20552.3; 6980.21
+2.85307e+06; 15985.9; 20684.4; 6980.21
+2.85307e+06; 16366.5; 20816.5; 6980.21
+2.85307e+06; 16747.1; 20948.6; 6980.21
+2.85307e+06; 17127.7; 21080.7; 6980.21
+2.85307e+06; 17508.4; 21212.8; 6980.21
+2.85307e+06; 17889; 21344.9; 6980.21
+2.85307e+06; 18269.6; 21477; 6980.21
+2.85307e+06; 18650.2; 21609.2; 6980.21
+2.85307e+06; 19030.8; 21741.3; 6980.21
+
+2.87021e+06; 0; 15218.5; 7022.14
+2.87021e+06; 379.271; 15350.9; 7022.14
+2.87021e+06; 758.542; 15483.2; 7022.14
+2.87021e+06; 1137.81; 15615.6; 7022.14
+2.87021e+06; 1517.08; 15747.9; 7022.14
+2.87021e+06; 1896.35; 15880.3; 7022.14
+2.87021e+06; 2275.62; 16012.7; 7022.14
+2.87021e+06; 2654.9; 16145; 7022.14
+2.87021e+06; 3034.17; 16277.4; 7022.14
+2.87021e+06; 3413.44; 16409.7; 7022.14
+2.87021e+06; 3792.71; 16542.1; 7022.14
+2.87021e+06; 4171.98; 16674.5; 7022.14
+2.87021e+06; 4551.25; 16806.8; 7022.14
+2.87021e+06; 4930.52; 16939.2; 7022.14
+2.87021e+06; 5309.79; 17071.5; 7022.14
+2.87021e+06; 5689.06; 17203.9; 7022.14
+2.87021e+06; 6068.33; 17336.2; 7022.14
+2.87021e+06; 6447.6; 17468.6; 7022.14
+2.87021e+06; 6826.87; 17601; 7022.14
+2.87021e+06; 7206.15; 17733.3; 7022.14
+2.87021e+06; 7585.42; 17865.7; 7022.14
+2.87021e+06; 7964.69; 17998; 7022.14
+2.87021e+06; 8343.96; 18130.4; 7022.14
+2.87021e+06; 8723.23; 18262.8; 7022.14
+2.87021e+06; 9102.5; 18395.1; 7022.14
+2.87021e+06; 9481.77; 18527.5; 7022.14
+2.87021e+06; 9861.04; 18659.8; 7022.14
+2.87021e+06; 10240.3; 18792.2; 7022.14
+2.87021e+06; 10619.6; 18924.6; 7022.14
+2.87021e+06; 10998.9; 19056.9; 7022.14
+2.87021e+06; 11378.1; 19189.3; 7022.14
+2.87021e+06; 11757.4; 19321.6; 7022.14
+2.87021e+06; 12136.7; 19454; 7022.14
+2.87021e+06; 12515.9; 19586.3; 7022.14
+2.87021e+06; 12895.2; 19718.7; 7022.14
+2.87021e+06; 13274.5; 19851.1; 7022.14
+2.87021e+06; 13653.7; 19983.4; 7022.14
+2.87021e+06; 14033; 20115.8; 7022.14
+2.87021e+06; 14412.3; 20248.1; 7022.14
+2.87021e+06; 14791.6; 20380.5; 7022.14
+2.87021e+06; 15170.8; 20512.9; 7022.14
+2.87021e+06; 15550.1; 20645.2; 7022.14
+2.87021e+06; 15929.4; 20777.6; 7022.14
+2.87021e+06; 16308.6; 20909.9; 7022.14
+2.87021e+06; 16687.9; 21042.3; 7022.14
+2.87021e+06; 17067.2; 21174.7; 7022.14
+2.87021e+06; 17446.5; 21307; 7022.14
+2.87021e+06; 17825.7; 21439.4; 7022.14
+2.87021e+06; 18205; 21571.7; 7022.14
+2.87021e+06; 18584.3; 21704.1; 7022.14
+2.87021e+06; 18963.5; 21836.5; 7022.14
+
+2.88735e+06; 0; 15301.2; 7064.08
+2.88735e+06; 377.925; 15433.8; 7064.08
+2.88735e+06; 755.85; 15566.4; 7064.08
+2.88735e+06; 1133.77; 15699; 7064.08
+2.88735e+06; 1511.7; 15831.7; 7064.08
+2.88735e+06; 1889.62; 15964.3; 7064.08
+2.88735e+06; 2267.55; 16096.9; 7064.08
+2.88735e+06; 2645.47; 16229.5; 7064.08
+2.88735e+06; 3023.4; 16362.1; 7064.08
+2.88735e+06; 3401.32; 16494.7; 7064.08
+2.88735e+06; 3779.25; 16627.3; 7064.08
+2.88735e+06; 4157.17; 16759.9; 7064.08
+2.88735e+06; 4535.1; 16892.5; 7064.08
+2.88735e+06; 4913.02; 17025.1; 7064.08
+2.88735e+06; 5290.95; 17157.7; 7064.08
+2.88735e+06; 5668.87; 17290.3; 7064.08
+2.88735e+06; 6046.8; 17422.9; 7064.08
+2.88735e+06; 6424.72; 17555.5; 7064.08
+2.88735e+06; 6802.65; 17688.1; 7064.08
+2.88735e+06; 7180.57; 17820.7; 7064.08
+2.88735e+06; 7558.5; 17953.4; 7064.08
+2.88735e+06; 7936.42; 18086; 7064.08
+2.88735e+06; 8314.35; 18218.6; 7064.08
+2.88735e+06; 8692.27; 18351.2; 7064.08
+2.88735e+06; 9070.2; 18483.8; 7064.08
+2.88735e+06; 9448.12; 18616.4; 7064.08
+2.88735e+06; 9826.05; 18749; 7064.08
+2.88735e+06; 10204; 18881.6; 7064.08
+2.88735e+06; 10581.9; 19014.2; 7064.08
+2.88735e+06; 10959.8; 19146.8; 7064.08
+2.88735e+06; 11337.7; 19279.4; 7064.08
+2.88735e+06; 11715.7; 19412; 7064.08
+2.88735e+06; 12093.6; 19544.6; 7064.08
+2.88735e+06; 12471.5; 19677.2; 7064.08
+2.88735e+06; 12849.4; 19809.8; 7064.08
+2.88735e+06; 13227.4; 19942.4; 7064.08
+2.88735e+06; 13605.3; 20075.1; 7064.08
+2.88735e+06; 13983.2; 20207.7; 7064.08
+2.88735e+06; 14361.1; 20340.3; 7064.08
+2.88735e+06; 14739.1; 20472.9; 7064.08
+2.88735e+06; 15117; 20605.5; 7064.08
+2.88735e+06; 15494.9; 20738.1; 7064.08
+2.88735e+06; 15872.8; 20870.7; 7064.08
+2.88735e+06; 16250.8; 21003.3; 7064.08
+2.88735e+06; 16628.7; 21135.9; 7064.08
+2.88735e+06; 17006.6; 21268.5; 7064.08
+2.88735e+06; 17384.5; 21401.1; 7064.08
+2.88735e+06; 17762.5; 21533.7; 7064.08
+2.88735e+06; 18140.4; 21666.3; 7064.08
+2.88735e+06; 18518.3; 21798.9; 7064.08
+2.88735e+06; 18896.2; 21931.5; 7064.08
+
+2.90449e+06; 0; 15384.1; 7106.01
+2.90449e+06; 376.579; 15516.9; 7106.01
+2.90449e+06; 753.158; 15649.8; 7106.01
+2.90449e+06; 1129.74; 15782.6; 7106.01
+2.90449e+06; 1506.32; 15915.5; 7106.01
+2.90449e+06; 1882.9; 16048.3; 7106.01
+2.90449e+06; 2259.47; 16181.2; 7106.01
+2.90449e+06; 2636.05; 16314; 7106.01
+2.90449e+06; 3012.63; 16446.9; 7106.01
+2.90449e+06; 3389.21; 16579.7; 7106.01
+2.90449e+06; 3765.79; 16712.6; 7106.01
+2.90449e+06; 4142.37; 16845.4; 7106.01
+2.90449e+06; 4518.95; 16978.3; 7106.01
+2.90449e+06; 4895.53; 17111.1; 7106.01
+2.90449e+06; 5272.11; 17243.9; 7106.01
+2.90449e+06; 5648.69; 17376.8; 7106.01
+2.90449e+06; 6025.27; 17509.6; 7106.01
+2.90449e+06; 6401.85; 17642.5; 7106.01
+2.90449e+06; 6778.42; 17775.3; 7106.01
+2.90449e+06; 7155; 17908.2; 7106.01
+2.90449e+06; 7531.58; 18041; 7106.01
+2.90449e+06; 7908.16; 18173.9; 7106.01
+2.90449e+06; 8284.74; 18306.7; 7106.01
+2.90449e+06; 8661.32; 18439.6; 7106.01
+2.90449e+06; 9037.9; 18572.4; 7106.01
+2.90449e+06; 9414.48; 18705.3; 7106.01
+2.90449e+06; 9791.06; 18838.1; 7106.01
+2.90449e+06; 10167.6; 18971; 7106.01
+2.90449e+06; 10544.2; 19103.8; 7106.01
+2.90449e+06; 10920.8; 19236.7; 7106.01
+2.90449e+06; 11297.4; 19369.5; 7106.01
+2.90449e+06; 11674; 19502.4; 7106.01
+2.90449e+06; 12050.5; 19635.2; 7106.01
+2.90449e+06; 12427.1; 19768.1; 7106.01
+2.90449e+06; 12803.7; 19900.9; 7106.01
+2.90449e+06; 13180.3; 20033.8; 7106.01
+2.90449e+06; 13556.8; 20166.6; 7106.01
+2.90449e+06; 13933.4; 20299.5; 7106.01
+2.90449e+06; 14310; 20432.3; 7106.01
+2.90449e+06; 14686.6; 20565.2; 7106.01
+2.90449e+06; 15063.2; 20698; 7106.01
+2.90449e+06; 15439.7; 20830.9; 7106.01
+2.90449e+06; 15816.3; 20963.7; 7106.01
+2.90449e+06; 16192.9; 21096.6; 7106.01
+2.90449e+06; 16569.5; 21229.4; 7106.01
+2.90449e+06; 16946.1; 21362.3; 7106.01
+2.90449e+06; 17322.6; 21495.1; 7106.01
+2.90449e+06; 17699.2; 21628; 7106.01
+2.90449e+06; 18075.8; 21760.8; 7106.01
+2.90449e+06; 18452.4; 21893.7; 7106.01
+2.90449e+06; 18829; 22026.5; 7106.01
+
+2.92163e+06; 0; 15467; 7147.94
+2.92163e+06; 375.233; 15600.1; 7147.94
+2.92163e+06; 750.467; 15733.2; 7147.94
+2.92163e+06; 1125.7; 15866.3; 7147.94
+2.92163e+06; 1500.93; 15999.4; 7147.94
+2.92163e+06; 1876.17; 16132.4; 7147.94
+2.92163e+06; 2251.4; 16265.5; 7147.94
+2.92163e+06; 2626.63; 16398.6; 7147.94
+2.92163e+06; 3001.87; 16531.7; 7147.94
+2.92163e+06; 3377.1; 16664.8; 7147.94
+2.92163e+06; 3752.33; 16797.9; 7147.94
+2.92163e+06; 4127.57; 16931; 7147.94
+2.92163e+06; 4502.8; 17064.1; 7147.94
+2.92163e+06; 4878.03; 17197.1; 7147.94
+2.92163e+06; 5253.27; 17330.2; 7147.94
+2.92163e+06; 5628.5; 17463.3; 7147.94
+2.92163e+06; 6003.73; 17596.4; 7147.94
+2.92163e+06; 6378.97; 17729.5; 7147.94
+2.92163e+06; 6754.2; 17862.6; 7147.94
+2.92163e+06; 7129.43; 17995.7; 7147.94
+2.92163e+06; 7504.67; 18128.8; 7147.94
+2.92163e+06; 7879.9; 18261.9; 7147.94
+2.92163e+06; 8255.13; 18394.9; 7147.94
+2.92163e+06; 8630.37; 18528; 7147.94
+2.92163e+06; 9005.6; 18661.1; 7147.94
+2.92163e+06; 9380.83; 18794.2; 7147.94
+2.92163e+06; 9756.07; 18927.3; 7147.94
+2.92163e+06; 10131.3; 19060.4; 7147.94
+2.92163e+06; 10506.5; 19193.5; 7147.94
+2.92163e+06; 10881.8; 19326.6; 7147.94
+2.92163e+06; 11257; 19459.6; 7147.94
+2.92163e+06; 11632.2; 19592.7; 7147.94
+2.92163e+06; 12007.5; 19725.8; 7147.94
+2.92163e+06; 12382.7; 19858.9; 7147.94
+2.92163e+06; 12757.9; 19992; 7147.94
+2.92163e+06; 13133.2; 20125.1; 7147.94
+2.92163e+06; 13508.4; 20258.2; 7147.94
+2.92163e+06; 13883.6; 20391.3; 7147.94
+2.92163e+06; 14258.9; 20524.4; 7147.94
+2.92163e+06; 14634.1; 20657.4; 7147.94
+2.92163e+06; 15009.3; 20790.5; 7147.94
+2.92163e+06; 15384.6; 20923.6; 7147.94
+2.92163e+06; 15759.8; 21056.7; 7147.94
+2.92163e+06; 16135; 21189.8; 7147.94
+2.92163e+06; 16510.3; 21322.9; 7147.94
+2.92163e+06; 16885.5; 21456; 7147.94
+2.92163e+06; 17260.7; 21589.1; 7147.94
+2.92163e+06; 17636; 21722.1; 7147.94
+2.92163e+06; 18011.2; 21855.2; 7147.94
+2.92163e+06; 18386.4; 21988.3; 7147.94
+2.92163e+06; 18761.7; 22121.4; 7147.94
+
+2.93877e+06; 0; 15550; 7189.87
+2.93877e+06; 373.887; 15683.4; 7189.87
+2.93877e+06; 747.775; 15816.7; 7189.87
+2.93877e+06; 1121.66; 15950; 7189.87
+2.93877e+06; 1495.55; 16083.3; 7189.87
+2.93877e+06; 1869.44; 16216.7; 7189.87
+2.93877e+06; 2243.32; 16350; 7189.87
+2.93877e+06; 2617.21; 16483.3; 7189.87
+2.93877e+06; 2991.1; 16616.6; 7189.87
+2.93877e+06; 3364.99; 16749.9; 7189.87
+2.93877e+06; 3738.87; 16883.3; 7189.87
+2.93877e+06; 4112.76; 17016.6; 7189.87
+2.93877e+06; 4486.65; 17149.9; 7189.87
+2.93877e+06; 4860.54; 17283.2; 7189.87
+2.93877e+06; 5234.42; 17416.6; 7189.87
+2.93877e+06; 5608.31; 17549.9; 7189.87
+2.93877e+06; 5982.2; 17683.2; 7189.87
+2.93877e+06; 6356.09; 17816.5; 7189.87
+2.93877e+06; 6729.97; 17949.9; 7189.87
+2.93877e+06; 7103.86; 18083.2; 7189.87
+2.93877e+06; 7477.75; 18216.5; 7189.87
+2.93877e+06; 7851.64; 18349.8; 7189.87
+2.93877e+06; 8225.52; 18483.1; 7189.87
+2.93877e+06; 8599.41; 18616.5; 7189.87
+2.93877e+06; 8973.3; 18749.8; 7189.87
+2.93877e+06; 9347.19; 18883.1; 7189.87
+2.93877e+06; 9721.07; 19016.4; 7189.87
+2.93877e+06; 10095; 19149.8; 7189.87
+2.93877e+06; 10468.8; 19283.1; 7189.87
+2.93877e+06; 10842.7; 19416.4; 7189.87
+2.93877e+06; 11216.6; 19549.7; 7189.87
+2.93877e+06; 11590.5; 19683.1; 7189.87
+2.93877e+06; 11964.4; 19816.4; 7189.87
+2.93877e+06; 12338.3; 19949.7; 7189.87
+2.93877e+06; 12712.2; 20083; 7189.87
+2.93877e+06; 13086.1; 20216.3; 7189.87
+2.93877e+06; 13459.9; 20349.7; 7189.87
+2.93877e+06; 13833.8; 20483; 7189.87
+2.93877e+06; 14207.7; 20616.3; 7189.87
+2.93877e+06; 14581.6; 20749.6; 7189.87
+2.93877e+06; 14955.5; 20883; 7189.87
+2.93877e+06; 15329.4; 21016.3; 7189.87
+2.93877e+06; 15703.3; 21149.6; 7189.87
+2.93877e+06; 16077.2; 21282.9; 7189.87
+2.93877e+06; 16451; 21416.3; 7189.87
+2.93877e+06; 16824.9; 21549.6; 7189.87
+2.93877e+06; 17198.8; 21682.9; 7189.87
+2.93877e+06; 17572.7; 21816.2; 7189.87
+2.93877e+06; 17946.6; 21949.5; 7189.87
+2.93877e+06; 18320.5; 22082.9; 7189.87
+2.93877e+06; 18694.4; 22216.2; 7189.87
+
+2.95591e+06; 0; 15633.2; 7231.81
+2.95591e+06; 372.542; 15766.8; 7231.81
+2.95591e+06; 745.083; 15900.3; 7231.81
+2.95591e+06; 1117.62; 16033.9; 7231.81
+2.95591e+06; 1490.17; 16167.4; 7231.81
+2.95591e+06; 1862.71; 16301; 7231.81
+2.95591e+06; 2235.25; 16434.5; 7231.81
+2.95591e+06; 2607.79; 16568.1; 7231.81
+2.95591e+06; 2980.33; 16701.6; 7231.81
+2.95591e+06; 3352.87; 16835.2; 7231.81
+2.95591e+06; 3725.42; 16968.7; 7231.81
+2.95591e+06; 4097.96; 17102.3; 7231.81
+2.95591e+06; 4470.5; 17235.8; 7231.81
+2.95591e+06; 4843.04; 17369.4; 7231.81
+2.95591e+06; 5215.58; 17502.9; 7231.81
+2.95591e+06; 5588.12; 17636.5; 7231.81
+2.95591e+06; 5960.67; 17770.1; 7231.81
+2.95591e+06; 6333.21; 17903.6; 7231.81
+2.95591e+06; 6705.75; 18037.2; 7231.81
+2.95591e+06; 7078.29; 18170.7; 7231.81
+2.95591e+06; 7450.83; 18304.3; 7231.81
+2.95591e+06; 7823.37; 18437.8; 7231.81
+2.95591e+06; 8195.92; 18571.4; 7231.81
+2.95591e+06; 8568.46; 18704.9; 7231.81
+2.95591e+06; 8941; 18838.5; 7231.81
+2.95591e+06; 9313.54; 18972; 7231.81
+2.95591e+06; 9686.08; 19105.6; 7231.81
+2.95591e+06; 10058.6; 19239.1; 7231.81
+2.95591e+06; 10431.2; 19372.7; 7231.81
+2.95591e+06; 10803.7; 19506.2; 7231.81
+2.95591e+06; 11176.2; 19639.8; 7231.81
+2.95591e+06; 11548.8; 19773.4; 7231.81
+2.95591e+06; 11921.3; 19906.9; 7231.81
+2.95591e+06; 12293.9; 20040.5; 7231.81
+2.95591e+06; 12666.4; 20174; 7231.81
+2.95591e+06; 13039; 20307.6; 7231.81
+2.95591e+06; 13411.5; 20441.1; 7231.81
+2.95591e+06; 13784; 20574.7; 7231.81
+2.95591e+06; 14156.6; 20708.2; 7231.81
+2.95591e+06; 14529.1; 20841.8; 7231.81
+2.95591e+06; 14901.7; 20975.3; 7231.81
+2.95591e+06; 15274.2; 21108.9; 7231.81
+2.95591e+06; 15646.7; 21242.4; 7231.81
+2.95591e+06; 16019.3; 21376; 7231.81
+2.95591e+06; 16391.8; 21509.5; 7231.81
+2.95591e+06; 16764.4; 21643.1; 7231.81
+2.95591e+06; 17136.9; 21776.7; 7231.81
+2.95591e+06; 17509.5; 21910.2; 7231.81
+2.95591e+06; 17882; 22043.8; 7231.81
+2.95591e+06; 18254.5; 22177.3; 7231.81
+2.95591e+06; 18627.1; 22310.9; 7231.81
+
+2.97305e+06; 0; 15716.5; 7273.74
+2.97305e+06; 371.196; 15850.2; 7273.74
+2.97305e+06; 742.392; 15984; 7273.74
+2.97305e+06; 1113.59; 16117.8; 7273.74
+2.97305e+06; 1484.78; 16251.6; 7273.74
+2.97305e+06; 1855.98; 16385.4; 7273.74
+2.97305e+06; 2227.17; 16519.1; 7273.74
+2.97305e+06; 2598.37; 16652.9; 7273.74
+2.97305e+06; 2969.57; 16786.7; 7273.74
+2.97305e+06; 3340.76; 16920.5; 7273.74
+2.97305e+06; 3711.96; 17054.3; 7273.74
+2.97305e+06; 4083.15; 17188; 7273.74
+2.97305e+06; 4454.35; 17321.8; 7273.74
+2.97305e+06; 4825.55; 17455.6; 7273.74
+2.97305e+06; 5196.74; 17589.4; 7273.74
+2.97305e+06; 5567.94; 17723.2; 7273.74
+2.97305e+06; 5939.13; 17856.9; 7273.74
+2.97305e+06; 6310.33; 17990.7; 7273.74
+2.97305e+06; 6681.52; 18124.5; 7273.74
+2.97305e+06; 7052.72; 18258.3; 7273.74
+2.97305e+06; 7423.92; 18392; 7273.74
+2.97305e+06; 7795.11; 18525.8; 7273.74
+2.97305e+06; 8166.31; 18659.6; 7273.74
+2.97305e+06; 8537.5; 18793.4; 7273.74
+2.97305e+06; 8908.7; 18927.2; 7273.74
+2.97305e+06; 9279.9; 19060.9; 7273.74
+2.97305e+06; 9651.09; 19194.7; 7273.74
+2.97305e+06; 10022.3; 19328.5; 7273.74
+2.97305e+06; 10393.5; 19462.3; 7273.74
+2.97305e+06; 10764.7; 19596.1; 7273.74
+2.97305e+06; 11135.9; 19729.8; 7273.74
+2.97305e+06; 11507.1; 19863.6; 7273.74
+2.97305e+06; 11878.3; 19997.4; 7273.74
+2.97305e+06; 12249.5; 20131.2; 7273.74
+2.97305e+06; 12620.7; 20265; 7273.74
+2.97305e+06; 12991.9; 20398.7; 7273.74
+2.97305e+06; 13363; 20532.5; 7273.74
+2.97305e+06; 13734.2; 20666.3; 7273.74
+2.97305e+06; 14105.4; 20800.1; 7273.74
+2.97305e+06; 14476.6; 20933.9; 7273.74
+2.97305e+06; 14847.8; 21067.6; 7273.74
+2.97305e+06; 15219; 21201.4; 7273.74
+2.97305e+06; 15590.2; 21335.2; 7273.74
+2.97305e+06; 15961.4; 21469; 7273.74
+2.97305e+06; 16332.6; 21602.8; 7273.74
+2.97305e+06; 16703.8; 21736.5; 7273.74
+2.97305e+06; 17075; 21870.3; 7273.74
+2.97305e+06; 17446.2; 22004.1; 7273.74
+2.97305e+06; 17817.4; 22137.9; 7273.74
+2.97305e+06; 18188.6; 22271.7; 7273.74
+2.97305e+06; 18559.8; 22405.4; 7273.74
+
+2.99019e+06; 0; 15799.8; 7315.67
+2.99019e+06; 369.85; 15933.8; 7315.67
+2.99019e+06; 739.7; 16067.8; 7315.67
+2.99019e+06; 1109.55; 16201.8; 7315.67
+2.99019e+06; 1479.4; 16335.8; 7315.67
+2.99019e+06; 1849.25; 16469.8; 7315.67
+2.99019e+06; 2219.1; 16603.8; 7315.67
+2.99019e+06; 2588.95; 16737.8; 7315.67
+2.99019e+06; 2958.8; 16871.8; 7315.67
+2.99019e+06; 3328.65; 17005.8; 7315.67
+2.99019e+06; 3698.5; 17139.8; 7315.67
+2.99019e+06; 4068.35; 17273.8; 7315.67
+2.99019e+06; 4438.2; 17407.8; 7315.67
+2.99019e+06; 4808.05; 17541.8; 7315.67
+2.99019e+06; 5177.9; 17675.8; 7315.67
+2.99019e+06; 5547.75; 17809.8; 7315.67
+2.99019e+06; 5917.6; 17943.9; 7315.67
+2.99019e+06; 6287.45; 18077.9; 7315.67
+2.99019e+06; 6657.3; 18211.9; 7315.67
+2.99019e+06; 7027.15; 18345.9; 7315.67
+2.99019e+06; 7397; 18479.9; 7315.67
+2.99019e+06; 7766.85; 18613.9; 7315.67
+2.99019e+06; 8136.7; 18747.9; 7315.67
+2.99019e+06; 8506.55; 18881.9; 7315.67
+2.99019e+06; 8876.4; 19015.9; 7315.67
+2.99019e+06; 9246.25; 19149.9; 7315.67
+2.99019e+06; 9616.1; 19283.9; 7315.67
+2.99019e+06; 9985.95; 19417.9; 7315.67
+2.99019e+06; 10355.8; 19551.9; 7315.67
+2.99019e+06; 10725.6; 19685.9; 7315.67
+2.99019e+06; 11095.5; 19819.9; 7315.67
+2.99019e+06; 11465.3; 19953.9; 7315.67
+2.99019e+06; 11835.2; 20087.9; 7315.67
+2.99019e+06; 12205; 20221.9; 7315.67
+2.99019e+06; 12574.9; 20355.9; 7315.67
+2.99019e+06; 12944.7; 20489.9; 7315.67
+2.99019e+06; 13314.6; 20623.9; 7315.67
+2.99019e+06; 13684.4; 20757.9; 7315.67
+2.99019e+06; 14054.3; 20891.9; 7315.67
+2.99019e+06; 14424.1; 21025.9; 7315.67
+2.99019e+06; 14794; 21159.9; 7315.67
+2.99019e+06; 15163.8; 21293.9; 7315.67
+2.99019e+06; 15533.7; 21427.9; 7315.67
+2.99019e+06; 15903.5; 21561.9; 7315.67
+2.99019e+06; 16273.4; 21695.9; 7315.67
+2.99019e+06; 16643.2; 21829.9; 7315.67
+2.99019e+06; 17013.1; 21963.9; 7315.67
+2.99019e+06; 17382.9; 22097.9; 7315.67
+2.99019e+06; 17752.8; 22231.9; 7315.67
+2.99019e+06; 18122.6; 22365.9; 7315.67
+2.99019e+06; 18492.5; 22499.9; 7315.67
+
+3.00732e+06; 0; 15883.3; 7357.6
+3.00732e+06; 368.504; 16017.5; 7357.6
+3.00732e+06; 737.008; 16151.7; 7357.6
+3.00732e+06; 1105.51; 16286; 7357.6
+3.00732e+06; 1474.02; 16420.2; 7357.6
+3.00732e+06; 1842.52; 16554.4; 7357.6
+3.00732e+06; 2211.02; 16688.6; 7357.6
+3.00732e+06; 2579.53; 16822.8; 7357.6
+3.00732e+06; 2948.03; 16957.1; 7357.6
+3.00732e+06; 3316.54; 17091.3; 7357.6
+3.00732e+06; 3685.04; 17225.5; 7357.6
+3.00732e+06; 4053.55; 17359.7; 7357.6
+3.00732e+06; 4422.05; 17493.9; 7357.6
+3.00732e+06; 4790.55; 17628.2; 7357.6
+3.00732e+06; 5159.06; 17762.4; 7357.6
+3.00732e+06; 5527.56; 17896.6; 7357.6
+3.00732e+06; 5896.07; 18030.8; 7357.6
+3.00732e+06; 6264.57; 18165; 7357.6
+3.00732e+06; 6633.07; 18299.2; 7357.6
+3.00732e+06; 7001.58; 18433.5; 7357.6
+3.00732e+06; 7370.08; 18567.7; 7357.6
+3.00732e+06; 7738.59; 18701.9; 7357.6
+3.00732e+06; 8107.09; 18836.1; 7357.6
+3.00732e+06; 8475.6; 18970.3; 7357.6
+3.00732e+06; 8844.1; 19104.6; 7357.6
+3.00732e+06; 9212.6; 19238.8; 7357.6
+3.00732e+06; 9581.11; 19373; 7357.6
+3.00732e+06; 9949.61; 19507.2; 7357.6
+3.00732e+06; 10318.1; 19641.4; 7357.6
+3.00732e+06; 10686.6; 19775.7; 7357.6
+3.00732e+06; 11055.1; 19909.9; 7357.6
+3.00732e+06; 11423.6; 20044.1; 7357.6
+3.00732e+06; 11792.1; 20178.3; 7357.6
+3.00732e+06; 12160.6; 20312.5; 7357.6
+3.00732e+06; 12529.1; 20446.8; 7357.6
+3.00732e+06; 12897.6; 20581; 7357.6
+3.00732e+06; 13266.1; 20715.2; 7357.6
+3.00732e+06; 13634.7; 20849.4; 7357.6
+3.00732e+06; 14003.2; 20983.6; 7357.6
+3.00732e+06; 14371.7; 21117.9; 7357.6
+3.00732e+06; 14740.2; 21252.1; 7357.6
+3.00732e+06; 15108.7; 21386.3; 7357.6
+3.00732e+06; 15477.2; 21520.5; 7357.6
+3.00732e+06; 15845.7; 21654.7; 7357.6
+3.00732e+06; 16214.2; 21789; 7357.6
+3.00732e+06; 16582.7; 21923.2; 7357.6
+3.00732e+06; 16951.2; 22057.4; 7357.6
+3.00732e+06; 17319.7; 22191.6; 7357.6
+3.00732e+06; 17688.2; 22325.8; 7357.6
+3.00732e+06; 18056.7; 22460.1; 7357.6
+3.00732e+06; 18425.2; 22594.3; 7357.6
+
+3.02446e+06; 0; 15966.9; 7399.54
+3.02446e+06; 367.158; 16101.3; 7399.54
+3.02446e+06; 734.317; 16235.7; 7399.54
+3.02446e+06; 1101.47; 16370.2; 7399.54
+3.02446e+06; 1468.63; 16504.6; 7399.54
+3.02446e+06; 1835.79; 16639; 7399.54
+3.02446e+06; 2202.95; 16773.5; 7399.54
+3.02446e+06; 2570.11; 16907.9; 7399.54
+3.02446e+06; 2937.27; 17042.3; 7399.54
+3.02446e+06; 3304.42; 17176.8; 7399.54
+3.02446e+06; 3671.58; 17311.2; 7399.54
+3.02446e+06; 4038.74; 17445.6; 7399.54
+3.02446e+06; 4405.9; 17580.1; 7399.54
+3.02446e+06; 4773.06; 17714.5; 7399.54
+3.02446e+06; 5140.22; 17848.9; 7399.54
+3.02446e+06; 5507.37; 17983.4; 7399.54
+3.02446e+06; 5874.53; 18117.8; 7399.54
+3.02446e+06; 6241.69; 18252.2; 7399.54
+3.02446e+06; 6608.85; 18386.7; 7399.54
+3.02446e+06; 6976.01; 18521.1; 7399.54
+3.02446e+06; 7343.17; 18655.5; 7399.54
+3.02446e+06; 7710.32; 18790; 7399.54
+3.02446e+06; 8077.48; 18924.4; 7399.54
+3.02446e+06; 8444.64; 19058.8; 7399.54
+3.02446e+06; 8811.8; 19193.3; 7399.54
+3.02446e+06; 9178.96; 19327.7; 7399.54
+3.02446e+06; 9546.12; 19462.1; 7399.54
+3.02446e+06; 9913.27; 19596.6; 7399.54
+3.02446e+06; 10280.4; 19731; 7399.54
+3.02446e+06; 10647.6; 19865.4; 7399.54
+3.02446e+06; 11014.7; 19999.9; 7399.54
+3.02446e+06; 11381.9; 20134.3; 7399.54
+3.02446e+06; 11749.1; 20268.7; 7399.54
+3.02446e+06; 12116.2; 20403.2; 7399.54
+3.02446e+06; 12483.4; 20537.6; 7399.54
+3.02446e+06; 12850.5; 20672; 7399.54
+3.02446e+06; 13217.7; 20806.5; 7399.54
+3.02446e+06; 13584.9; 20940.9; 7399.54
+3.02446e+06; 13952; 21075.3; 7399.54
+3.02446e+06; 14319.2; 21209.8; 7399.54
+3.02446e+06; 14686.3; 21344.2; 7399.54
+3.02446e+06; 15053.5; 21478.6; 7399.54
+3.02446e+06; 15420.6; 21613.1; 7399.54
+3.02446e+06; 15787.8; 21747.5; 7399.54
+3.02446e+06; 16155; 21881.9; 7399.54
+3.02446e+06; 16522.1; 22016.4; 7399.54
+3.02446e+06; 16889.3; 22150.8; 7399.54
+3.02446e+06; 17256.4; 22285.2; 7399.54
+3.02446e+06; 17623.6; 22419.7; 7399.54
+3.02446e+06; 17990.8; 22554.1; 7399.54
+3.02446e+06; 18357.9; 22688.5; 7399.54
+
+3.0416e+06; 0; 16050.6; 7441.47
+3.0416e+06; 365.812; 16185.2; 7441.47
+3.0416e+06; 731.625; 16319.9; 7441.47
+3.0416e+06; 1097.44; 16454.5; 7441.47
+3.0416e+06; 1463.25; 16589.1; 7441.47
+3.0416e+06; 1829.06; 16723.8; 7441.47
+3.0416e+06; 2194.87; 16858.4; 7441.47
+3.0416e+06; 2560.69; 16993.1; 7441.47
+3.0416e+06; 2926.5; 17127.7; 7441.47
+3.0416e+06; 3292.31; 17262.4; 7441.47
+3.0416e+06; 3658.12; 17397; 7441.47
+3.0416e+06; 4023.94; 17531.6; 7441.47
+3.0416e+06; 4389.75; 17666.3; 7441.47
+3.0416e+06; 4755.56; 17800.9; 7441.47
+3.0416e+06; 5121.37; 17935.6; 7441.47
+3.0416e+06; 5487.19; 18070.2; 7441.47
+3.0416e+06; 5853; 18204.9; 7441.47
+3.0416e+06; 6218.81; 18339.5; 7441.47
+3.0416e+06; 6584.62; 18474.1; 7441.47
+3.0416e+06; 6950.44; 18608.8; 7441.47
+3.0416e+06; 7316.25; 18743.4; 7441.47
+3.0416e+06; 7682.06; 18878.1; 7441.47
+3.0416e+06; 8047.87; 19012.7; 7441.47
+3.0416e+06; 8413.69; 19147.3; 7441.47
+3.0416e+06; 8779.5; 19282; 7441.47
+3.0416e+06; 9145.31; 19416.6; 7441.47
+3.0416e+06; 9511.12; 19551.3; 7441.47
+3.0416e+06; 9876.94; 19685.9; 7441.47
+3.0416e+06; 10242.7; 19820.6; 7441.47
+3.0416e+06; 10608.6; 19955.2; 7441.47
+3.0416e+06; 10974.4; 20089.8; 7441.47
+3.0416e+06; 11340.2; 20224.5; 7441.47
+3.0416e+06; 11706; 20359.1; 7441.47
+3.0416e+06; 12071.8; 20493.8; 7441.47
+3.0416e+06; 12437.6; 20628.4; 7441.47
+3.0416e+06; 12803.4; 20763.1; 7441.47
+3.0416e+06; 13169.2; 20897.7; 7441.47
+3.0416e+06; 13535.1; 21032.3; 7441.47
+3.0416e+06; 13900.9; 21167; 7441.47
+3.0416e+06; 14266.7; 21301.6; 7441.47
+3.0416e+06; 14632.5; 21436.3; 7441.47
+3.0416e+06; 14998.3; 21570.9; 7441.47
+3.0416e+06; 15364.1; 21705.5; 7441.47
+3.0416e+06; 15729.9; 21840.2; 7441.47
+3.0416e+06; 16095.7; 21974.8; 7441.47
+3.0416e+06; 16461.6; 22109.5; 7441.47
+3.0416e+06; 16827.4; 22244.1; 7441.47
+3.0416e+06; 17193.2; 22378.8; 7441.47
+3.0416e+06; 17559; 22513.4; 7441.47
+3.0416e+06; 17924.8; 22648; 7441.47
+3.0416e+06; 18290.6; 22782.7; 7441.47
+
+3.05874e+06; 0; 16134.4; 7483.4
+3.05874e+06; 364.467; 16269.2; 7483.4
+3.05874e+06; 728.933; 16404.1; 7483.4
+3.05874e+06; 1093.4; 16538.9; 7483.4
+3.05874e+06; 1457.87; 16673.8; 7483.4
+3.05874e+06; 1822.33; 16808.6; 7483.4
+3.05874e+06; 2186.8; 16943.5; 7483.4
+3.05874e+06; 2551.27; 17078.3; 7483.4
+3.05874e+06; 2915.73; 17213.2; 7483.4
+3.05874e+06; 3280.2; 17348; 7483.4
+3.05874e+06; 3644.67; 17482.8; 7483.4
+3.05874e+06; 4009.13; 17617.7; 7483.4
+3.05874e+06; 4373.6; 17752.5; 7483.4
+3.05874e+06; 4738.07; 17887.4; 7483.4
+3.05874e+06; 5102.53; 18022.2; 7483.4
+3.05874e+06; 5467; 18157.1; 7483.4
+3.05874e+06; 5831.47; 18291.9; 7483.4
+3.05874e+06; 6195.93; 18426.8; 7483.4
+3.05874e+06; 6560.4; 18561.6; 7483.4
+3.05874e+06; 6924.87; 18696.5; 7483.4
+3.05874e+06; 7289.33; 18831.3; 7483.4
+3.05874e+06; 7653.8; 18966.2; 7483.4
+3.05874e+06; 8018.27; 19101; 7483.4
+3.05874e+06; 8382.73; 19235.9; 7483.4
+3.05874e+06; 8747.2; 19370.7; 7483.4
+3.05874e+06; 9111.67; 19505.6; 7483.4
+3.05874e+06; 9476.13; 19640.4; 7483.4
+3.05874e+06; 9840.6; 19775.2; 7483.4
+3.05874e+06; 10205.1; 19910.1; 7483.4
+3.05874e+06; 10569.5; 20044.9; 7483.4
+3.05874e+06; 10934; 20179.8; 7483.4
+3.05874e+06; 11298.5; 20314.6; 7483.4
+3.05874e+06; 11662.9; 20449.5; 7483.4
+3.05874e+06; 12027.4; 20584.3; 7483.4
+3.05874e+06; 12391.9; 20719.2; 7483.4
+3.05874e+06; 12756.3; 20854; 7483.4
+3.05874e+06; 13120.8; 20988.9; 7483.4
+3.05874e+06; 13485.3; 21123.7; 7483.4
+3.05874e+06; 13849.7; 21258.6; 7483.4
+3.05874e+06; 14214.2; 21393.4; 7483.4
+3.05874e+06; 14578.7; 21528.3; 7483.4
+3.05874e+06; 14943.1; 21663.1; 7483.4
+3.05874e+06; 15307.6; 21798; 7483.4
+3.05874e+06; 15672.1; 21932.8; 7483.4
+3.05874e+06; 16036.5; 22067.7; 7483.4
+3.05874e+06; 16401; 22202.5; 7483.4
+3.05874e+06; 16765.5; 22337.3; 7483.4
+3.05874e+06; 17129.9; 22472.2; 7483.4
+3.05874e+06; 17494.4; 22607; 7483.4
+3.05874e+06; 17858.9; 22741.9; 7483.4
+3.05874e+06; 18223.3; 22876.7; 7483.4
+
+3.07588e+06; 0; 16218.3; 7525.33
+3.07588e+06; 363.121; 16353.3; 7525.33
+3.07588e+06; 726.242; 16488.4; 7525.33
+3.07588e+06; 1089.36; 16623.4; 7525.33
+3.07588e+06; 1452.48; 16758.5; 7525.33
+3.07588e+06; 1815.6; 16893.5; 7525.33
+3.07588e+06; 2178.72; 17028.6; 7525.33
+3.07588e+06; 2541.85; 17163.6; 7525.33
+3.07588e+06; 2904.97; 17298.7; 7525.33
+3.07588e+06; 3268.09; 17433.7; 7525.33
+3.07588e+06; 3631.21; 17568.8; 7525.33
+3.07588e+06; 3994.33; 17703.8; 7525.33
+3.07588e+06; 4357.45; 17838.9; 7525.33
+3.07588e+06; 4720.57; 17973.9; 7525.33
+3.07588e+06; 5083.69; 18109; 7525.33
+3.07588e+06; 5446.81; 18244; 7525.33
+3.07588e+06; 5809.93; 18379; 7525.33
+3.07588e+06; 6173.05; 18514.1; 7525.33
+3.07588e+06; 6536.17; 18649.1; 7525.33
+3.07588e+06; 6899.3; 18784.2; 7525.33
+3.07588e+06; 7262.42; 18919.2; 7525.33
+3.07588e+06; 7625.54; 19054.3; 7525.33
+3.07588e+06; 7988.66; 19189.3; 7525.33
+3.07588e+06; 8351.78; 19324.4; 7525.33
+3.07588e+06; 8714.9; 19459.4; 7525.33
+3.07588e+06; 9078.02; 19594.5; 7525.33
+3.07588e+06; 9441.14; 19729.5; 7525.33
+3.07588e+06; 9804.26; 19864.6; 7525.33
+3.07588e+06; 10167.4; 19999.6; 7525.33
+3.07588e+06; 10530.5; 20134.7; 7525.33
+3.07588e+06; 10893.6; 20269.7; 7525.33
+3.07588e+06; 11256.7; 20404.8; 7525.33
+3.07588e+06; 11619.9; 20539.8; 7525.33
+3.07588e+06; 11983; 20674.9; 7525.33
+3.07588e+06; 12346.1; 20809.9; 7525.33
+3.07588e+06; 12709.2; 20945; 7525.33
+3.07588e+06; 13072.3; 21080; 7525.33
+3.07588e+06; 13435.5; 21215.1; 7525.33
+3.07588e+06; 13798.6; 21350.1; 7525.33
+3.07588e+06; 14161.7; 21485.2; 7525.33
+3.07588e+06; 14524.8; 21620.2; 7525.33
+3.07588e+06; 14888; 21755.2; 7525.33
+3.07588e+06; 15251.1; 21890.3; 7525.33
+3.07588e+06; 15614.2; 22025.3; 7525.33
+3.07588e+06; 15977.3; 22160.4; 7525.33
+3.07588e+06; 16340.4; 22295.4; 7525.33
+3.07588e+06; 16703.6; 22430.5; 7525.33
+3.07588e+06; 17066.7; 22565.5; 7525.33
+3.07588e+06; 17429.8; 22700.6; 7525.33
+3.07588e+06; 17792.9; 22835.6; 7525.33
+3.07588e+06; 18156; 22970.7; 7525.33
+
+3.09302e+06; 0; 16302.3; 7567.27
+3.09302e+06; 361.775; 16437.5; 7567.27
+3.09302e+06; 723.55; 16572.8; 7567.27
+3.09302e+06; 1085.32; 16708; 7567.27
+3.09302e+06; 1447.1; 16843.3; 7567.27
+3.09302e+06; 1808.87; 16978.5; 7567.27
+3.09302e+06; 2170.65; 17113.8; 7567.27
+3.09302e+06; 2532.42; 17249; 7567.27
+3.09302e+06; 2894.2; 17384.3; 7567.27
+3.09302e+06; 3255.97; 17519.5; 7567.27
+3.09302e+06; 3617.75; 17654.7; 7567.27
+3.09302e+06; 3979.52; 17790; 7567.27
+3.09302e+06; 4341.3; 17925.2; 7567.27
+3.09302e+06; 4703.07; 18060.5; 7567.27
+3.09302e+06; 5064.85; 18195.7; 7567.27
+3.09302e+06; 5426.62; 18331; 7567.27
+3.09302e+06; 5788.4; 18466.2; 7567.27
+3.09302e+06; 6150.17; 18601.5; 7567.27
+3.09302e+06; 6511.95; 18736.7; 7567.27
+3.09302e+06; 6873.72; 18871.9; 7567.27
+3.09302e+06; 7235.5; 19007.2; 7567.27
+3.09302e+06; 7597.27; 19142.4; 7567.27
+3.09302e+06; 7959.05; 19277.7; 7567.27
+3.09302e+06; 8320.82; 19412.9; 7567.27
+3.09302e+06; 8682.6; 19548.2; 7567.27
+3.09302e+06; 9044.37; 19683.4; 7567.27
+3.09302e+06; 9406.15; 19818.7; 7567.27
+3.09302e+06; 9767.92; 19953.9; 7567.27
+3.09302e+06; 10129.7; 20089.1; 7567.27
+3.09302e+06; 10491.5; 20224.4; 7567.27
+3.09302e+06; 10853.2; 20359.6; 7567.27
+3.09302e+06; 11215; 20494.9; 7567.27
+3.09302e+06; 11576.8; 20630.1; 7567.27
+3.09302e+06; 11938.6; 20765.4; 7567.27
+3.09302e+06; 12300.3; 20900.6; 7567.27
+3.09302e+06; 12662.1; 21035.9; 7567.27
+3.09302e+06; 13023.9; 21171.1; 7567.27
+3.09302e+06; 13385.7; 21306.3; 7567.27
+3.09302e+06; 13747.4; 21441.6; 7567.27
+3.09302e+06; 14109.2; 21576.8; 7567.27
+3.09302e+06; 14471; 21712.1; 7567.27
+3.09302e+06; 14832.8; 21847.3; 7567.27
+3.09302e+06; 15194.5; 21982.6; 7567.27
+3.09302e+06; 15556.3; 22117.8; 7567.27
+3.09302e+06; 15918.1; 22253.1; 7567.27
+3.09302e+06; 16279.9; 22388.3; 7567.27
+3.09302e+06; 16641.6; 22523.5; 7567.27
+3.09302e+06; 17003.4; 22658.8; 7567.27
+3.09302e+06; 17365.2; 22794; 7567.27
+3.09302e+06; 17727; 22929.3; 7567.27
+3.09302e+06; 18088.7; 23064.5; 7567.27
+
+3.11016e+06; 0; 16386.4; 7609.2
+3.11016e+06; 360.429; 16521.9; 7609.2
+3.11016e+06; 720.858; 16657.3; 7609.2
+3.11016e+06; 1081.29; 16792.7; 7609.2
+3.11016e+06; 1441.72; 16928.2; 7609.2
+3.11016e+06; 1802.15; 17063.6; 7609.2
+3.11016e+06; 2162.57; 17199; 7609.2
+3.11016e+06; 2523; 17334.5; 7609.2
+3.11016e+06; 2883.43; 17469.9; 7609.2
+3.11016e+06; 3243.86; 17605.3; 7609.2
+3.11016e+06; 3604.29; 17740.8; 7609.2
+3.11016e+06; 3964.72; 17876.2; 7609.2
+3.11016e+06; 4325.15; 18011.7; 7609.2
+3.11016e+06; 4685.58; 18147.1; 7609.2
+3.11016e+06; 5046.01; 18282.5; 7609.2
+3.11016e+06; 5406.44; 18418; 7609.2
+3.11016e+06; 5766.87; 18553.4; 7609.2
+3.11016e+06; 6127.3; 18688.8; 7609.2
+3.11016e+06; 6487.72; 18824.3; 7609.2
+3.11016e+06; 6848.15; 18959.7; 7609.2
+3.11016e+06; 7208.58; 19095.2; 7609.2
+3.11016e+06; 7569.01; 19230.6; 7609.2
+3.11016e+06; 7929.44; 19366; 7609.2
+3.11016e+06; 8289.87; 19501.5; 7609.2
+3.11016e+06; 8650.3; 19636.9; 7609.2
+3.11016e+06; 9010.73; 19772.3; 7609.2
+3.11016e+06; 9371.16; 19907.8; 7609.2
+3.11016e+06; 9731.59; 20043.2; 7609.2
+3.11016e+06; 10092; 20178.6; 7609.2
+3.11016e+06; 10452.4; 20314.1; 7609.2
+3.11016e+06; 10812.9; 20449.5; 7609.2
+3.11016e+06; 11173.3; 20585; 7609.2
+3.11016e+06; 11533.7; 20720.4; 7609.2
+3.11016e+06; 11894.2; 20855.8; 7609.2
+3.11016e+06; 12254.6; 20991.3; 7609.2
+3.11016e+06; 12615; 21126.7; 7609.2
+3.11016e+06; 12975.4; 21262.1; 7609.2
+3.11016e+06; 13335.9; 21397.6; 7609.2
+3.11016e+06; 13696.3; 21533; 7609.2
+3.11016e+06; 14056.7; 21668.4; 7609.2
+3.11016e+06; 14417.2; 21803.9; 7609.2
+3.11016e+06; 14777.6; 21939.3; 7609.2
+3.11016e+06; 15138; 22074.8; 7609.2
+3.11016e+06; 15498.5; 22210.2; 7609.2
+3.11016e+06; 15858.9; 22345.6; 7609.2
+3.11016e+06; 16219.3; 22481.1; 7609.2
+3.11016e+06; 16579.7; 22616.5; 7609.2
+3.11016e+06; 16940.2; 22751.9; 7609.2
+3.11016e+06; 17300.6; 22887.4; 7609.2
+3.11016e+06; 17661; 23022.8; 7609.2
+3.11016e+06; 18021.5; 23158.3; 7609.2
+
+3.1273e+06; 0; 16470.7; 7651.13
+3.1273e+06; 359.083; 16606.3; 7651.13
+3.1273e+06; 718.167; 16741.9; 7651.13
+3.1273e+06; 1077.25; 16877.5; 7651.13
+3.1273e+06; 1436.33; 17013.2; 7651.13
+3.1273e+06; 1795.42; 17148.8; 7651.13
+3.1273e+06; 2154.5; 17284.4; 7651.13
+3.1273e+06; 2513.58; 17420; 7651.13
+3.1273e+06; 2872.67; 17555.6; 7651.13
+3.1273e+06; 3231.75; 17691.3; 7651.13
+3.1273e+06; 3590.83; 17826.9; 7651.13
+3.1273e+06; 3949.92; 17962.5; 7651.13
+3.1273e+06; 4309; 18098.1; 7651.13
+3.1273e+06; 4668.08; 18233.8; 7651.13
+3.1273e+06; 5027.17; 18369.4; 7651.13
+3.1273e+06; 5386.25; 18505; 7651.13
+3.1273e+06; 5745.33; 18640.6; 7651.13
+3.1273e+06; 6104.42; 18776.3; 7651.13
+3.1273e+06; 6463.5; 18911.9; 7651.13
+3.1273e+06; 6822.58; 19047.5; 7651.13
+3.1273e+06; 7181.67; 19183.1; 7651.13
+3.1273e+06; 7540.75; 19318.8; 7651.13
+3.1273e+06; 7899.83; 19454.4; 7651.13
+3.1273e+06; 8258.92; 19590; 7651.13
+3.1273e+06; 8618; 19725.6; 7651.13
+3.1273e+06; 8977.08; 19861.3; 7651.13
+3.1273e+06; 9336.17; 19996.9; 7651.13
+3.1273e+06; 9695.25; 20132.5; 7651.13
+3.1273e+06; 10054.3; 20268.1; 7651.13
+3.1273e+06; 10413.4; 20403.8; 7651.13
+3.1273e+06; 10772.5; 20539.4; 7651.13
+3.1273e+06; 11131.6; 20675; 7651.13
+3.1273e+06; 11490.7; 20810.6; 7651.13
+3.1273e+06; 11849.7; 20946.3; 7651.13
+3.1273e+06; 12208.8; 21081.9; 7651.13
+3.1273e+06; 12567.9; 21217.5; 7651.13
+3.1273e+06; 12927; 21353.1; 7651.13
+3.1273e+06; 13286.1; 21488.8; 7651.13
+3.1273e+06; 13645.2; 21624.4; 7651.13
+3.1273e+06; 14004.2; 21760; 7651.13
+3.1273e+06; 14363.3; 21895.6; 7651.13
+3.1273e+06; 14722.4; 22031.3; 7651.13
+3.1273e+06; 15081.5; 22166.9; 7651.13
+3.1273e+06; 15440.6; 22302.5; 7651.13
+3.1273e+06; 15799.7; 22438.1; 7651.13
+3.1273e+06; 16158.7; 22573.8; 7651.13
+3.1273e+06; 16517.8; 22709.4; 7651.13
+3.1273e+06; 16876.9; 22845; 7651.13
+3.1273e+06; 17236; 22980.6; 7651.13
+3.1273e+06; 17595.1; 23116.3; 7651.13
+3.1273e+06; 17954.2; 23251.9; 7651.13
+
+3.14444e+06; 0; 16555; 7693.06
+3.14444e+06; 357.737; 16690.8; 7693.06
+3.14444e+06; 715.475; 16826.6; 7693.06
+3.14444e+06; 1073.21; 16962.4; 7693.06
+3.14444e+06; 1430.95; 17098.2; 7693.06
+3.14444e+06; 1788.69; 17234; 7693.06
+3.14444e+06; 2146.42; 17369.8; 7693.06
+3.14444e+06; 2504.16; 17505.6; 7693.06
+3.14444e+06; 2861.9; 17641.5; 7693.06
+3.14444e+06; 3219.64; 17777.3; 7693.06
+3.14444e+06; 3577.37; 17913.1; 7693.06
+3.14444e+06; 3935.11; 18048.9; 7693.06
+3.14444e+06; 4292.85; 18184.7; 7693.06
+3.14444e+06; 4650.59; 18320.5; 7693.06
+3.14444e+06; 5008.32; 18456.3; 7693.06
+3.14444e+06; 5366.06; 18592.1; 7693.06
+3.14444e+06; 5723.8; 18727.9; 7693.06
+3.14444e+06; 6081.54; 18863.7; 7693.06
+3.14444e+06; 6439.27; 18999.5; 7693.06
+3.14444e+06; 6797.01; 19135.3; 7693.06
+3.14444e+06; 7154.75; 19271.2; 7693.06
+3.14444e+06; 7512.49; 19407; 7693.06
+3.14444e+06; 7870.22; 19542.8; 7693.06
+3.14444e+06; 8227.96; 19678.6; 7693.06
+3.14444e+06; 8585.7; 19814.4; 7693.06
+3.14444e+06; 8943.44; 19950.2; 7693.06
+3.14444e+06; 9301.17; 20086; 7693.06
+3.14444e+06; 9658.91; 20221.8; 7693.06
+3.14444e+06; 10016.6; 20357.6; 7693.06
+3.14444e+06; 10374.4; 20493.4; 7693.06
+3.14444e+06; 10732.1; 20629.2; 7693.06
+3.14444e+06; 11089.9; 20765; 7693.06
+3.14444e+06; 11447.6; 20900.9; 7693.06
+3.14444e+06; 11805.3; 21036.7; 7693.06
+3.14444e+06; 12163.1; 21172.5; 7693.06
+3.14444e+06; 12520.8; 21308.3; 7693.06
+3.14444e+06; 12878.5; 21444.1; 7693.06
+3.14444e+06; 13236.3; 21579.9; 7693.06
+3.14444e+06; 13594; 21715.7; 7693.06
+3.14444e+06; 13951.8; 21851.5; 7693.06
+3.14444e+06; 14309.5; 21987.3; 7693.06
+3.14444e+06; 14667.2; 22123.1; 7693.06
+3.14444e+06; 15025; 22258.9; 7693.06
+3.14444e+06; 15382.7; 22394.7; 7693.06
+3.14444e+06; 15740.4; 22530.5; 7693.06
+3.14444e+06; 16098.2; 22666.4; 7693.06
+3.14444e+06; 16455.9; 22802.2; 7693.06
+3.14444e+06; 16813.7; 22938; 7693.06
+3.14444e+06; 17171.4; 23073.8; 7693.06
+3.14444e+06; 17529.1; 23209.6; 7693.06
+3.14444e+06; 17886.9; 23345.4; 7693.06
+
+3.16158e+06; 0; 16639.4; 7735
+3.16158e+06; 356.392; 16775.4; 7735
+3.16158e+06; 712.783; 16911.4; 7735
+3.16158e+06; 1069.17; 17047.4; 7735
+3.16158e+06; 1425.57; 17183.4; 7735
+3.16158e+06; 1781.96; 17319.4; 7735
+3.16158e+06; 2138.35; 17455.4; 7735
+3.16158e+06; 2494.74; 17591.4; 7735
+3.16158e+06; 2851.13; 17727.3; 7735
+3.16158e+06; 3207.52; 17863.3; 7735
+3.16158e+06; 3563.92; 17999.3; 7735
+3.16158e+06; 3920.31; 18135.3; 7735
+3.16158e+06; 4276.7; 18271.3; 7735
+3.16158e+06; 4633.09; 18407.3; 7735
+3.16158e+06; 4989.48; 18543.3; 7735
+3.16158e+06; 5345.87; 18679.3; 7735
+3.16158e+06; 5702.27; 18815.2; 7735
+3.16158e+06; 6058.66; 18951.2; 7735
+3.16158e+06; 6415.05; 19087.2; 7735
+3.16158e+06; 6771.44; 19223.2; 7735
+3.16158e+06; 7127.83; 19359.2; 7735
+3.16158e+06; 7484.22; 19495.2; 7735
+3.16158e+06; 7840.62; 19631.2; 7735
+3.16158e+06; 8197.01; 19767.2; 7735
+3.16158e+06; 8553.4; 19903.1; 7735
+3.16158e+06; 8909.79; 20039.1; 7735
+3.16158e+06; 9266.18; 20175.1; 7735
+3.16158e+06; 9622.57; 20311.1; 7735
+3.16158e+06; 9978.97; 20447.1; 7735
+3.16158e+06; 10335.4; 20583.1; 7735
+3.16158e+06; 10691.7; 20719.1; 7735
+3.16158e+06; 11048.1; 20855.1; 7735
+3.16158e+06; 11404.5; 20991; 7735
+3.16158e+06; 11760.9; 21127; 7735
+3.16158e+06; 12117.3; 21263; 7735
+3.16158e+06; 12473.7; 21399; 7735
+3.16158e+06; 12830.1; 21535; 7735
+3.16158e+06; 13186.5; 21671; 7735
+3.16158e+06; 13542.9; 21807; 7735
+3.16158e+06; 13899.3; 21942.9; 7735
+3.16158e+06; 14255.7; 22078.9; 7735
+3.16158e+06; 14612.1; 22214.9; 7735
+3.16158e+06; 14968.4; 22350.9; 7735
+3.16158e+06; 15324.8; 22486.9; 7735
+3.16158e+06; 15681.2; 22622.9; 7735
+3.16158e+06; 16037.6; 22758.9; 7735
+3.16158e+06; 16394; 22894.9; 7735
+3.16158e+06; 16750.4; 23030.8; 7735
+3.16158e+06; 17106.8; 23166.8; 7735
+3.16158e+06; 17463.2; 23302.8; 7735
+3.16158e+06; 17819.6; 23438.8; 7735
+
+3.17872e+06; 0; 16724; 7776.93
+3.17872e+06; 355.046; 16860.2; 7776.93
+3.17872e+06; 710.092; 16996.3; 7776.93
+3.17872e+06; 1065.14; 17132.5; 7776.93
+3.17872e+06; 1420.18; 17268.7; 7776.93
+3.17872e+06; 1775.23; 17404.8; 7776.93
+3.17872e+06; 2130.27; 17541; 7776.93
+3.17872e+06; 2485.32; 17677.1; 7776.93
+3.17872e+06; 2840.37; 17813.3; 7776.93
+3.17872e+06; 3195.41; 17949.5; 7776.93
+3.17872e+06; 3550.46; 18085.6; 7776.93
+3.17872e+06; 3905.5; 18221.8; 7776.93
+3.17872e+06; 4260.55; 18357.9; 7776.93
+3.17872e+06; 4615.6; 18494.1; 7776.93
+3.17872e+06; 4970.64; 18630.3; 7776.93
+3.17872e+06; 5325.69; 18766.4; 7776.93
+3.17872e+06; 5680.73; 18902.6; 7776.93
+3.17872e+06; 6035.78; 19038.8; 7776.93
+3.17872e+06; 6390.82; 19174.9; 7776.93
+3.17872e+06; 6745.87; 19311.1; 7776.93
+3.17872e+06; 7100.92; 19447.2; 7776.93
+3.17872e+06; 7455.96; 19583.4; 7776.93
+3.17872e+06; 7811.01; 19719.6; 7776.93
+3.17872e+06; 8166.05; 19855.7; 7776.93
+3.17872e+06; 8521.1; 19991.9; 7776.93
+3.17872e+06; 8876.15; 20128.1; 7776.93
+3.17872e+06; 9231.19; 20264.2; 7776.93
+3.17872e+06; 9586.24; 20400.4; 7776.93
+3.17872e+06; 9941.28; 20536.5; 7776.93
+3.17872e+06; 10296.3; 20672.7; 7776.93
+3.17872e+06; 10651.4; 20808.9; 7776.93
+3.17872e+06; 11006.4; 20945; 7776.93
+3.17872e+06; 11361.5; 21081.2; 7776.93
+3.17872e+06; 11716.5; 21217.4; 7776.93
+3.17872e+06; 12071.6; 21353.5; 7776.93
+3.17872e+06; 12426.6; 21489.7; 7776.93
+3.17872e+06; 12781.6; 21625.8; 7776.93
+3.17872e+06; 13136.7; 21762; 7776.93
+3.17872e+06; 13491.7; 21898.2; 7776.93
+3.17872e+06; 13846.8; 22034.3; 7776.93
+3.17872e+06; 14201.8; 22170.5; 7776.93
+3.17872e+06; 14556.9; 22306.7; 7776.93
+3.17872e+06; 14911.9; 22442.8; 7776.93
+3.17872e+06; 15267; 22579; 7776.93
+3.17872e+06; 15622; 22715.1; 7776.93
+3.17872e+06; 15977.1; 22851.3; 7776.93
+3.17872e+06; 16332.1; 22987.5; 7776.93
+3.17872e+06; 16687.2; 23123.6; 7776.93
+3.17872e+06; 17042.2; 23259.8; 7776.93
+3.17872e+06; 17397.2; 23396; 7776.93
+3.17872e+06; 17752.3; 23532.1; 7776.93
+
+3.19586e+06; 0; 16808.7; 7818.86
+3.19586e+06; 353.7; 16945; 7818.86
+3.19586e+06; 707.4; 17081.3; 7818.86
+3.19586e+06; 1061.1; 17217.7; 7818.86
+3.19586e+06; 1414.8; 17354; 7818.86
+3.19586e+06; 1768.5; 17490.3; 7818.86
+3.19586e+06; 2122.2; 17626.7; 7818.86
+3.19586e+06; 2475.9; 17763; 7818.86
+3.19586e+06; 2829.6; 17899.3; 7818.86
+3.19586e+06; 3183.3; 18035.7; 7818.86
+3.19586e+06; 3537; 18172; 7818.86
+3.19586e+06; 3890.7; 18308.3; 7818.86
+3.19586e+06; 4244.4; 18444.7; 7818.86
+3.19586e+06; 4598.1; 18581; 7818.86
+3.19586e+06; 4951.8; 18717.3; 7818.86
+3.19586e+06; 5305.5; 18853.7; 7818.86
+3.19586e+06; 5659.2; 18990; 7818.86
+3.19586e+06; 6012.9; 19126.3; 7818.86
+3.19586e+06; 6366.6; 19262.7; 7818.86
+3.19586e+06; 6720.3; 19399; 7818.86
+3.19586e+06; 7074; 19535.3; 7818.86
+3.19586e+06; 7427.7; 19671.7; 7818.86
+3.19586e+06; 7781.4; 19808; 7818.86
+3.19586e+06; 8135.1; 19944.3; 7818.86
+3.19586e+06; 8488.8; 20080.7; 7818.86
+3.19586e+06; 8842.5; 20217; 7818.86
+3.19586e+06; 9196.2; 20353.3; 7818.86
+3.19586e+06; 9549.9; 20489.7; 7818.86
+3.19586e+06; 9903.6; 20626; 7818.86
+3.19586e+06; 10257.3; 20762.3; 7818.86
+3.19586e+06; 10611; 20898.7; 7818.86
+3.19586e+06; 10964.7; 21035; 7818.86
+3.19586e+06; 11318.4; 21171.3; 7818.86
+3.19586e+06; 11672.1; 21307.7; 7818.86
+3.19586e+06; 12025.8; 21444; 7818.86
+3.19586e+06; 12379.5; 21580.3; 7818.86
+3.19586e+06; 12733.2; 21716.7; 7818.86
+3.19586e+06; 13086.9; 21853; 7818.86
+3.19586e+06; 13440.6; 21989.3; 7818.86
+3.19586e+06; 13794.3; 22125.7; 7818.86
+3.19586e+06; 14148; 22262; 7818.86
+3.19586e+06; 14501.7; 22398.3; 7818.86
+3.19586e+06; 14855.4; 22534.6; 7818.86
+3.19586e+06; 15209.1; 22671; 7818.86
+3.19586e+06; 15562.8; 22807.3; 7818.86
+3.19586e+06; 15916.5; 22943.6; 7818.86
+3.19586e+06; 16270.2; 23080; 7818.86
+3.19586e+06; 16623.9; 23216.3; 7818.86
+3.19586e+06; 16977.6; 23352.6; 7818.86
+3.19586e+06; 17331.3; 23489; 7818.86
+3.19586e+06; 17685; 23625.3; 7818.86
+
+3.213e+06; 0; 16893.4; 7860.79
+3.213e+06; 352.354; 17029.9; 7860.79
+3.213e+06; 704.708; 17166.4; 7860.79
+3.213e+06; 1057.06; 17302.9; 7860.79
+3.213e+06; 1409.42; 17439.4; 7860.79
+3.213e+06; 1761.77; 17575.9; 7860.79
+3.213e+06; 2114.12; 17712.4; 7860.79
+3.213e+06; 2466.48; 17848.9; 7860.79
+3.213e+06; 2818.83; 17985.4; 7860.79
+3.213e+06; 3171.19; 18121.9; 7860.79
+3.213e+06; 3523.54; 18258.4; 7860.79
+3.213e+06; 3875.9; 18394.9; 7860.79
+3.213e+06; 4228.25; 18531.4; 7860.79
+3.213e+06; 4580.6; 18667.9; 7860.79
+3.213e+06; 4932.96; 18804.4; 7860.79
+3.213e+06; 5285.31; 18940.9; 7860.79
+3.213e+06; 5637.67; 19077.4; 7860.79
+3.213e+06; 5990.02; 19213.9; 7860.79
+3.213e+06; 6342.37; 19350.4; 7860.79
+3.213e+06; 6694.73; 19486.9; 7860.79
+3.213e+06; 7047.08; 19623.4; 7860.79
+3.213e+06; 7399.44; 19759.9; 7860.79
+3.213e+06; 7751.79; 19896.4; 7860.79
+3.213e+06; 8104.15; 20032.9; 7860.79
+3.213e+06; 8456.5; 20169.4; 7860.79
+3.213e+06; 8808.85; 20305.9; 7860.79
+3.213e+06; 9161.21; 20442.4; 7860.79
+3.213e+06; 9513.56; 20578.9; 7860.79
+3.213e+06; 9865.92; 20715.4; 7860.79
+3.213e+06; 10218.3; 20851.9; 7860.79
+3.213e+06; 10570.6; 20988.4; 7860.79
+3.213e+06; 10923; 21124.9; 7860.79
+3.213e+06; 11275.3; 21261.4; 7860.79
+3.213e+06; 11627.7; 21397.9; 7860.79
+3.213e+06; 11980; 21534.4; 7860.79
+3.213e+06; 12332.4; 21670.9; 7860.79
+3.213e+06; 12684.7; 21807.4; 7860.79
+3.213e+06; 13037.1; 21943.9; 7860.79
+3.213e+06; 13389.5; 22080.4; 7860.79
+3.213e+06; 13741.8; 22216.9; 7860.79
+3.213e+06; 14094.2; 22353.4; 7860.79
+3.213e+06; 14446.5; 22489.9; 7860.79
+3.213e+06; 14798.9; 22626.4; 7860.79
+3.213e+06; 15151.2; 22762.9; 7860.79
+3.213e+06; 15503.6; 22899.4; 7860.79
+3.213e+06; 15855.9; 23035.9; 7860.79
+3.213e+06; 16208.3; 23172.4; 7860.79
+3.213e+06; 16560.6; 23308.9; 7860.79
+3.213e+06; 16913; 23445.4; 7860.79
+3.213e+06; 17265.4; 23581.9; 7860.79
+3.213e+06; 17617.7; 23718.4; 7860.79
+
+3.27037e+06; 0; 17178.1; 8001.17
+3.27037e+06; 338.26; 17311.3; 8001.17
+3.27037e+06; 676.52; 17444.5; 8001.17
+3.27037e+06; 1014.78; 17577.8; 8001.17
+3.27037e+06; 1353.04; 17711; 8001.17
+3.27037e+06; 1691.3; 17844.3; 8001.17
+3.27037e+06; 2029.56; 17977.5; 8001.17
+3.27037e+06; 2367.82; 18110.8; 8001.17
+3.27037e+06; 2706.08; 18244; 8001.17
+3.27037e+06; 3044.34; 18377.3; 8001.17
+3.27037e+06; 3382.6; 18510.5; 8001.17
+3.27037e+06; 3720.86; 18643.8; 8001.17
+3.27037e+06; 4059.12; 18777; 8001.17
+3.27037e+06; 4397.38; 18910.3; 8001.17
+3.27037e+06; 4735.64; 19043.5; 8001.17
+3.27037e+06; 5073.9; 19176.8; 8001.17
+3.27037e+06; 5412.16; 19310; 8001.17
+3.27037e+06; 5750.42; 19443.2; 8001.17
+3.27037e+06; 6088.68; 19576.5; 8001.17
+3.27037e+06; 6426.94; 19709.7; 8001.17
+3.27037e+06; 6765.2; 19843; 8001.17
+3.27037e+06; 7103.46; 19976.2; 8001.17
+3.27037e+06; 7441.72; 20109.5; 8001.17
+3.27037e+06; 7779.98; 20242.7; 8001.17
+3.27037e+06; 8118.24; 20376; 8001.17
+3.27037e+06; 8456.5; 20509.2; 8001.17
+3.27037e+06; 8794.76; 20642.5; 8001.17
+3.27037e+06; 9133.02; 20775.7; 8001.17
+3.27037e+06; 9471.28; 20909; 8001.17
+3.27037e+06; 9809.54; 21042.2; 8001.17
+3.27037e+06; 10147.8; 21175.5; 8001.17
+3.27037e+06; 10486.1; 21308.7; 8001.17
+3.27037e+06; 10824.3; 21441.9; 8001.17
+3.27037e+06; 11162.6; 21575.2; 8001.17
+3.27037e+06; 11500.8; 21708.4; 8001.17
+3.27037e+06; 11839.1; 21841.7; 8001.17
+3.27037e+06; 12177.4; 21974.9; 8001.17
+3.27037e+06; 12515.6; 22108.2; 8001.17
+3.27037e+06; 12853.9; 22241.4; 8001.17
+3.27037e+06; 13192.1; 22374.7; 8001.17
+3.27037e+06; 13530.4; 22507.9; 8001.17
+3.27037e+06; 13868.7; 22641.2; 8001.17
+3.27037e+06; 14206.9; 22774.4; 8001.17
+3.27037e+06; 14545.2; 22907.7; 8001.17
+3.27037e+06; 14883.4; 23040.9; 8001.17
+3.27037e+06; 15221.7; 23174.2; 8001.17
+3.27037e+06; 15560; 23307.4; 8001.17
+3.27037e+06; 15898.2; 23440.6; 8001.17
+3.27037e+06; 16236.5; 23573.9; 8001.17
+3.27037e+06; 16574.7; 23707.1; 8001.17
+3.27037e+06; 16913; 23840.4; 8001.17
+
+3.32775e+06; 0; 17463.9; 8141.55
+3.32775e+06; 324.166; 17593.7; 8141.55
+3.32775e+06; 648.332; 17723.5; 8141.55
+3.32775e+06; 972.497; 17853.3; 8141.55
+3.32775e+06; 1296.66; 17983.2; 8141.55
+3.32775e+06; 1620.83; 18113; 8141.55
+3.32775e+06; 1944.99; 18242.8; 8141.55
+3.32775e+06; 2269.16; 18372.6; 8141.55
+3.32775e+06; 2593.33; 18502.4; 8141.55
+3.32775e+06; 2917.49; 18632.3; 8141.55
+3.32775e+06; 3241.66; 18762.1; 8141.55
+3.32775e+06; 3565.82; 18891.9; 8141.55
+3.32775e+06; 3889.99; 19021.7; 8141.55
+3.32775e+06; 4214.16; 19151.5; 8141.55
+3.32775e+06; 4538.32; 19281.4; 8141.55
+3.32775e+06; 4862.49; 19411.2; 8141.55
+3.32775e+06; 5186.65; 19541; 8141.55
+3.32775e+06; 5510.82; 19670.8; 8141.55
+3.32775e+06; 5834.98; 19800.6; 8141.55
+3.32775e+06; 6159.15; 19930.5; 8141.55
+3.32775e+06; 6483.32; 20060.3; 8141.55
+3.32775e+06; 6807.48; 20190.1; 8141.55
+3.32775e+06; 7131.65; 20319.9; 8141.55
+3.32775e+06; 7455.81; 20449.7; 8141.55
+3.32775e+06; 7779.98; 20579.6; 8141.55
+3.32775e+06; 8104.15; 20709.4; 8141.55
+3.32775e+06; 8428.31; 20839.2; 8141.55
+3.32775e+06; 8752.48; 20969; 8141.55
+3.32775e+06; 9076.64; 21098.8; 8141.55
+3.32775e+06; 9400.81; 21228.7; 8141.55
+3.32775e+06; 9724.97; 21358.5; 8141.55
+3.32775e+06; 10049.1; 21488.3; 8141.55
+3.32775e+06; 10373.3; 21618.1; 8141.55
+3.32775e+06; 10697.5; 21747.9; 8141.55
+3.32775e+06; 11021.6; 21877.8; 8141.55
+3.32775e+06; 11345.8; 22007.6; 8141.55
+3.32775e+06; 11670; 22137.4; 8141.55
+3.32775e+06; 11994.1; 22267.2; 8141.55
+3.32775e+06; 12318.3; 22397; 8141.55
+3.32775e+06; 12642.5; 22526.8; 8141.55
+3.32775e+06; 12966.6; 22656.7; 8141.55
+3.32775e+06; 13290.8; 22786.5; 8141.55
+3.32775e+06; 13615; 22916.3; 8141.55
+3.32775e+06; 13939.1; 23046.1; 8141.55
+3.32775e+06; 14263.3; 23175.9; 8141.55
+3.32775e+06; 14587.5; 23305.8; 8141.55
+3.32775e+06; 14911.6; 23435.6; 8141.55
+3.32775e+06; 15235.8; 23565.4; 8141.55
+3.32775e+06; 15560; 23695.2; 8141.55
+3.32775e+06; 15884.1; 23825; 8141.55
+3.32775e+06; 16208.3; 23954.9; 8141.55
+
+3.38513e+06; 0; 17751; 8281.93
+3.38513e+06; 310.072; 17877.2; 8281.93
+3.38513e+06; 620.143; 18003.4; 8281.93
+3.38513e+06; 930.215; 18129.6; 8281.93
+3.38513e+06; 1240.29; 18255.8; 8281.93
+3.38513e+06; 1550.36; 18382; 8281.93
+3.38513e+06; 1860.43; 18508.3; 8281.93
+3.38513e+06; 2170.5; 18634.5; 8281.93
+3.38513e+06; 2480.57; 18760.7; 8281.93
+3.38513e+06; 2790.64; 18886.9; 8281.93
+3.38513e+06; 3100.72; 19013.1; 8281.93
+3.38513e+06; 3410.79; 19139.3; 8281.93
+3.38513e+06; 3720.86; 19265.6; 8281.93
+3.38513e+06; 4030.93; 19391.8; 8281.93
+3.38513e+06; 4341; 19518; 8281.93
+3.38513e+06; 4651.07; 19644.2; 8281.93
+3.38513e+06; 4961.15; 19770.4; 8281.93
+3.38513e+06; 5271.22; 19896.6; 8281.93
+3.38513e+06; 5581.29; 20022.9; 8281.93
+3.38513e+06; 5891.36; 20149.1; 8281.93
+3.38513e+06; 6201.43; 20275.3; 8281.93
+3.38513e+06; 6511.5; 20401.5; 8281.93
+3.38513e+06; 6821.58; 20527.7; 8281.93
+3.38513e+06; 7131.65; 20653.9; 8281.93
+3.38513e+06; 7441.72; 20780.1; 8281.93
+3.38513e+06; 7751.79; 20906.4; 8281.93
+3.38513e+06; 8061.86; 21032.6; 8281.93
+3.38513e+06; 8371.93; 21158.8; 8281.93
+3.38513e+06; 8682.01; 21285; 8281.93
+3.38513e+06; 8992.08; 21411.2; 8281.93
+3.38513e+06; 9302.15; 21537.4; 8281.93
+3.38513e+06; 9612.22; 21663.7; 8281.93
+3.38513e+06; 9922.29; 21789.9; 8281.93
+3.38513e+06; 10232.4; 21916.1; 8281.93
+3.38513e+06; 10542.4; 22042.3; 8281.93
+3.38513e+06; 10852.5; 22168.5; 8281.93
+3.38513e+06; 11162.6; 22294.7; 8281.93
+3.38513e+06; 11472.7; 22421; 8281.93
+3.38513e+06; 11782.7; 22547.2; 8281.93
+3.38513e+06; 12092.8; 22673.4; 8281.93
+3.38513e+06; 12402.9; 22799.6; 8281.93
+3.38513e+06; 12712.9; 22925.8; 8281.93
+3.38513e+06; 13023; 23052; 8281.93
+3.38513e+06; 13333.1; 23178.3; 8281.93
+3.38513e+06; 13643.2; 23304.5; 8281.93
+3.38513e+06; 13953.2; 23430.7; 8281.93
+3.38513e+06; 14263.3; 23556.9; 8281.93
+3.38513e+06; 14573.4; 23683.1; 8281.93
+3.38513e+06; 14883.4; 23809.3; 8281.93
+3.38513e+06; 15193.5; 23935.6; 8281.93
+3.38513e+06; 15503.6; 24061.8; 8281.93
+
+3.44251e+06; 0; 18039.3; 8422.31
+3.44251e+06; 295.977; 18161.7; 8422.31
+3.44251e+06; 591.955; 18284.1; 8422.31
+3.44251e+06; 887.932; 18406.6; 8422.31
+3.44251e+06; 1183.91; 18529; 8422.31
+3.44251e+06; 1479.89; 18651.4; 8422.31
+3.44251e+06; 1775.86; 18773.9; 8422.31
+3.44251e+06; 2071.84; 18896.3; 8422.31
+3.44251e+06; 2367.82; 19018.8; 8422.31
+3.44251e+06; 2663.8; 19141.2; 8422.31
+3.44251e+06; 2959.77; 19263.6; 8422.31
+3.44251e+06; 3255.75; 19386.1; 8422.31
+3.44251e+06; 3551.73; 19508.5; 8422.31
+3.44251e+06; 3847.71; 19630.9; 8422.31
+3.44251e+06; 4143.68; 19753.4; 8422.31
+3.44251e+06; 4439.66; 19875.8; 8422.31
+3.44251e+06; 4735.64; 19998.2; 8422.31
+3.44251e+06; 5031.62; 20120.7; 8422.31
+3.44251e+06; 5327.59; 20243.1; 8422.31
+3.44251e+06; 5623.57; 20365.6; 8422.31
+3.44251e+06; 5919.55; 20488; 8422.31
+3.44251e+06; 6215.53; 20610.4; 8422.31
+3.44251e+06; 6511.5; 20732.9; 8422.31
+3.44251e+06; 6807.48; 20855.3; 8422.31
+3.44251e+06; 7103.46; 20977.7; 8422.31
+3.44251e+06; 7399.44; 21100.2; 8422.31
+3.44251e+06; 7695.41; 21222.6; 8422.31
+3.44251e+06; 7991.39; 21345; 8422.31
+3.44251e+06; 8287.37; 21467.5; 8422.31
+3.44251e+06; 8583.35; 21589.9; 8422.31
+3.44251e+06; 8879.32; 21712.3; 8422.31
+3.44251e+06; 9175.3; 21834.8; 8422.31
+3.44251e+06; 9471.28; 21957.2; 8422.31
+3.44251e+06; 9767.26; 22079.7; 8422.31
+3.44251e+06; 10063.2; 22202.1; 8422.31
+3.44251e+06; 10359.2; 22324.5; 8422.31
+3.44251e+06; 10655.2; 22447; 8422.31
+3.44251e+06; 10951.2; 22569.4; 8422.31
+3.44251e+06; 11247.1; 22691.8; 8422.31
+3.44251e+06; 11543.1; 22814.3; 8422.31
+3.44251e+06; 11839.1; 22936.7; 8422.31
+3.44251e+06; 12135.1; 23059.1; 8422.31
+3.44251e+06; 12431.1; 23181.6; 8422.31
+3.44251e+06; 12727; 23304; 8422.31
+3.44251e+06; 13023; 23426.5; 8422.31
+3.44251e+06; 13319; 23548.9; 8422.31
+3.44251e+06; 13615; 23671.3; 8422.31
+3.44251e+06; 13910.9; 23793.8; 8422.31
+3.44251e+06; 14206.9; 23916.2; 8422.31
+3.44251e+06; 14502.9; 24038.6; 8422.31
+3.44251e+06; 14798.9; 24161.1; 8422.31
+
+3.49988e+06; 0; 18328.8; 8562.68
+3.49988e+06; 281.883; 18447.3; 8562.68
+3.49988e+06; 563.767; 18565.8; 8562.68
+3.49988e+06; 845.65; 18684.3; 8562.68
+3.49988e+06; 1127.53; 18802.7; 8562.68
+3.49988e+06; 1409.42; 18921.2; 8562.68
+3.49988e+06; 1691.3; 19039.7; 8562.68
+3.49988e+06; 1973.18; 19158.2; 8562.68
+3.49988e+06; 2255.07; 19276.6; 8562.68
+3.49988e+06; 2536.95; 19395.1; 8562.68
+3.49988e+06; 2818.83; 19513.6; 8562.68
+3.49988e+06; 3100.72; 19632.1; 8562.68
+3.49988e+06; 3382.6; 19750.5; 8562.68
+3.49988e+06; 3664.48; 19869; 8562.68
+3.49988e+06; 3946.37; 19987.5; 8562.68
+3.49988e+06; 4228.25; 20106; 8562.68
+3.49988e+06; 4510.13; 20224.5; 8562.68
+3.49988e+06; 4792.02; 20342.9; 8562.68
+3.49988e+06; 5073.9; 20461.4; 8562.68
+3.49988e+06; 5355.78; 20579.9; 8562.68
+3.49988e+06; 5637.67; 20698.4; 8562.68
+3.49988e+06; 5919.55; 20816.8; 8562.68
+3.49988e+06; 6201.43; 20935.3; 8562.68
+3.49988e+06; 6483.32; 21053.8; 8562.68
+3.49988e+06; 6765.2; 21172.3; 8562.68
+3.49988e+06; 7047.08; 21290.8; 8562.68
+3.49988e+06; 7328.97; 21409.2; 8562.68
+3.49988e+06; 7610.85; 21527.7; 8562.68
+3.49988e+06; 7892.73; 21646.2; 8562.68
+3.49988e+06; 8174.62; 21764.7; 8562.68
+3.49988e+06; 8456.5; 21883.1; 8562.68
+3.49988e+06; 8738.38; 22001.6; 8562.68
+3.49988e+06; 9020.27; 22120.1; 8562.68
+3.49988e+06; 9302.15; 22238.6; 8562.68
+3.49988e+06; 9584.03; 22357.1; 8562.68
+3.49988e+06; 9865.92; 22475.5; 8562.68
+3.49988e+06; 10147.8; 22594; 8562.68
+3.49988e+06; 10429.7; 22712.5; 8562.68
+3.49988e+06; 10711.6; 22831; 8562.68
+3.49988e+06; 10993.4; 22949.4; 8562.68
+3.49988e+06; 11275.3; 23067.9; 8562.68
+3.49988e+06; 11557.2; 23186.4; 8562.68
+3.49988e+06; 11839.1; 23304.9; 8562.68
+3.49988e+06; 12121; 23423.4; 8562.68
+3.49988e+06; 12402.9; 23541.8; 8562.68
+3.49988e+06; 12684.7; 23660.3; 8562.68
+3.49988e+06; 12966.6; 23778.8; 8562.68
+3.49988e+06; 13248.5; 23897.3; 8562.68
+3.49988e+06; 13530.4; 24015.7; 8562.68
+3.49988e+06; 13812.3; 24134.2; 8562.68
+3.49988e+06; 14094.2; 24252.7; 8562.68
+
+3.55726e+06; 0; 18619.6; 8703.06
+3.55726e+06; 267.789; 18734; 8703.06
+3.55726e+06; 535.578; 18848.3; 8703.06
+3.55726e+06; 803.367; 18962.6; 8703.06
+3.55726e+06; 1071.16; 19077; 8703.06
+3.55726e+06; 1338.95; 19191.3; 8703.06
+3.55726e+06; 1606.73; 19305.7; 8703.06
+3.55726e+06; 1874.52; 19420; 8703.06
+3.55726e+06; 2142.31; 19534.3; 8703.06
+3.55726e+06; 2410.1; 19648.7; 8703.06
+3.55726e+06; 2677.89; 19763; 8703.06
+3.55726e+06; 2945.68; 19877.4; 8703.06
+3.55726e+06; 3213.47; 19991.7; 8703.06
+3.55726e+06; 3481.26; 20106; 8703.06
+3.55726e+06; 3749.05; 20220.4; 8703.06
+3.55726e+06; 4016.84; 20334.7; 8703.06
+3.55726e+06; 4284.63; 20449.1; 8703.06
+3.55726e+06; 4552.42; 20563.4; 8703.06
+3.55726e+06; 4820.2; 20677.7; 8703.06
+3.55726e+06; 5087.99; 20792.1; 8703.06
+3.55726e+06; 5355.78; 20906.4; 8703.06
+3.55726e+06; 5623.57; 21020.8; 8703.06
+3.55726e+06; 5891.36; 21135.1; 8703.06
+3.55726e+06; 6159.15; 21249.4; 8703.06
+3.55726e+06; 6426.94; 21363.8; 8703.06
+3.55726e+06; 6694.73; 21478.1; 8703.06
+3.55726e+06; 6962.52; 21592.4; 8703.06
+3.55726e+06; 7230.31; 21706.8; 8703.06
+3.55726e+06; 7498.1; 21821.1; 8703.06
+3.55726e+06; 7765.89; 21935.5; 8703.06
+3.55726e+06; 8033.67; 22049.8; 8703.06
+3.55726e+06; 8301.46; 22164.1; 8703.06
+3.55726e+06; 8569.25; 22278.5; 8703.06
+3.55726e+06; 8837.04; 22392.8; 8703.06
+3.55726e+06; 9104.83; 22507.2; 8703.06
+3.55726e+06; 9372.62; 22621.5; 8703.06
+3.55726e+06; 9640.41; 22735.8; 8703.06
+3.55726e+06; 9908.2; 22850.2; 8703.06
+3.55726e+06; 10176; 22964.5; 8703.06
+3.55726e+06; 10443.8; 23078.9; 8703.06
+3.55726e+06; 10711.6; 23193.2; 8703.06
+3.55726e+06; 10979.4; 23307.5; 8703.06
+3.55726e+06; 11247.1; 23421.9; 8703.06
+3.55726e+06; 11514.9; 23536.2; 8703.06
+3.55726e+06; 11782.7; 23650.6; 8703.06
+3.55726e+06; 12050.5; 23764.9; 8703.06
+3.55726e+06; 12318.3; 23879.2; 8703.06
+3.55726e+06; 12586.1; 23993.6; 8703.06
+3.55726e+06; 12853.9; 24107.9; 8703.06
+3.55726e+06; 13121.7; 24222.3; 8703.06
+3.55726e+06; 13389.5; 24336.6; 8703.06
+
+3.61464e+06; 0; 18911.7; 8843.44
+3.61464e+06; 253.695; 19021.7; 8843.44
+3.61464e+06; 507.39; 19131.7; 8843.44
+3.61464e+06; 761.085; 19241.7; 8843.44
+3.61464e+06; 1014.78; 19351.8; 8843.44
+3.61464e+06; 1268.47; 19461.8; 8843.44
+3.61464e+06; 1522.17; 19571.8; 8843.44
+3.61464e+06; 1775.86; 19681.8; 8843.44
+3.61464e+06; 2029.56; 19791.8; 8843.44
+3.61464e+06; 2283.25; 19901.9; 8843.44
+3.61464e+06; 2536.95; 20011.9; 8843.44
+3.61464e+06; 2790.64; 20121.9; 8843.44
+3.61464e+06; 3044.34; 20231.9; 8843.44
+3.61464e+06; 3298.03; 20342; 8843.44
+3.61464e+06; 3551.73; 20452; 8843.44
+3.61464e+06; 3805.42; 20562; 8843.44
+3.61464e+06; 4059.12; 20672; 8843.44
+3.61464e+06; 4312.81; 20782; 8843.44
+3.61464e+06; 4566.51; 20892.1; 8843.44
+3.61464e+06; 4820.2; 21002.1; 8843.44
+3.61464e+06; 5073.9; 21112.1; 8843.44
+3.61464e+06; 5327.59; 21222.1; 8843.44
+3.61464e+06; 5581.29; 21332.1; 8843.44
+3.61464e+06; 5834.98; 21442.2; 8843.44
+3.61464e+06; 6088.68; 21552.2; 8843.44
+3.61464e+06; 6342.37; 21662.2; 8843.44
+3.61464e+06; 6596.07; 21772.2; 8843.44
+3.61464e+06; 6849.76; 21882.2; 8843.44
+3.61464e+06; 7103.46; 21992.3; 8843.44
+3.61464e+06; 7357.15; 22102.3; 8843.44
+3.61464e+06; 7610.85; 22212.3; 8843.44
+3.61464e+06; 7864.54; 22322.3; 8843.44
+3.61464e+06; 8118.24; 22432.3; 8843.44
+3.61464e+06; 8371.93; 22542.4; 8843.44
+3.61464e+06; 8625.63; 22652.4; 8843.44
+3.61464e+06; 8879.32; 22762.4; 8843.44
+3.61464e+06; 9133.02; 22872.4; 8843.44
+3.61464e+06; 9386.71; 22982.4; 8843.44
+3.61464e+06; 9640.41; 23092.5; 8843.44
+3.61464e+06; 9894.1; 23202.5; 8843.44
+3.61464e+06; 10147.8; 23312.5; 8843.44
+3.61464e+06; 10401.5; 23422.5; 8843.44
+3.61464e+06; 10655.2; 23532.6; 8843.44
+3.61464e+06; 10908.9; 23642.6; 8843.44
+3.61464e+06; 11162.6; 23752.6; 8843.44
+3.61464e+06; 11416.3; 23862.6; 8843.44
+3.61464e+06; 11670; 23972.6; 8843.44
+3.61464e+06; 11923.7; 24082.7; 8843.44
+3.61464e+06; 12177.4; 24192.7; 8843.44
+3.61464e+06; 12431.1; 24302.7; 8843.44
+3.61464e+06; 12684.7; 24412.7; 8843.44
+
+3.67202e+06; 0; 19205.6; 8983.82
+3.67202e+06; 239.601; 19311.1; 8983.82
+3.67202e+06; 479.202; 19416.6; 8983.82
+3.67202e+06; 718.802; 19522.1; 8983.82
+3.67202e+06; 958.403; 19627.7; 8983.82
+3.67202e+06; 1198; 19733.2; 8983.82
+3.67202e+06; 1437.6; 19838.7; 8983.82
+3.67202e+06; 1677.21; 19944.2; 8983.82
+3.67202e+06; 1916.81; 20049.8; 8983.82
+3.67202e+06; 2156.41; 20155.3; 8983.82
+3.67202e+06; 2396.01; 20260.8; 8983.82
+3.67202e+06; 2635.61; 20366.3; 8983.82
+3.67202e+06; 2875.21; 20471.8; 8983.82
+3.67202e+06; 3114.81; 20577.4; 8983.82
+3.67202e+06; 3354.41; 20682.9; 8983.82
+3.67202e+06; 3594.01; 20788.4; 8983.82
+3.67202e+06; 3833.61; 20893.9; 8983.82
+3.67202e+06; 4073.21; 20999.5; 8983.82
+3.67202e+06; 4312.81; 21105; 8983.82
+3.67202e+06; 4552.42; 21210.5; 8983.82
+3.67202e+06; 4792.02; 21316; 8983.82
+3.67202e+06; 5031.62; 21421.6; 8983.82
+3.67202e+06; 5271.22; 21527.1; 8983.82
+3.67202e+06; 5510.82; 21632.6; 8983.82
+3.67202e+06; 5750.42; 21738.1; 8983.82
+3.67202e+06; 5990.02; 21843.6; 8983.82
+3.67202e+06; 6229.62; 21949.2; 8983.82
+3.67202e+06; 6469.22; 22054.7; 8983.82
+3.67202e+06; 6708.82; 22160.2; 8983.82
+3.67202e+06; 6948.42; 22265.7; 8983.82
+3.67202e+06; 7188.02; 22371.3; 8983.82
+3.67202e+06; 7427.63; 22476.8; 8983.82
+3.67202e+06; 7667.23; 22582.3; 8983.82
+3.67202e+06; 7906.83; 22687.8; 8983.82
+3.67202e+06; 8146.43; 22793.4; 8983.82
+3.67202e+06; 8386.03; 22898.9; 8983.82
+3.67202e+06; 8625.63; 23004.4; 8983.82
+3.67202e+06; 8865.23; 23109.9; 8983.82
+3.67202e+06; 9104.83; 23215.4; 8983.82
+3.67202e+06; 9344.43; 23321; 8983.82
+3.67202e+06; 9584.03; 23426.5; 8983.82
+3.67202e+06; 9823.63; 23532; 8983.82
+3.67202e+06; 10063.2; 23637.5; 8983.82
+3.67202e+06; 10302.8; 23743.1; 8983.82
+3.67202e+06; 10542.4; 23848.6; 8983.82
+3.67202e+06; 10782; 23954.1; 8983.82
+3.67202e+06; 11021.6; 24059.6; 8983.82
+3.67202e+06; 11261.2; 24165.2; 8983.82
+3.67202e+06; 11500.8; 24270.7; 8983.82
+3.67202e+06; 11740.4; 24376.2; 8983.82
+3.67202e+06; 11980; 24481.7; 8983.82
+
+3.7294e+06; 0; 19500.2; 9124.19
+3.7294e+06; 225.507; 19601; 9124.19
+3.7294e+06; 451.013; 19701.9; 9124.19
+3.7294e+06; 676.52; 19802.7; 9124.19
+3.7294e+06; 902.027; 19903.6; 9124.19
+3.7294e+06; 1127.53; 20004.4; 9124.19
+3.7294e+06; 1353.04; 20105.2; 9124.19
+3.7294e+06; 1578.55; 20206.1; 9124.19
+3.7294e+06; 1804.05; 20306.9; 9124.19
+3.7294e+06; 2029.56; 20407.8; 9124.19
+3.7294e+06; 2255.07; 20508.6; 9124.19
+3.7294e+06; 2480.57; 20609.4; 9124.19
+3.7294e+06; 2706.08; 20710.3; 9124.19
+3.7294e+06; 2931.59; 20811.1; 9124.19
+3.7294e+06; 3157.09; 20912; 9124.19
+3.7294e+06; 3382.6; 21012.8; 9124.19
+3.7294e+06; 3608.11; 21113.6; 9124.19
+3.7294e+06; 3833.61; 21214.5; 9124.19
+3.7294e+06; 4059.12; 21315.3; 9124.19
+3.7294e+06; 4284.63; 21416.2; 9124.19
+3.7294e+06; 4510.13; 21517; 9124.19
+3.7294e+06; 4735.64; 21617.8; 9124.19
+3.7294e+06; 4961.15; 21718.7; 9124.19
+3.7294e+06; 5186.65; 21819.5; 9124.19
+3.7294e+06; 5412.16; 21920.4; 9124.19
+3.7294e+06; 5637.67; 22021.2; 9124.19
+3.7294e+06; 5863.17; 22122; 9124.19
+3.7294e+06; 6088.68; 22222.9; 9124.19
+3.7294e+06; 6314.19; 22323.7; 9124.19
+3.7294e+06; 6539.69; 22424.6; 9124.19
+3.7294e+06; 6765.2; 22525.4; 9124.19
+3.7294e+06; 6990.71; 22626.2; 9124.19
+3.7294e+06; 7216.21; 22727.1; 9124.19
+3.7294e+06; 7441.72; 22827.9; 9124.19
+3.7294e+06; 7667.23; 22928.8; 9124.19
+3.7294e+06; 7892.73; 23029.6; 9124.19
+3.7294e+06; 8118.24; 23130.4; 9124.19
+3.7294e+06; 8343.75; 23231.3; 9124.19
+3.7294e+06; 8569.25; 23332.1; 9124.19
+3.7294e+06; 8794.76; 23432.9; 9124.19
+3.7294e+06; 9020.27; 23533.8; 9124.19
+3.7294e+06; 9245.77; 23634.6; 9124.19
+3.7294e+06; 9471.28; 23735.5; 9124.19
+3.7294e+06; 9696.79; 23836.3; 9124.19
+3.7294e+06; 9922.29; 23937.1; 9124.19
+3.7294e+06; 10147.8; 24038; 9124.19
+3.7294e+06; 10373.3; 24138.8; 9124.19
+3.7294e+06; 10598.8; 24239.7; 9124.19
+3.7294e+06; 10824.3; 24340.5; 9124.19
+3.7294e+06; 11049.8; 24441.3; 9124.19
+3.7294e+06; 11275.3; 24542.2; 9124.19
+
+3.78677e+06; 0; 19796.1; 9264.57
+3.78677e+06; 211.412; 19892.1; 9264.57
+3.78677e+06; 422.825; 19988.1; 9264.57
+3.78677e+06; 634.237; 20084; 9264.57
+3.78677e+06; 845.65; 20180; 9264.57
+3.78677e+06; 1057.06; 20276; 9264.57
+3.78677e+06; 1268.47; 20372; 9264.57
+3.78677e+06; 1479.89; 20467.9; 9264.57
+3.78677e+06; 1691.3; 20563.9; 9264.57
+3.78677e+06; 1902.71; 20659.9; 9264.57
+3.78677e+06; 2114.12; 20755.8; 9264.57
+3.78677e+06; 2325.54; 20851.8; 9264.57
+3.78677e+06; 2536.95; 20947.8; 9264.57
+3.78677e+06; 2748.36; 21043.8; 9264.57
+3.78677e+06; 2959.77; 21139.7; 9264.57
+3.78677e+06; 3171.19; 21235.7; 9264.57
+3.78677e+06; 3382.6; 21331.7; 9264.57
+3.78677e+06; 3594.01; 21427.6; 9264.57
+3.78677e+06; 3805.42; 21523.6; 9264.57
+3.78677e+06; 4016.84; 21619.6; 9264.57
+3.78677e+06; 4228.25; 21715.6; 9264.57
+3.78677e+06; 4439.66; 21811.5; 9264.57
+3.78677e+06; 4651.07; 21907.5; 9264.57
+3.78677e+06; 4862.49; 22003.5; 9264.57
+3.78677e+06; 5073.9; 22099.4; 9264.57
+3.78677e+06; 5285.31; 22195.4; 9264.57
+3.78677e+06; 5496.72; 22291.4; 9264.57
+3.78677e+06; 5708.14; 22387.4; 9264.57
+3.78677e+06; 5919.55; 22483.3; 9264.57
+3.78677e+06; 6130.96; 22579.3; 9264.57
+3.78677e+06; 6342.37; 22675.3; 9264.57
+3.78677e+06; 6553.79; 22771.2; 9264.57
+3.78677e+06; 6765.2; 22867.2; 9264.57
+3.78677e+06; 6976.61; 22963.2; 9264.57
+3.78677e+06; 7188.02; 23059.2; 9264.57
+3.78677e+06; 7399.44; 23155.1; 9264.57
+3.78677e+06; 7610.85; 23251.1; 9264.57
+3.78677e+06; 7822.26; 23347.1; 9264.57
+3.78677e+06; 8033.67; 23443.1; 9264.57
+3.78677e+06; 8245.09; 23539; 9264.57
+3.78677e+06; 8456.5; 23635; 9264.57
+3.78677e+06; 8667.91; 23731; 9264.57
+3.78677e+06; 8879.32; 23826.9; 9264.57
+3.78677e+06; 9090.74; 23922.9; 9264.57
+3.78677e+06; 9302.15; 24018.9; 9264.57
+3.78677e+06; 9513.56; 24114.9; 9264.57
+3.78677e+06; 9724.97; 24210.8; 9264.57
+3.78677e+06; 9936.39; 24306.8; 9264.57
+3.78677e+06; 10147.8; 24402.8; 9264.57
+3.78677e+06; 10359.2; 24498.7; 9264.57
+3.78677e+06; 10570.6; 24594.7; 9264.57
+
+3.84415e+06; 0; 20093.3; 9404.95
+3.84415e+06; 197.318; 20184.2; 9404.95
+3.84415e+06; 394.637; 20275.2; 9404.95
+3.84415e+06; 591.955; 20366.1; 9404.95
+3.84415e+06; 789.273; 20457; 9404.95
+3.84415e+06; 986.592; 20547.9; 9404.95
+3.84415e+06; 1183.91; 20638.8; 9404.95
+3.84415e+06; 1381.23; 20729.8; 9404.95
+3.84415e+06; 1578.55; 20820.7; 9404.95
+3.84415e+06; 1775.86; 20911.6; 9404.95
+3.84415e+06; 1973.18; 21002.5; 9404.95
+3.84415e+06; 2170.5; 21093.4; 9404.95
+3.84415e+06; 2367.82; 21184.3; 9404.95
+3.84415e+06; 2565.14; 21275.3; 9404.95
+3.84415e+06; 2762.46; 21366.2; 9404.95
+3.84415e+06; 2959.77; 21457.1; 9404.95
+3.84415e+06; 3157.09; 21548; 9404.95
+3.84415e+06; 3354.41; 21638.9; 9404.95
+3.84415e+06; 3551.73; 21729.9; 9404.95
+3.84415e+06; 3749.05; 21820.8; 9404.95
+3.84415e+06; 3946.37; 21911.7; 9404.95
+3.84415e+06; 4143.68; 22002.6; 9404.95
+3.84415e+06; 4341; 22093.5; 9404.95
+3.84415e+06; 4538.32; 22184.4; 9404.95
+3.84415e+06; 4735.64; 22275.4; 9404.95
+3.84415e+06; 4932.96; 22366.3; 9404.95
+3.84415e+06; 5130.28; 22457.2; 9404.95
+3.84415e+06; 5327.59; 22548.1; 9404.95
+3.84415e+06; 5524.91; 22639; 9404.95
+3.84415e+06; 5722.23; 22730; 9404.95
+3.84415e+06; 5919.55; 22820.9; 9404.95
+3.84415e+06; 6116.87; 22911.8; 9404.95
+3.84415e+06; 6314.19; 23002.7; 9404.95
+3.84415e+06; 6511.5; 23093.6; 9404.95
+3.84415e+06; 6708.82; 23184.5; 9404.95
+3.84415e+06; 6906.14; 23275.5; 9404.95
+3.84415e+06; 7103.46; 23366.4; 9404.95
+3.84415e+06; 7300.78; 23457.3; 9404.95
+3.84415e+06; 7498.1; 23548.2; 9404.95
+3.84415e+06; 7695.41; 23639.1; 9404.95
+3.84415e+06; 7892.73; 23730.1; 9404.95
+3.84415e+06; 8090.05; 23821; 9404.95
+3.84415e+06; 8287.37; 23911.9; 9404.95
+3.84415e+06; 8484.69; 24002.8; 9404.95
+3.84415e+06; 8682.01; 24093.7; 9404.95
+3.84415e+06; 8879.32; 24184.7; 9404.95
+3.84415e+06; 9076.64; 24275.6; 9404.95
+3.84415e+06; 9273.96; 24366.5; 9404.95
+3.84415e+06; 9471.28; 24457.4; 9404.95
+3.84415e+06; 9668.6; 24548.3; 9404.95
+3.84415e+06; 9865.92; 24639.2; 9404.95
+
+3.90153e+06; 0; 20391.8; 9545.33
+3.90153e+06; 183.224; 20477.5; 9545.33
+3.90153e+06; 366.448; 20563.2; 9545.33
+3.90153e+06; 549.672; 20648.8; 9545.33
+3.90153e+06; 732.897; 20734.5; 9545.33
+3.90153e+06; 916.121; 20820.2; 9545.33
+3.90153e+06; 1099.34; 20905.9; 9545.33
+3.90153e+06; 1282.57; 20991.6; 9545.33
+3.90153e+06; 1465.79; 21077.2; 9545.33
+3.90153e+06; 1649.02; 21162.9; 9545.33
+3.90153e+06; 1832.24; 21248.6; 9545.33
+3.90153e+06; 2015.47; 21334.3; 9545.33
+3.90153e+06; 2198.69; 21419.9; 9545.33
+3.90153e+06; 2381.91; 21505.6; 9545.33
+3.90153e+06; 2565.14; 21591.3; 9545.33
+3.90153e+06; 2748.36; 21677; 9545.33
+3.90153e+06; 2931.59; 21762.7; 9545.33
+3.90153e+06; 3114.81; 21848.3; 9545.33
+3.90153e+06; 3298.03; 21934; 9545.33
+3.90153e+06; 3481.26; 22019.7; 9545.33
+3.90153e+06; 3664.48; 22105.4; 9545.33
+3.90153e+06; 3847.71; 22191.1; 9545.33
+3.90153e+06; 4030.93; 22276.7; 9545.33
+3.90153e+06; 4214.16; 22362.4; 9545.33
+3.90153e+06; 4397.38; 22448.1; 9545.33
+3.90153e+06; 4580.6; 22533.8; 9545.33
+3.90153e+06; 4763.83; 22619.4; 9545.33
+3.90153e+06; 4947.05; 22705.1; 9545.33
+3.90153e+06; 5130.28; 22790.8; 9545.33
+3.90153e+06; 5313.5; 22876.5; 9545.33
+3.90153e+06; 5496.72; 22962.2; 9545.33
+3.90153e+06; 5679.95; 23047.8; 9545.33
+3.90153e+06; 5863.17; 23133.5; 9545.33
+3.90153e+06; 6046.4; 23219.2; 9545.33
+3.90153e+06; 6229.62; 23304.9; 9545.33
+3.90153e+06; 6412.85; 23390.5; 9545.33
+3.90153e+06; 6596.07; 23476.2; 9545.33
+3.90153e+06; 6779.29; 23561.9; 9545.33
+3.90153e+06; 6962.52; 23647.6; 9545.33
+3.90153e+06; 7145.74; 23733.3; 9545.33
+3.90153e+06; 7328.97; 23818.9; 9545.33
+3.90153e+06; 7512.19; 23904.6; 9545.33
+3.90153e+06; 7695.41; 23990.3; 9545.33
+3.90153e+06; 7878.64; 24076; 9545.33
+3.90153e+06; 8061.86; 24161.7; 9545.33
+3.90153e+06; 8245.09; 24247.3; 9545.33
+3.90153e+06; 8428.31; 24333; 9545.33
+3.90153e+06; 8611.54; 24418.7; 9545.33
+3.90153e+06; 8794.76; 24504.4; 9545.33
+3.90153e+06; 8977.98; 24590; 9545.33
+3.90153e+06; 9161.21; 24675.7; 9545.33
+
+3.95891e+06; 0; 20691.6; 9685.7
+3.95891e+06; 169.13; 20771.8; 9685.7
+3.95891e+06; 338.26; 20852.1; 9685.7
+3.95891e+06; 507.39; 20932.3; 9685.7
+3.95891e+06; 676.52; 21012.6; 9685.7
+3.95891e+06; 845.65; 21092.8; 9685.7
+3.95891e+06; 1014.78; 21173.1; 9685.7
+3.95891e+06; 1183.91; 21253.3; 9685.7
+3.95891e+06; 1353.04; 21333.6; 9685.7
+3.95891e+06; 1522.17; 21413.8; 9685.7
+3.95891e+06; 1691.3; 21494.1; 9685.7
+3.95891e+06; 1860.43; 21574.3; 9685.7
+3.95891e+06; 2029.56; 21654.6; 9685.7
+3.95891e+06; 2198.69; 21734.8; 9685.7
+3.95891e+06; 2367.82; 21815.1; 9685.7
+3.95891e+06; 2536.95; 21895.3; 9685.7
+3.95891e+06; 2706.08; 21975.6; 9685.7
+3.95891e+06; 2875.21; 22055.8; 9685.7
+3.95891e+06; 3044.34; 22136.1; 9685.7
+3.95891e+06; 3213.47; 22216.3; 9685.7
+3.95891e+06; 3382.6; 22296.6; 9685.7
+3.95891e+06; 3551.73; 22376.8; 9685.7
+3.95891e+06; 3720.86; 22457.1; 9685.7
+3.95891e+06; 3889.99; 22537.3; 9685.7
+3.95891e+06; 4059.12; 22617.6; 9685.7
+3.95891e+06; 4228.25; 22697.8; 9685.7
+3.95891e+06; 4397.38; 22778.1; 9685.7
+3.95891e+06; 4566.51; 22858.3; 9685.7
+3.95891e+06; 4735.64; 22938.6; 9685.7
+3.95891e+06; 4904.77; 23018.8; 9685.7
+3.95891e+06; 5073.9; 23099.1; 9685.7
+3.95891e+06; 5243.03; 23179.3; 9685.7
+3.95891e+06; 5412.16; 23259.6; 9685.7
+3.95891e+06; 5581.29; 23339.8; 9685.7
+3.95891e+06; 5750.42; 23420.1; 9685.7
+3.95891e+06; 5919.55; 23500.3; 9685.7
+3.95891e+06; 6088.68; 23580.6; 9685.7
+3.95891e+06; 6257.81; 23660.8; 9685.7
+3.95891e+06; 6426.94; 23741.1; 9685.7
+3.95891e+06; 6596.07; 23821.3; 9685.7
+3.95891e+06; 6765.2; 23901.6; 9685.7
+3.95891e+06; 6934.33; 23981.8; 9685.7
+3.95891e+06; 7103.46; 24062.1; 9685.7
+3.95891e+06; 7272.59; 24142.3; 9685.7
+3.95891e+06; 7441.72; 24222.6; 9685.7
+3.95891e+06; 7610.85; 24302.8; 9685.7
+3.95891e+06; 7779.98; 24383.1; 9685.7
+3.95891e+06; 7949.11; 24463.3; 9685.7
+3.95891e+06; 8118.24; 24543.6; 9685.7
+3.95891e+06; 8287.37; 24623.8; 9685.7
+3.95891e+06; 8456.5; 24704.1; 9685.7
+
+4.01628e+06; 0; 20992.7; 9826.08
+4.01628e+06; 155.036; 21067.3; 9826.08
+4.01628e+06; 310.072; 21141.9; 9826.08
+4.01628e+06; 465.107; 21216.6; 9826.08
+4.01628e+06; 620.143; 21291.2; 9826.08
+4.01628e+06; 775.179; 21365.8; 9826.08
+4.01628e+06; 930.215; 21440.5; 9826.08
+4.01628e+06; 1085.25; 21515.1; 9826.08
+4.01628e+06; 1240.29; 21589.7; 9826.08
+4.01628e+06; 1395.32; 21664.4; 9826.08
+4.01628e+06; 1550.36; 21739; 9826.08
+4.01628e+06; 1705.39; 21813.6; 9826.08
+4.01628e+06; 1860.43; 21888.3; 9826.08
+4.01628e+06; 2015.47; 21962.9; 9826.08
+4.01628e+06; 2170.5; 22037.5; 9826.08
+4.01628e+06; 2325.54; 22112.2; 9826.08
+4.01628e+06; 2480.57; 22186.8; 9826.08
+4.01628e+06; 2635.61; 22261.4; 9826.08
+4.01628e+06; 2790.64; 22336.1; 9826.08
+4.01628e+06; 2945.68; 22410.7; 9826.08
+4.01628e+06; 3100.72; 22485.3; 9826.08
+4.01628e+06; 3255.75; 22560; 9826.08
+4.01628e+06; 3410.79; 22634.6; 9826.08
+4.01628e+06; 3565.82; 22709.2; 9826.08
+4.01628e+06; 3720.86; 22783.9; 9826.08
+4.01628e+06; 3875.9; 22858.5; 9826.08
+4.01628e+06; 4030.93; 22933.1; 9826.08
+4.01628e+06; 4185.97; 23007.8; 9826.08
+4.01628e+06; 4341; 23082.4; 9826.08
+4.01628e+06; 4496.04; 23157; 9826.08
+4.01628e+06; 4651.07; 23231.7; 9826.08
+4.01628e+06; 4806.11; 23306.3; 9826.08
+4.01628e+06; 4961.15; 23380.9; 9826.08
+4.01628e+06; 5116.18; 23455.6; 9826.08
+4.01628e+06; 5271.22; 23530.2; 9826.08
+4.01628e+06; 5426.25; 23604.8; 9826.08
+4.01628e+06; 5581.29; 23679.5; 9826.08
+4.01628e+06; 5736.33; 23754.1; 9826.08
+4.01628e+06; 5891.36; 23828.7; 9826.08
+4.01628e+06; 6046.4; 23903.3; 9826.08
+4.01628e+06; 6201.43; 23978; 9826.08
+4.01628e+06; 6356.47; 24052.6; 9826.08
+4.01628e+06; 6511.5; 24127.2; 9826.08
+4.01628e+06; 6666.54; 24201.9; 9826.08
+4.01628e+06; 6821.58; 24276.5; 9826.08
+4.01628e+06; 6976.61; 24351.1; 9826.08
+4.01628e+06; 7131.65; 24425.8; 9826.08
+4.01628e+06; 7286.68; 24500.4; 9826.08
+4.01628e+06; 7441.72; 24575; 9826.08
+4.01628e+06; 7596.76; 24649.7; 9826.08
+4.01628e+06; 7751.79; 24724.3; 9826.08
+
+4.07366e+06; 0; 21295; 9966.46
+4.07366e+06; 140.942; 21363.9; 9966.46
+4.07366e+06; 281.883; 21432.7; 9966.46
+4.07366e+06; 422.825; 21501.5; 9966.46
+4.07366e+06; 563.767; 21570.3; 9966.46
+4.07366e+06; 704.708; 21639.2; 9966.46
+4.07366e+06; 845.65; 21708; 9966.46
+4.07366e+06; 986.592; 21776.8; 9966.46
+4.07366e+06; 1127.53; 21845.6; 9966.46
+4.07366e+06; 1268.47; 21914.5; 9966.46
+4.07366e+06; 1409.42; 21983.3; 9966.46
+4.07366e+06; 1550.36; 22052.1; 9966.46
+4.07366e+06; 1691.3; 22120.9; 9966.46
+4.07366e+06; 1832.24; 22189.8; 9966.46
+4.07366e+06; 1973.18; 22258.6; 9966.46
+4.07366e+06; 2114.12; 22327.4; 9966.46
+4.07366e+06; 2255.07; 22396.2; 9966.46
+4.07366e+06; 2396.01; 22465.1; 9966.46
+4.07366e+06; 2536.95; 22533.9; 9966.46
+4.07366e+06; 2677.89; 22602.7; 9966.46
+4.07366e+06; 2818.83; 22671.5; 9966.46
+4.07366e+06; 2959.77; 22740.4; 9966.46
+4.07366e+06; 3100.72; 22809.2; 9966.46
+4.07366e+06; 3241.66; 22878; 9966.46
+4.07366e+06; 3382.6; 22946.8; 9966.46
+4.07366e+06; 3523.54; 23015.7; 9966.46
+4.07366e+06; 3664.48; 23084.5; 9966.46
+4.07366e+06; 3805.42; 23153.3; 9966.46
+4.07366e+06; 3946.37; 23222.1; 9966.46
+4.07366e+06; 4087.31; 23291; 9966.46
+4.07366e+06; 4228.25; 23359.8; 9966.46
+4.07366e+06; 4369.19; 23428.6; 9966.46
+4.07366e+06; 4510.13; 23497.4; 9966.46
+4.07366e+06; 4651.07; 23566.3; 9966.46
+4.07366e+06; 4792.02; 23635.1; 9966.46
+4.07366e+06; 4932.96; 23703.9; 9966.46
+4.07366e+06; 5073.9; 23772.8; 9966.46
+4.07366e+06; 5214.84; 23841.6; 9966.46
+4.07366e+06; 5355.78; 23910.4; 9966.46
+4.07366e+06; 5496.72; 23979.2; 9966.46
+4.07366e+06; 5637.67; 24048.1; 9966.46
+4.07366e+06; 5778.61; 24116.9; 9966.46
+4.07366e+06; 5919.55; 24185.7; 9966.46
+4.07366e+06; 6060.49; 24254.5; 9966.46
+4.07366e+06; 6201.43; 24323.4; 9966.46
+4.07366e+06; 6342.37; 24392.2; 9966.46
+4.07366e+06; 6483.32; 24461; 9966.46
+4.07366e+06; 6624.26; 24529.8; 9966.46
+4.07366e+06; 6765.2; 24598.7; 9966.46
+4.07366e+06; 6906.14; 24667.5; 9966.46
+4.07366e+06; 7047.08; 24736.3; 9966.46
+
+4.13104e+06; 0; 21598.7; 10106.8
+4.13104e+06; 126.847; 21661.5; 10106.8
+4.13104e+06; 253.695; 21724.4; 10106.8
+4.13104e+06; 380.542; 21787.2; 10106.8
+4.13104e+06; 507.39; 21850; 10106.8
+4.13104e+06; 634.237; 21912.8; 10106.8
+4.13104e+06; 761.085; 21975.7; 10106.8
+4.13104e+06; 887.932; 22038.5; 10106.8
+4.13104e+06; 1014.78; 22101.3; 10106.8
+4.13104e+06; 1141.63; 22164.1; 10106.8
+4.13104e+06; 1268.47; 22227; 10106.8
+4.13104e+06; 1395.32; 22289.8; 10106.8
+4.13104e+06; 1522.17; 22352.6; 10106.8
+4.13104e+06; 1649.02; 22415.5; 10106.8
+4.13104e+06; 1775.86; 22478.3; 10106.8
+4.13104e+06; 1902.71; 22541.1; 10106.8
+4.13104e+06; 2029.56; 22603.9; 10106.8
+4.13104e+06; 2156.41; 22666.8; 10106.8
+4.13104e+06; 2283.25; 22729.6; 10106.8
+4.13104e+06; 2410.1; 22792.4; 10106.8
+4.13104e+06; 2536.95; 22855.2; 10106.8
+4.13104e+06; 2663.8; 22918.1; 10106.8
+4.13104e+06; 2790.64; 22980.9; 10106.8
+4.13104e+06; 2917.49; 23043.7; 10106.8
+4.13104e+06; 3044.34; 23106.5; 10106.8
+4.13104e+06; 3171.19; 23169.4; 10106.8
+4.13104e+06; 3298.03; 23232.2; 10106.8
+4.13104e+06; 3424.88; 23295; 10106.8
+4.13104e+06; 3551.73; 23357.8; 10106.8
+4.13104e+06; 3678.58; 23420.7; 10106.8
+4.13104e+06; 3805.42; 23483.5; 10106.8
+4.13104e+06; 3932.27; 23546.3; 10106.8
+4.13104e+06; 4059.12; 23609.2; 10106.8
+4.13104e+06; 4185.97; 23672; 10106.8
+4.13104e+06; 4312.81; 23734.8; 10106.8
+4.13104e+06; 4439.66; 23797.6; 10106.8
+4.13104e+06; 4566.51; 23860.5; 10106.8
+4.13104e+06; 4693.36; 23923.3; 10106.8
+4.13104e+06; 4820.2; 23986.1; 10106.8
+4.13104e+06; 4947.05; 24048.9; 10106.8
+4.13104e+06; 5073.9; 24111.8; 10106.8
+4.13104e+06; 5200.75; 24174.6; 10106.8
+4.13104e+06; 5327.59; 24237.4; 10106.8
+4.13104e+06; 5454.44; 24300.2; 10106.8
+4.13104e+06; 5581.29; 24363.1; 10106.8
+4.13104e+06; 5708.14; 24425.9; 10106.8
+4.13104e+06; 5834.98; 24488.7; 10106.8
+4.13104e+06; 5961.83; 24551.6; 10106.8
+4.13104e+06; 6088.68; 24614.4; 10106.8
+4.13104e+06; 6215.53; 24677.2; 10106.8
+4.13104e+06; 6342.37; 24740; 10106.8
+
+4.18842e+06; 0; 21903.7; 10247.2
+4.18842e+06; 112.753; 21960.3; 10247.2
+4.18842e+06; 225.507; 22017; 10247.2
+4.18842e+06; 338.26; 22073.6; 10247.2
+4.18842e+06; 451.013; 22130.2; 10247.2
+4.18842e+06; 563.767; 22186.9; 10247.2
+4.18842e+06; 676.52; 22243.5; 10247.2
+4.18842e+06; 789.273; 22300.1; 10247.2
+4.18842e+06; 902.027; 22356.8; 10247.2
+4.18842e+06; 1014.78; 22413.4; 10247.2
+4.18842e+06; 1127.53; 22470; 10247.2
+4.18842e+06; 1240.29; 22526.7; 10247.2
+4.18842e+06; 1353.04; 22583.3; 10247.2
+4.18842e+06; 1465.79; 22639.9; 10247.2
+4.18842e+06; 1578.55; 22696.6; 10247.2
+4.18842e+06; 1691.3; 22753.2; 10247.2
+4.18842e+06; 1804.05; 22809.9; 10247.2
+4.18842e+06; 1916.81; 22866.5; 10247.2
+4.18842e+06; 2029.56; 22923.1; 10247.2
+4.18842e+06; 2142.31; 22979.8; 10247.2
+4.18842e+06; 2255.07; 23036.4; 10247.2
+4.18842e+06; 2367.82; 23093; 10247.2
+4.18842e+06; 2480.57; 23149.7; 10247.2
+4.18842e+06; 2593.33; 23206.3; 10247.2
+4.18842e+06; 2706.08; 23262.9; 10247.2
+4.18842e+06; 2818.83; 23319.6; 10247.2
+4.18842e+06; 2931.59; 23376.2; 10247.2
+4.18842e+06; 3044.34; 23432.8; 10247.2
+4.18842e+06; 3157.09; 23489.5; 10247.2
+4.18842e+06; 3269.85; 23546.1; 10247.2
+4.18842e+06; 3382.6; 23602.7; 10247.2
+4.18842e+06; 3495.35; 23659.4; 10247.2
+4.18842e+06; 3608.11; 23716; 10247.2
+4.18842e+06; 3720.86; 23772.6; 10247.2
+4.18842e+06; 3833.61; 23829.3; 10247.2
+4.18842e+06; 3946.37; 23885.9; 10247.2
+4.18842e+06; 4059.12; 23942.5; 10247.2
+4.18842e+06; 4171.87; 23999.2; 10247.2
+4.18842e+06; 4284.63; 24055.8; 10247.2
+4.18842e+06; 4397.38; 24112.4; 10247.2
+4.18842e+06; 4510.13; 24169.1; 10247.2
+4.18842e+06; 4622.89; 24225.7; 10247.2
+4.18842e+06; 4735.64; 24282.3; 10247.2
+4.18842e+06; 4848.39; 24339; 10247.2
+4.18842e+06; 4961.15; 24395.6; 10247.2
+4.18842e+06; 5073.9; 24452.2; 10247.2
+4.18842e+06; 5186.65; 24508.9; 10247.2
+4.18842e+06; 5299.41; 24565.5; 10247.2
+4.18842e+06; 5412.16; 24622.1; 10247.2
+4.18842e+06; 5524.91; 24678.8; 10247.2
+4.18842e+06; 5637.67; 24735.4; 10247.2
+
+4.24579e+06; 0; 22210; 10387.6
+4.24579e+06; 98.6592; 22260.3; 10387.6
+4.24579e+06; 197.318; 22310.5; 10387.6
+4.24579e+06; 295.977; 22360.8; 10387.6
+4.24579e+06; 394.637; 22411; 10387.6
+4.24579e+06; 493.296; 22461.3; 10387.6
+4.24579e+06; 591.955; 22511.5; 10387.6
+4.24579e+06; 690.614; 22561.8; 10387.6
+4.24579e+06; 789.273; 22612; 10387.6
+4.24579e+06; 887.932; 22662.2; 10387.6
+4.24579e+06; 986.592; 22712.5; 10387.6
+4.24579e+06; 1085.25; 22762.7; 10387.6
+4.24579e+06; 1183.91; 22813; 10387.6
+4.24579e+06; 1282.57; 22863.2; 10387.6
+4.24579e+06; 1381.23; 22913.5; 10387.6
+4.24579e+06; 1479.89; 22963.7; 10387.6
+4.24579e+06; 1578.55; 23014; 10387.6
+4.24579e+06; 1677.21; 23064.2; 10387.6
+4.24579e+06; 1775.86; 23114.5; 10387.6
+4.24579e+06; 1874.52; 23164.7; 10387.6
+4.24579e+06; 1973.18; 23215; 10387.6
+4.24579e+06; 2071.84; 23265.2; 10387.6
+4.24579e+06; 2170.5; 23315.5; 10387.6
+4.24579e+06; 2269.16; 23365.7; 10387.6
+4.24579e+06; 2367.82; 23416; 10387.6
+4.24579e+06; 2466.48; 23466.2; 10387.6
+4.24579e+06; 2565.14; 23516.5; 10387.6
+4.24579e+06; 2663.8; 23566.7; 10387.6
+4.24579e+06; 2762.46; 23617; 10387.6
+4.24579e+06; 2861.12; 23667.2; 10387.6
+4.24579e+06; 2959.77; 23717.5; 10387.6
+4.24579e+06; 3058.43; 23767.7; 10387.6
+4.24579e+06; 3157.09; 23817.9; 10387.6
+4.24579e+06; 3255.75; 23868.2; 10387.6
+4.24579e+06; 3354.41; 23918.4; 10387.6
+4.24579e+06; 3453.07; 23968.7; 10387.6
+4.24579e+06; 3551.73; 24018.9; 10387.6
+4.24579e+06; 3650.39; 24069.2; 10387.6
+4.24579e+06; 3749.05; 24119.4; 10387.6
+4.24579e+06; 3847.71; 24169.7; 10387.6
+4.24579e+06; 3946.37; 24219.9; 10387.6
+4.24579e+06; 4045.03; 24270.2; 10387.6
+4.24579e+06; 4143.68; 24320.4; 10387.6
+4.24579e+06; 4242.34; 24370.7; 10387.6
+4.24579e+06; 4341; 24420.9; 10387.6
+4.24579e+06; 4439.66; 24471.2; 10387.6
+4.24579e+06; 4538.32; 24521.4; 10387.6
+4.24579e+06; 4636.98; 24571.7; 10387.6
+4.24579e+06; 4735.64; 24621.9; 10387.6
+4.24579e+06; 4834.3; 24672.2; 10387.6
+4.24579e+06; 4932.96; 24722.4; 10387.6
+
+4.30317e+06; 0; 22517.6; 10528
+4.30317e+06; 84.565; 22561.3; 10528
+4.30317e+06; 169.13; 22605; 10528
+4.30317e+06; 253.695; 22648.6; 10528
+4.30317e+06; 338.26; 22692.3; 10528
+4.30317e+06; 422.825; 22736; 10528
+4.30317e+06; 507.39; 22779.6; 10528
+4.30317e+06; 591.955; 22823.3; 10528
+4.30317e+06; 676.52; 22867; 10528
+4.30317e+06; 761.085; 22910.6; 10528
+4.30317e+06; 845.65; 22954.3; 10528
+4.30317e+06; 930.215; 22998; 10528
+4.30317e+06; 1014.78; 23041.6; 10528
+4.30317e+06; 1099.34; 23085.3; 10528
+4.30317e+06; 1183.91; 23129; 10528
+4.30317e+06; 1268.47; 23172.6; 10528
+4.30317e+06; 1353.04; 23216.3; 10528
+4.30317e+06; 1437.6; 23260; 10528
+4.30317e+06; 1522.17; 23303.6; 10528
+4.30317e+06; 1606.73; 23347.3; 10528
+4.30317e+06; 1691.3; 23391; 10528
+4.30317e+06; 1775.86; 23434.6; 10528
+4.30317e+06; 1860.43; 23478.3; 10528
+4.30317e+06; 1944.99; 23522; 10528
+4.30317e+06; 2029.56; 23565.6; 10528
+4.30317e+06; 2114.12; 23609.3; 10528
+4.30317e+06; 2198.69; 23653; 10528
+4.30317e+06; 2283.25; 23696.6; 10528
+4.30317e+06; 2367.82; 23740.3; 10528
+4.30317e+06; 2452.38; 23784; 10528
+4.30317e+06; 2536.95; 23827.6; 10528
+4.30317e+06; 2621.51; 23871.3; 10528
+4.30317e+06; 2706.08; 23915; 10528
+4.30317e+06; 2790.64; 23958.6; 10528
+4.30317e+06; 2875.21; 24002.3; 10528
+4.30317e+06; 2959.77; 24046; 10528
+4.30317e+06; 3044.34; 24089.6; 10528
+4.30317e+06; 3128.9; 24133.3; 10528
+4.30317e+06; 3213.47; 24177; 10528
+4.30317e+06; 3298.03; 24220.6; 10528
+4.30317e+06; 3382.6; 24264.3; 10528
+4.30317e+06; 3467.16; 24308; 10528
+4.30317e+06; 3551.73; 24351.6; 10528
+4.30317e+06; 3636.29; 24395.3; 10528
+4.30317e+06; 3720.86; 24439; 10528
+4.30317e+06; 3805.42; 24482.6; 10528
+4.30317e+06; 3889.99; 24526.3; 10528
+4.30317e+06; 3974.55; 24570; 10528
+4.30317e+06; 4059.12; 24613.6; 10528
+4.30317e+06; 4143.68; 24657.3; 10528
+4.30317e+06; 4228.25; 24701; 10528
+
+4.36055e+06; 0; 22826.6; 10668.3
+4.36055e+06; 70.4708; 22863.5; 10668.3
+4.36055e+06; 140.942; 22900.4; 10668.3
+4.36055e+06; 211.412; 22937.3; 10668.3
+4.36055e+06; 281.883; 22974.2; 10668.3
+4.36055e+06; 352.354; 23011.1; 10668.3
+4.36055e+06; 422.825; 23047.9; 10668.3
+4.36055e+06; 493.296; 23084.8; 10668.3
+4.36055e+06; 563.767; 23121.7; 10668.3
+4.36055e+06; 634.237; 23158.6; 10668.3
+4.36055e+06; 704.708; 23195.5; 10668.3
+4.36055e+06; 775.179; 23232.4; 10668.3
+4.36055e+06; 845.65; 23269.3; 10668.3
+4.36055e+06; 916.121; 23306.2; 10668.3
+4.36055e+06; 986.592; 23343; 10668.3
+4.36055e+06; 1057.06; 23379.9; 10668.3
+4.36055e+06; 1127.53; 23416.8; 10668.3
+4.36055e+06; 1198; 23453.7; 10668.3
+4.36055e+06; 1268.47; 23490.6; 10668.3
+4.36055e+06; 1338.95; 23527.5; 10668.3
+4.36055e+06; 1409.42; 23564.4; 10668.3
+4.36055e+06; 1479.89; 23601.3; 10668.3
+4.36055e+06; 1550.36; 23638.1; 10668.3
+4.36055e+06; 1620.83; 23675; 10668.3
+4.36055e+06; 1691.3; 23711.9; 10668.3
+4.36055e+06; 1761.77; 23748.8; 10668.3
+4.36055e+06; 1832.24; 23785.7; 10668.3
+4.36055e+06; 1902.71; 23822.6; 10668.3
+4.36055e+06; 1973.18; 23859.5; 10668.3
+4.36055e+06; 2043.65; 23896.4; 10668.3
+4.36055e+06; 2114.12; 23933.2; 10668.3
+4.36055e+06; 2184.6; 23970.1; 10668.3
+4.36055e+06; 2255.07; 24007; 10668.3
+4.36055e+06; 2325.54; 24043.9; 10668.3
+4.36055e+06; 2396.01; 24080.8; 10668.3
+4.36055e+06; 2466.48; 24117.7; 10668.3
+4.36055e+06; 2536.95; 24154.6; 10668.3
+4.36055e+06; 2607.42; 24191.5; 10668.3
+4.36055e+06; 2677.89; 24228.3; 10668.3
+4.36055e+06; 2748.36; 24265.2; 10668.3
+4.36055e+06; 2818.83; 24302.1; 10668.3
+4.36055e+06; 2889.3; 24339; 10668.3
+4.36055e+06; 2959.77; 24375.9; 10668.3
+4.36055e+06; 3030.25; 24412.8; 10668.3
+4.36055e+06; 3100.72; 24449.7; 10668.3
+4.36055e+06; 3171.19; 24486.6; 10668.3
+4.36055e+06; 3241.66; 24523.5; 10668.3
+4.36055e+06; 3312.13; 24560.3; 10668.3
+4.36055e+06; 3382.6; 24597.2; 10668.3
+4.36055e+06; 3453.07; 24634.1; 10668.3
+4.36055e+06; 3523.54; 24671; 10668.3
+
+4.41793e+06; 0; 23136.9; 10808.7
+4.41793e+06; 56.3767; 23166.8; 10808.7
+4.41793e+06; 112.753; 23196.7; 10808.7
+4.41793e+06; 169.13; 23226.6; 10808.7
+4.41793e+06; 225.507; 23256.6; 10808.7
+4.41793e+06; 281.883; 23286.5; 10808.7
+4.41793e+06; 338.26; 23316.4; 10808.7
+4.41793e+06; 394.637; 23346.3; 10808.7
+4.41793e+06; 451.013; 23376.2; 10808.7
+4.41793e+06; 507.39; 23406.1; 10808.7
+4.41793e+06; 563.767; 23436; 10808.7
+4.41793e+06; 620.143; 23465.9; 10808.7
+4.41793e+06; 676.52; 23495.8; 10808.7
+4.41793e+06; 732.897; 23525.8; 10808.7
+4.41793e+06; 789.273; 23555.7; 10808.7
+4.41793e+06; 845.65; 23585.6; 10808.7
+4.41793e+06; 902.027; 23615.5; 10808.7
+4.41793e+06; 958.403; 23645.4; 10808.7
+4.41793e+06; 1014.78; 23675.3; 10808.7
+4.41793e+06; 1071.16; 23705.2; 10808.7
+4.41793e+06; 1127.53; 23735.1; 10808.7
+4.41793e+06; 1183.91; 23765; 10808.7
+4.41793e+06; 1240.29; 23795; 10808.7
+4.41793e+06; 1296.66; 23824.9; 10808.7
+4.41793e+06; 1353.04; 23854.8; 10808.7
+4.41793e+06; 1409.42; 23884.7; 10808.7
+4.41793e+06; 1465.79; 23914.6; 10808.7
+4.41793e+06; 1522.17; 23944.5; 10808.7
+4.41793e+06; 1578.55; 23974.4; 10808.7
+4.41793e+06; 1634.92; 24004.3; 10808.7
+4.41793e+06; 1691.3; 24034.2; 10808.7
+4.41793e+06; 1747.68; 24064.2; 10808.7
+4.41793e+06; 1804.05; 24094.1; 10808.7
+4.41793e+06; 1860.43; 24124; 10808.7
+4.41793e+06; 1916.81; 24153.9; 10808.7
+4.41793e+06; 1973.18; 24183.8; 10808.7
+4.41793e+06; 2029.56; 24213.7; 10808.7
+4.41793e+06; 2085.94; 24243.6; 10808.7
+4.41793e+06; 2142.31; 24273.5; 10808.7
+4.41793e+06; 2198.69; 24303.5; 10808.7
+4.41793e+06; 2255.07; 24333.4; 10808.7
+4.41793e+06; 2311.44; 24363.3; 10808.7
+4.41793e+06; 2367.82; 24393.2; 10808.7
+4.41793e+06; 2424.2; 24423.1; 10808.7
+4.41793e+06; 2480.57; 24453; 10808.7
+4.41793e+06; 2536.95; 24482.9; 10808.7
+4.41793e+06; 2593.33; 24512.8; 10808.7
+4.41793e+06; 2649.7; 24542.7; 10808.7
+4.41793e+06; 2706.08; 24572.7; 10808.7
+4.41793e+06; 2762.46; 24602.6; 10808.7
+4.41793e+06; 2818.83; 24632.5; 10808.7
+
+4.4753e+06; 0; 23448.5; 10949.1
+4.4753e+06; 42.2825; 23471.3; 10949.1
+4.4753e+06; 84.565; 23494; 10949.1
+4.4753e+06; 126.847; 23516.7; 10949.1
+4.4753e+06; 169.13; 23539.5; 10949.1
+4.4753e+06; 211.412; 23562.2; 10949.1
+4.4753e+06; 253.695; 23585; 10949.1
+4.4753e+06; 295.977; 23607.7; 10949.1
+4.4753e+06; 338.26; 23630.4; 10949.1
+4.4753e+06; 380.542; 23653.2; 10949.1
+4.4753e+06; 422.825; 23675.9; 10949.1
+4.4753e+06; 465.107; 23698.6; 10949.1
+4.4753e+06; 507.39; 23721.4; 10949.1
+4.4753e+06; 549.672; 23744.1; 10949.1
+4.4753e+06; 591.955; 23766.8; 10949.1
+4.4753e+06; 634.237; 23789.6; 10949.1
+4.4753e+06; 676.52; 23812.3; 10949.1
+4.4753e+06; 718.802; 23835; 10949.1
+4.4753e+06; 761.085; 23857.8; 10949.1
+4.4753e+06; 803.367; 23880.5; 10949.1
+4.4753e+06; 845.65; 23903.3; 10949.1
+4.4753e+06; 887.932; 23926; 10949.1
+4.4753e+06; 930.215; 23948.7; 10949.1
+4.4753e+06; 972.497; 23971.5; 10949.1
+4.4753e+06; 1014.78; 23994.2; 10949.1
+4.4753e+06; 1057.06; 24016.9; 10949.1
+4.4753e+06; 1099.34; 24039.7; 10949.1
+4.4753e+06; 1141.63; 24062.4; 10949.1
+4.4753e+06; 1183.91; 24085.1; 10949.1
+4.4753e+06; 1226.19; 24107.9; 10949.1
+4.4753e+06; 1268.47; 24130.6; 10949.1
+4.4753e+06; 1310.76; 24153.3; 10949.1
+4.4753e+06; 1353.04; 24176.1; 10949.1
+4.4753e+06; 1395.32; 24198.8; 10949.1
+4.4753e+06; 1437.6; 24221.6; 10949.1
+4.4753e+06; 1479.89; 24244.3; 10949.1
+4.4753e+06; 1522.17; 24267; 10949.1
+4.4753e+06; 1564.45; 24289.8; 10949.1
+4.4753e+06; 1606.73; 24312.5; 10949.1
+4.4753e+06; 1649.02; 24335.2; 10949.1
+4.4753e+06; 1691.3; 24358; 10949.1
+4.4753e+06; 1733.58; 24380.7; 10949.1
+4.4753e+06; 1775.86; 24403.4; 10949.1
+4.4753e+06; 1818.15; 24426.2; 10949.1
+4.4753e+06; 1860.43; 24448.9; 10949.1
+4.4753e+06; 1902.71; 24471.6; 10949.1
+4.4753e+06; 1944.99; 24494.4; 10949.1
+4.4753e+06; 1987.28; 24517.1; 10949.1
+4.4753e+06; 2029.56; 24539.9; 10949.1
+4.4753e+06; 2071.84; 24562.6; 10949.1
+4.4753e+06; 2114.12; 24585.3; 10949.1
+
+4.53268e+06; 0; 23761.5; 11089.5
+4.53268e+06; 28.1883; 23776.9; 11089.5
+4.53268e+06; 56.3767; 23792.2; 11089.5
+4.53268e+06; 84.565; 23807.6; 11089.5
+4.53268e+06; 112.753; 23823; 11089.5
+4.53268e+06; 140.942; 23838.3; 11089.5
+4.53268e+06; 169.13; 23853.7; 11089.5
+4.53268e+06; 197.318; 23869; 11089.5
+4.53268e+06; 225.507; 23884.4; 11089.5
+4.53268e+06; 253.695; 23899.8; 11089.5
+4.53268e+06; 281.883; 23915.1; 11089.5
+4.53268e+06; 310.072; 23930.5; 11089.5
+4.53268e+06; 338.26; 23945.8; 11089.5
+4.53268e+06; 366.448; 23961.2; 11089.5
+4.53268e+06; 394.637; 23976.6; 11089.5
+4.53268e+06; 422.825; 23991.9; 11089.5
+4.53268e+06; 451.013; 24007.3; 11089.5
+4.53268e+06; 479.202; 24022.6; 11089.5
+4.53268e+06; 507.39; 24038; 11089.5
+4.53268e+06; 535.578; 24053.4; 11089.5
+4.53268e+06; 563.767; 24068.7; 11089.5
+4.53268e+06; 591.955; 24084.1; 11089.5
+4.53268e+06; 620.143; 24099.4; 11089.5
+4.53268e+06; 648.332; 24114.8; 11089.5
+4.53268e+06; 676.52; 24130.1; 11089.5
+4.53268e+06; 704.708; 24145.5; 11089.5
+4.53268e+06; 732.897; 24160.9; 11089.5
+4.53268e+06; 761.085; 24176.2; 11089.5
+4.53268e+06; 789.273; 24191.6; 11089.5
+4.53268e+06; 817.462; 24206.9; 11089.5
+4.53268e+06; 845.65; 24222.3; 11089.5
+4.53268e+06; 873.838; 24237.7; 11089.5
+4.53268e+06; 902.027; 24253; 11089.5
+4.53268e+06; 930.215; 24268.4; 11089.5
+4.53268e+06; 958.403; 24283.7; 11089.5
+4.53268e+06; 986.592; 24299.1; 11089.5
+4.53268e+06; 1014.78; 24314.5; 11089.5
+4.53268e+06; 1042.97; 24329.8; 11089.5
+4.53268e+06; 1071.16; 24345.2; 11089.5
+4.53268e+06; 1099.34; 24360.5; 11089.5
+4.53268e+06; 1127.53; 24375.9; 11089.5
+4.53268e+06; 1155.72; 24391.3; 11089.5
+4.53268e+06; 1183.91; 24406.6; 11089.5
+4.53268e+06; 1212.1; 24422; 11089.5
+4.53268e+06; 1240.29; 24437.3; 11089.5
+4.53268e+06; 1268.47; 24452.7; 11089.5
+4.53268e+06; 1296.66; 24468.1; 11089.5
+4.53268e+06; 1324.85; 24483.4; 11089.5
+4.53268e+06; 1353.04; 24498.8; 11089.5
+4.53268e+06; 1381.23; 24514.1; 11089.5
+4.53268e+06; 1409.42; 24529.5; 11089.5
+
+4.59006e+06; 0; 24075.9; 11229.9
+4.59006e+06; 14.0942; 24083.6; 11229.9
+4.59006e+06; 28.1883; 24091.4; 11229.9
+4.59006e+06; 42.2825; 24099.2; 11229.9
+4.59006e+06; 56.3767; 24107; 11229.9
+4.59006e+06; 70.4708; 24114.8; 11229.9
+4.59006e+06; 84.565; 24122.5; 11229.9
+4.59006e+06; 98.6592; 24130.3; 11229.9
+4.59006e+06; 112.753; 24138.1; 11229.9
+4.59006e+06; 126.847; 24145.9; 11229.9
+4.59006e+06; 140.942; 24153.7; 11229.9
+4.59006e+06; 155.036; 24161.4; 11229.9
+4.59006e+06; 169.13; 24169.2; 11229.9
+4.59006e+06; 183.224; 24177; 11229.9
+4.59006e+06; 197.318; 24184.8; 11229.9
+4.59006e+06; 211.412; 24192.6; 11229.9
+4.59006e+06; 225.507; 24200.4; 11229.9
+4.59006e+06; 239.601; 24208.1; 11229.9
+4.59006e+06; 253.695; 24215.9; 11229.9
+4.59006e+06; 267.789; 24223.7; 11229.9
+4.59006e+06; 281.883; 24231.5; 11229.9
+4.59006e+06; 295.977; 24239.3; 11229.9
+4.59006e+06; 310.072; 24247; 11229.9
+4.59006e+06; 324.166; 24254.8; 11229.9
+4.59006e+06; 338.26; 24262.6; 11229.9
+4.59006e+06; 352.354; 24270.4; 11229.9
+4.59006e+06; 366.448; 24278.2; 11229.9
+4.59006e+06; 380.542; 24285.9; 11229.9
+4.59006e+06; 394.637; 24293.7; 11229.9
+4.59006e+06; 408.731; 24301.5; 11229.9
+4.59006e+06; 422.825; 24309.3; 11229.9
+4.59006e+06; 436.919; 24317.1; 11229.9
+4.59006e+06; 451.013; 24324.9; 11229.9
+4.59006e+06; 465.107; 24332.6; 11229.9
+4.59006e+06; 479.202; 24340.4; 11229.9
+4.59006e+06; 493.296; 24348.2; 11229.9
+4.59006e+06; 507.39; 24356; 11229.9
+4.59006e+06; 521.484; 24363.8; 11229.9
+4.59006e+06; 535.578; 24371.5; 11229.9
+4.59006e+06; 549.672; 24379.3; 11229.9
+4.59006e+06; 563.767; 24387.1; 11229.9
+4.59006e+06; 577.861; 24394.9; 11229.9
+4.59006e+06; 591.955; 24402.7; 11229.9
+4.59006e+06; 606.049; 24410.4; 11229.9
+4.59006e+06; 620.143; 24418.2; 11229.9
+4.59006e+06; 634.237; 24426; 11229.9
+4.59006e+06; 648.332; 24433.8; 11229.9
+4.59006e+06; 662.426; 24441.6; 11229.9
+4.59006e+06; 676.52; 24449.4; 11229.9
+4.59006e+06; 690.614; 24457.1; 11229.9
+4.59006e+06; 704.708; 24464.9; 11229.9
+
diff --git a/performance_assessment/performance_assessment_conf.xml b/performance_assessment/performance_assessment_conf.xml
index 5f01be6a45d4c7f6d5db3f22dce5733a4f7ee1d7..4cc108306a1a207bdaa4fbba7d89bae598fc5b96 100644
--- a/performance_assessment/performance_assessment_conf.xml
+++ b/performance_assessment/performance_assessment_conf.xml
@@ -54,49 +54,52 @@
         <performance_checks description="Settings that affect different functionalities!">
             <payload_range_diagram description="Payload Range Diagram Calculation">
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			</payload_range_diagram>
             <engine_performance description="Engine power estimation">
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			</engine_performance>
             <flight_envelope_performance description="Estimation of flight range limits">
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
-				<overwrite_initial_values>false</overwrite_initial_values>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
+				<overwrite_initial_values>0</overwrite_initial_values>
 			</flight_envelope_performance>
             <climb_performance description="Climb Performance (so far only for plots)" Default="1">
-				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
+				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Default="1">0</switch>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			</climb_performance>
-            <to_performance description="Estimation of the starting distance">
+            <takeoff_performance description="Estimation of the starting distance">
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
-				<calculate_blfl_performance>true</calculate_blfl_performance>
-			</to_performance>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
+				<calculate_blfl_performance>1</calculate_blfl_performance>
+			</takeoff_performance>
             <landing_performance description="Landing distance estimation" >
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			</landing_performance>
             <vn_diagram description="Switch for calculation of V-n diagram 1: On, 0: Off">
 				<switch description="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch>
-				<fidelityLevel description="Fidelity level of calculation">low</fidelityLevel>
+				<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			</vn_diagram>
+			<sar_performance>
+				<fidelity_level>low</fidelity_level>
+			</sar_performance>
         </performance_checks>
         <constants_for_performance_checks>
             <engine_performance>
                 <ratings>
                     <rating ID="1">
-						<value>Cruise</value>
+						<value>cruise</value>
 					</rating>
                     <rating ID="2">
-						<value>Climb</value>
+						<value>climb</value>
 					</rating>
                     <rating ID="3">
-						<value>MaxCont</value>
+						<value>maximum_continuous</value>
 					</rating>
                     <rating ID="4">
-						<value>TO</value>
+						<value>takeoff</value>
 					</rating>
                 </ratings>
             </engine_performance>
@@ -142,16 +145,17 @@
 			</vn_diagram>
         </constants_for_performance_checks>
         <modes description="other settings that influence different modes!">
-            <fuel_planning description="Fuel estimation switch: 1:On, 0:Off" Default="0">0</fuel_planning>
+            <fuel_planning description="Fuel estimation switch: 1:On, 0:Off" Default="0">1</fuel_planning>
             <use_study_mission_for_analysis description="1: use missionStudy.xml, 0: use missionDesign.xml" Default="0">0</use_study_mission_for_analysis>
             <mtom_design description="Redetermination of the MTOM: 1:Yes (e.g. DesignLoop), 0:No (e.g. only analysis)" Default="0">0</mtom_design>
         </modes>
         <mission description="Specification of the mission">
             <optimize_mission_profile description="Switch to optimize the mission profile" Unit="-" Default="0">0</optimize_mission_profile>
+			<fidelity_level>low</fidelity_level>
         </mission>
         <fuel_planning>
-			<switch>true</switch>
-			<fidelityLevel description="Fidelity level of calculation">lol</fidelityLevel>
+			<switch>1</switch>
+			<fidelity_level description="Fidelity level of calculation">low</fidelity_level>
 			<contingency_fuel description="Relative percentage of Contigency Fuel in total Trip Fuel" Default="0.05">
 				<value>0.03</value>
 				<unit>1</unit>
diff --git a/performance_assessment/src/libs/multi_engine_propulsion.cpp b/performance_assessment/src/libs/multi_engine_propulsion.cpp
index 47f360ec9a69999ade80aa75f47bb76c14e27139..88e28c21c56839bc1cf3a960d8769031dd8f1daf 100644
--- a/performance_assessment/src/libs/multi_engine_propulsion.cpp
+++ b/performance_assessment/src/libs/multi_engine_propulsion.cpp
@@ -20,6 +20,23 @@ Multi_engine_propulsion::Multi_engine_propulsion(const std::shared_ptr<RuntimeIO
     const node& tank_definition = rtIO->acxml.at("requirements_and_specifications/design_specification/configuration/tank_definition");
     const node& tank_design = rtIO->acxml.at("component_design/tank/specific");
 
+    /* Check if all tanks and engines need the same energy carriers and if they were defined */
+    std::vector<int> propulsor_energy_carriers(propulsor_requirements.getIntVector("propulsor/energy_carrier_ID/value"));
+    std::vector<int> tank_energy_carriers(tank_definition.getIntVector("tank/energy_carrier_ID/value"));
+    std::vector<int> available_energy_carriers;
+    std::transform(rtIO->aircraft_energy_carriers().begin(), rtIO->aircraft_energy_carriers().end(),
+                    std::back_inserter(available_energy_carriers), [](const std::pair<const int, std::tuple<std::string, double, double, double>>& energy_carrier)
+                    { return energy_carrier.first; });
+    if (!vector_check(propulsor_energy_carriers, tank_energy_carriers)) {
+        throwError(__FILE__, __func__, __LINE__,
+           "Check your energy carriers: Given energy carrier IDs for propulsion system and tanks do not match!");
+    }
+    if (!vector_check(propulsor_energy_carriers, available_energy_carriers)) {
+        throwError(__FILE__, __func__, __LINE__,
+            "Check your energy carriers: Propulsion system and tanks contain energy carrier IDs which were not defined or you defined energy carriers that are not used!");
+    }
+
+    /* Get all propulsors  */
     for (uint16_t i(0); i < propulsor_design.getVector("propulsion").size(); i++) {
         // get the energy_carrier_id of the propulsor
         int id_tmp = EndnodeReadOnly<int>("/propulsor@" + num2Str(i) + "/energy_carrier_ID").read(propulsor_requirements).value();
@@ -29,20 +46,24 @@ Multi_engine_propulsion::Multi_engine_propulsion(const std::shared_ptr<RuntimeIO
         std::string name_tmp = EndnodeReadOnly<std::string>("/propulsion@" + num2Str(i) + "/engine/model").read(propulsor_design).value();
         double thrust_share_tmp(EndnodeReadOnly<double>("/propulsor@" + num2Str(i) + "/thrust_share").read(propulsor_requirements).value());
 
-        // Check if the energy_carrier_id is already used
-        if (this->propulsors.find(id_tmp) != this->propulsors.end()) {
-            // Check if the same engine already operates using that energy carrier
+        // Check if the energy_carrier_id is already used. If not, setup new propulsion system for it
+        if (this->propulsors.find(id_tmp) == this->propulsors.end()) {
+            Energy_consumption energy_tmp(rtIO->get_fuel_density(id_tmp), // initialize new energy carrier
+                                            rtIO->get_fuel_gravimetric_energy_density(id_tmp),
+                                            rtIO->get_fuel_volumetric_energy_density(id_tmp));
+            this->energy_consumption[id_tmp] = energy_tmp;
+            Propulsor propulsor_tmp(name_tmp, Engine(rtIO->getEngineDataDir() + "/" + name_tmp, scale_tmp), i, thrust_share_tmp);
+            this->propulsors[id_tmp].push_back(propulsor_tmp);
+        } else { // If it already exists, add a new one or update ID vector for equal engines
             for (uint16_t j(0); j < this->propulsors[id_tmp].size(); j++) {
                 if (this->propulsors[id_tmp][j].name == name_tmp // check for same name and scale factor
                         && accuracyCheck(this->propulsors[id_tmp][j].engine.get_scale_factor(), scale_tmp, ACCURACY_LOW)) {
-                    this->propulsors[id_tmp][j].engine.set_same_engine_type_quantity(1 +
-                        this->propulsors[id_tmp][j].engine.get_same_engine_type_quantity()); // add them up
-                    this->propulsors[id_tmp][j].thrust_share += thrust_share_tmp; // sum their thrust share
+                    this->propulsors[id_tmp][j].engine_id.push_back(i); // Add the ID of the same engine to avoid double effort calculating engines
+                } else {
+                    Propulsor propulsor_tmp(name_tmp, Engine(rtIO->getEngineDataDir() + "/" + name_tmp, scale_tmp), i, thrust_share_tmp);
+                    this->propulsors[id_tmp].push_back(propulsor_tmp);
                 }
             }
-        } else { // if not make a new one
-            Propulsor propulsor_tmp(name_tmp, Engine(rtIO->getEngineDataDir() + "/" + name_tmp, scale_tmp), thrust_share_tmp);
-            this->propulsors[id_tmp].push_back(propulsor_tmp);
         }
     }
 
@@ -50,29 +71,20 @@ Multi_engine_propulsion::Multi_engine_propulsion(const std::shared_ptr<RuntimeIO
     // Read tank IDs and capacities from the aircraft XML
     std::map<int, double> total_capacity_per_id;
     for (int tank_id(0); tank_id < tank_design.getVector("tank").size(); tank_id++) {
-        int energy_carrier_id(EndnodeReadOnly<int>("energy_carrier_ID").read(tank_definition.at("tank@" + num2Str(tank_id))).value());
-        check_energy_carrier_id(energy_carrier_id, "Problematic tank setup. ");
-        double tank_capacity(EndnodeReadOnly<double>("maximum_energy_capacity").read(tank_design.at("tank@" + num2Str(tank_id))).value());
-        Tank tmp_tank(tank_id, tank_capacity, rtIO->get_fuel_density(energy_carrier_id),
-                        rtIO->get_fuel_gravimetric_energy_density(energy_carrier_id),
-                        rtIO->get_fuel_volumetric_energy_density(energy_carrier_id));
-        this->tanks[energy_carrier_id].push_back(tmp_tank);
-        total_capacity_per_id[energy_carrier_id] += tank_capacity; // sum capacity of this energy carrier
-    }
-
-    // Get the relative maximum capacity of each tank in comparison to other tanks using the same energy carrier ID
-    for (std::pair<int, std::vector<Tank>> tank : this->tanks) {
-        for (uint16_t i(0); i < tank.second.size(); i++) {
-            tank.second[i].relative_capacity = tank.second[i].capacity/total_capacity_per_id[tank.first];
+        //Only take tanks into account that are used for the mission
+        if (EndnodeReadOnly<bool>("energy_capacity_required_for_mission").read(tank_design.at("tank@" + num2Str(tank_id))).value()) {
+            int energy_carrier_id(EndnodeReadOnly<int>("energy_carrier_ID").read(tank_definition.at("tank@" + num2Str(tank_id))).value());
+            double tank_capacity(EndnodeReadOnly<double>("maximum_energy_capacity").read(tank_design.at("tank@" + num2Str(tank_id))).value());
+            Tank tmp_tank(tank_id, tank_capacity);
+            this->energy_consumption.at(energy_carrier_id).tanks.push_back(tmp_tank);
+            total_capacity_per_id[energy_carrier_id] += tank_capacity; // sum capacity of this energy carrier
         }
     }
-
-    // Final check if all propulsors will get energy from at least one tank
-    for (std::pair<int, std::vector<Propulsor>> tmp : propulsors) {
-        if (this->tanks.find(tmp.first) == tanks.end()) {
-            myRuntimeInfo->out << tmp.first << std::endl;
-            throwError(__FILE__, __func__, __LINE__,
-                std::format("No tank was designed containing the energy carrier {}: No fuel for engine {}!", tmp.first, tmp.second[0].name));
+    // Get the relative maximum capacity of each tank in comparison to other tanks using the same energy carrier ID
+    for (std::pair<const int, Multi_engine_propulsion::Energy_consumption> energy_carrier : this->energy_consumption) {
+        for (uint16_t i(0); i < energy_carrier.second.tanks.size(); i++) {
+            this->energy_consumption.at(energy_carrier.first).tanks[i].relative_capacity =
+                energy_carrier.second.tanks[i].capacity/total_capacity_per_id[energy_carrier.first];
         }
     }
 }
@@ -82,36 +94,39 @@ Multi_engine_propulsion::~Multi_engine_propulsion() {
 }
 
 size_t Multi_engine_propulsion::unique_engines_per_id(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
     return this->propulsors[energy_carrier_id].size();
 }
 
-std::vector<std::string> Multi_engine_propulsion::get_engine_names(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
-    std::vector<std::string> names;
-    std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(names),
-                    [](const auto& engines) { return engines.name; });
-    return names;
-}
+// std::vector<std::string> Multi_engine_propulsion::get_engine_names(const int& energy_carrier_id) {
+//     std::vector<std::string> names;
+//     std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(names),
+//                     [](const auto& engines) { return engines.name; });
+//     return names;
+// }
 
-std::vector<Engine> Multi_engine_propulsion::get_engines(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
-    std::vector<Engine> engines_objects;
-    std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(engines_objects),
-                    [](const auto& engines) { return engines.engine; });
-    return engines_objects;
+uint16_t Multi_engine_propulsion::get_number_of_engines(const int& energy_carrier_id) {
+    uint16_t sum(0);
+    for (Multi_engine_propulsion::Propulsor propulsor : this->propulsors.at(energy_carrier_id)) {
+        sum += propulsor.engine_id.size();
+    }
+    return sum;
 }
 
-std::vector<double> Multi_engine_propulsion::get_thrust_shares(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
-    std::vector<double> thrust_shares;
-    std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(thrust_shares),
-                    [](const auto& engines) { return engines.thrust_share; });
-    return thrust_shares;
-}
+// std::vector<Engine> Multi_engine_propulsion::get_engines(const int& energy_carrier_id) {
+//     std::vector<Engine> engines_objects;
+//     std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(engines_objects),
+//                     [](const auto& engines) { return engines.engine; });
+//     return engines_objects;
+// }
+
+// std::vector<double> Multi_engine_propulsion::get_thrust_shares(const int& energy_carrier_id) {
+//     std::vector<double> thrust_shares;
+//     std::transform(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(thrust_shares),
+//                     [](const auto& engines) { return engines.thrust_share; });
+//     return thrust_shares;
+// }
 
 std::vector<OperatingPoint> Multi_engine_propulsion::get_operating_points(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
     std::vector<OperatingPoint> operating_points;
     for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
         operating_points.push_back(this->propulsors[energy_carrier_id][i].engine.get_operating_point());
@@ -119,28 +134,48 @@ std::vector<OperatingPoint> Multi_engine_propulsion::get_operating_points(const
     return operating_points;
 }
 
+std::vector<Multi_engine_propulsion::Propulsor> Multi_engine_propulsion::get_propulsors(const int& energy_carrier_id) {
+    std::vector<Propulsor> propulsors_vector;
+    std::copy(this->propulsors[energy_carrier_id].begin(), this->propulsors[energy_carrier_id].end(), std::back_inserter(propulsors_vector));
+    return propulsors_vector;
+}
+
 void Multi_engine_propulsion::set_operating_points(const int& energy_carrier_id, std::vector<OperatingPoint> operating_points) {
-    check_energy_carrier_id(energy_carrier_id);
-    for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
-        this->propulsors[energy_carrier_id][i].engine.set_operating_point(operating_points[i]);
+    for (std::pair<const int, std::vector<Multi_engine_propulsion::Propulsor>> energy_carrier : this->propulsors) {
+        for (uint16_t i(0); i < this->propulsors[energy_carrier.first].size(); i++) {
+            this->propulsors[energy_carrier_id][i].engine.set_operating_point(operating_points[i]);
+            if (energy_carrier.first != energy_carrier_id) {
+                OperatingPoint n0_operating_point(operating_points[i]); // Copy operating point since Mach number and altitude are euqal for all
+                n0_operating_point.N = 0.;                              // Set N1 for engines which are not running to 0
+                this->propulsors[energy_carrier_id][i].engine.set_operating_point(n0_operating_point);
+            }
+        }
     }
 }
 
 double Multi_engine_propulsion::get_aircraft_fuelflow(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
     double total_fuel_flow(0);
     // Loop through all propulsors running on that energy carrier
     for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
-        total_fuel_flow += this->propulsors[energy_carrier_id][i].engine.get_aircraft_fuelflow();
+        // Trick: Propulsors with same engines have multiple IDs -> size() scales overall fuelflow acordingly
+        total_fuel_flow += this->propulsors[energy_carrier_id][i].engine.get_aircraft_fuelflow() * this->propulsors[energy_carrier_id][i].engine_id.size();
     }
     return total_fuel_flow;
 }
 
+double Multi_engine_propulsion::get_aircraft_energyflow(const int& energy_carrier_id) {
+    return this->get_aircraft_fuelflow(energy_carrier_id) * this->energy_consumption.at(energy_carrier_id).gravimetric_density;
+}
+
+double Multi_engine_propulsion::get_aircraft_energyflow(const int& energy_carrier_id, const double& aircraft_fuelflow) {
+    return aircraft_fuelflow * this->energy_consumption.at(energy_carrier_id).gravimetric_density;
+}
+
 double Multi_engine_propulsion::get_thrust_aircraft(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
     double total_thrust(0);
     for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
-        total_thrust += this->propulsors[energy_carrier_id][i].engine.get_thrust_aircraft();
+        // Trick: Propulsors with same engines have multiple IDs -> size() scales overall thrust acordingly
+        total_thrust += this->propulsors[energy_carrier_id][i].engine.get_thrust() * this->propulsors[energy_carrier_id][0].engine_id.size();
     }
     return total_thrust;
 }
@@ -150,9 +185,11 @@ void Multi_engine_propulsion::calculate_N1_with_penalties(const int& energy_carr
                                              const double& derate, const std::string& thrust_rating,
                                              double bleed_air_offtake, double shaft_power_offtake) {
     for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
+        double shaft_power_offtake_share = this->propulsors[energy_carrier_id][i].thrust_share*shaft_power_offtake;
+        double bleed_air_offtake_share = this->propulsors[energy_carrier_id][i].thrust_share*bleed_air_offtake;
         this->propulsors[energy_carrier_id][i].engine.calculate_N1_with_penalties(
                                                         altitude, mach_number, atm, derate,
-                                                        thrust_rating, bleed_air_offtake, shaft_power_offtake);
+                                                        thrust_rating, bleed_air_offtake_share, shaft_power_offtake_share);
     }
 }
 
@@ -162,49 +199,78 @@ void Multi_engine_propulsion::calculate_N1_with_thrustlimit(const int& energy_ca
                                              double bleed_air_offtake, double shaft_power_offtake, double thrust_limit) {
     for (uint16_t i(0); i < this->propulsors[energy_carrier_id].size(); i++) {
         double thrust_limit_share = this->propulsors[energy_carrier_id][i].thrust_share*thrust_limit;
+        double shaft_power_offtake_share = this->propulsors[energy_carrier_id][i].thrust_share*shaft_power_offtake;
+        double bleed_air_offtake_share = this->propulsors[energy_carrier_id][i].thrust_share*bleed_air_offtake;
         this->propulsors[energy_carrier_id][i].engine.calculate_N1_with_thrustlimit(
                                                         altitude, mach_number, atm, derate, thrust_rating,
-                                                        bleed_air_offtake, shaft_power_offtake, thrust_limit_share);
+                                                        bleed_air_offtake_share, shaft_power_offtake_share, thrust_limit_share);
     }
 }
 
-std::vector<Multi_engine_propulsion::Tank> Multi_engine_propulsion::get_tanks_by_id(int energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
-    return this->tanks[energy_carrier_id];
+std::vector<Multi_engine_propulsion::Tank> Multi_engine_propulsion::get_tanks_by_id(const int& energy_carrier_id) {
+    return this->energy_consumption.at(energy_carrier_id).tanks;
 }
 
-void Multi_engine_propulsion::drain_tanks(const int& energy_carrier_id, const double& consumed_energy) {
-    check_energy_carrier_id(energy_carrier_id);
-    for (int i(0); i < this->tanks[energy_carrier_id].size(); i++) {
-            this->tanks[energy_carrier_id][i].used_energy -= this->tanks[energy_carrier_id][i].relative_capacity*consumed_energy;
+std::map<int, double> Multi_engine_propulsion::get_consumed_energy_map() {
+    std::map<int, double> consumed_energy_map;
+    // energy_carrier.first = energy_carrier_id; energy_carrier.second = Energy_consumption class
+    for (std::pair<const int, Multi_engine_propulsion::Energy_consumption> energy_carrier : this->energy_consumption) {
+        consumed_energy_map[energy_carrier.first] = get_consumed_energy(energy_carrier.first);
     }
+    return consumed_energy_map;
 }
 
-double Multi_engine_propulsion::get_consumed_fuel_mass() {
-    double total_fuel_mass(0);
-    for (std::pair<const int, std::vector<Multi_engine_propulsion::Tank>> id : this->tanks) {
-        total_fuel_mass += // id.first = energy_carrier_id
-            std::accumulate(this->tanks[id.first].begin(), this->tanks[id.first].end(), 0.0,
-                            [](double sum, const Tank& tank) {return sum + (tank.used_energy / tank.gravimetric_density);});
+double Multi_engine_propulsion::get_consumed_energy(const int& energy_carrier_id) {
+    double total_consumed_energy = std::accumulate(this->energy_consumption.at(energy_carrier_id).tanks.begin(), this->energy_consumption.at(energy_carrier_id).tanks.end(), 0.0,
+            [](double sum, const Tank& tank) {return sum + tank.consumed_energy;});
+    return total_consumed_energy;
+}
+
+std::map<int, double> Multi_engine_propulsion::get_energyflow_map() {
+    std::map<int, double> energyflow_map;
+    // energy_carrier.first = energy_carrier_id; energy_carrier.second = Energy_consumption class
+    for (std::pair<const int, Multi_engine_propulsion::Energy_consumption> energy_carrier : this->energy_consumption) {
+        energyflow_map[energy_carrier.first] =
+            this->get_aircraft_fuelflow(energy_carrier.first) * this->energy_consumption.at(energy_carrier.first).gravimetric_density;
     }
-    return total_fuel_mass;
+    return energyflow_map;
 }
 
-double Multi_engine_propulsion::get_total_energy_capacity(const int& energy_carrier_id) {
-    check_energy_carrier_id(energy_carrier_id);
-    double total_energy(0);
-    for (std::pair<const int, std::vector<Multi_engine_propulsion::Tank>> id : this->tanks) {
-        total_energy += // id.first = energy_carrier_id
-            std::accumulate(this->tanks[id.first].begin(), this->tanks[id.first].end(), 0.0,
-                            [](double sum, const Tank& tank) {return sum + (tank.capacity);});
+void Multi_engine_propulsion::drain_tanks(const int& energy_carrier_id, const double& delta_t, const double& fuel_mass) {
+    // TODO(GErrit): lediglich anteilig an der Gesamtenergie wir die Energie abgefuehrt. Ggf. anderes Defueling vorsehen!
+    if (std::isnan(fuel_mass)) {
+        for (uint16_t i(0); i < this->energy_consumption.at(energy_carrier_id).tanks.size(); i++) {
+            this->energy_consumption.at(energy_carrier_id).tanks[i].consumed_energy -=  delta_t *
+                get_aircraft_energyflow(energy_carrier_id) * this->energy_consumption.at(energy_carrier_id).tanks[i].relative_capacity;
+        }
+    } else { // If a given fuel mass is taken away, just use that one
+        for (uint16_t i(0); i < this->energy_consumption.at(energy_carrier_id).tanks.size(); i++) {
+            this->energy_consumption.at(energy_carrier_id).tanks[i].consumed_energy -=  fuel_mass *
+                this->energy_consumption.at(energy_carrier_id).gravimetric_density * this->energy_consumption.at(energy_carrier_id).tanks[i].relative_capacity;
+        }
     }
-    return total_energy;
+}
+
+double Multi_engine_propulsion::get_consumed_fuel_mass() {
+    std::map<int, double> consumed_energy_map(this->get_consumed_energy_map());
+    double total_fuel_mass = std::accumulate(this->energy_consumption.begin(), this->energy_consumption.end(), 0.0,
+        [&consumed_energy_map](double sum, const std::pair<const int, Multi_engine_propulsion::Energy_consumption>& energy_carrier) {
+            return sum + consumed_energy_map.at(energy_carrier.first) / energy_carrier.second.gravimetric_density;
+    });
+    return total_fuel_mass;
+}
+
+double Multi_engine_propulsion::get_energy_carrier_capacity(const int& energy_carrier_id) {
+    double total_capacity = std::accumulate(this->energy_consumption.at(energy_carrier_id).tanks.begin(), this->energy_consumption.at(energy_carrier_id).tanks.end(), 0.0,
+            [](double sum, const Tank& tank) {return sum + tank.capacity;});
+    return total_capacity;
 }
 
 /* Initialization of attributes of the Propulsor object with the constructor */
-Multi_engine_propulsion::Propulsor::Propulsor(const std::string& a_name, Engine an_engine, const double& a_thrust_share) :
+Multi_engine_propulsion::Propulsor::Propulsor(const std::string& a_name, Engine an_engine, const uint16_t& an_id, const double& a_thrust_share) :
     name(a_name),
     engine(an_engine),
+    engine_id({an_id}),
     thrust_share(a_thrust_share) {
 }
 
@@ -213,23 +279,40 @@ Multi_engine_propulsion::Propulsor::~Propulsor() {
 }
 
 /* Initialization of attributes of the Tank object with the constructor */
-Multi_engine_propulsion::Tank::Tank(uint16_t a_tank_id, double a_capacity, double a_density, double a_gravimetric_density, double a_volumetric_density) :
+Multi_engine_propulsion::Tank::Tank(uint16_t a_tank_id, double a_capacity) :
     tank_id(a_tank_id),
     capacity(a_capacity),
     relative_capacity(0.),
-    used_energy(0.),
-    density(a_density),
-    gravimetric_density(a_gravimetric_density),
-    volumetric_density(a_volumetric_density) {
+    consumed_energy(0.) {
 }
 
 /* Destructor of the Tank object */
 Multi_engine_propulsion::Tank::~Tank() {
 }
 
-void Multi_engine_propulsion::check_energy_carrier_id(const int& energy_carrier_id, const std::string additional_info) {
-    if (this->propulsors.find(energy_carrier_id) == propulsors.end()) {
-        throwError(__FILE__, __func__, __LINE__,
-            std::format("{}Check yor energy carriers: Given energy carrier ID is not used for this propulsion system!", additional_info));
-    }
+/* Initialization of attributes of the Energy_consumption object with the constructor */
+Multi_engine_propulsion::Energy_consumption::Energy_consumption(double a_density, double a_gravimetric_density, double a_volumetric_density) :
+    density(a_density),
+    gravimetric_density(a_gravimetric_density),
+    volumetric_density(a_volumetric_density),
+    tanks() {
+}
+
+/* Initialization of attributes of the Energy_consumption object with the constructor */
+Multi_engine_propulsion::Energy_consumption::Energy_consumption() :
+    density(0.),
+    gravimetric_density(0.),
+    volumetric_density(0.),
+    tanks() {
+}
+
+/* Destructor of the Energy_consumption object */
+Multi_engine_propulsion::Energy_consumption::~Energy_consumption() {
+}
+
+bool Multi_engine_propulsion::vector_check(const std::vector<int>& v1, const std::vector<int>& v2) {
+    std::set<int> set1(v1.begin(), v1.end());
+    std::set<int> set2(v2.begin(), v2.end());
+
+    return set1 == set2;
 }
diff --git a/performance_assessment/src/libs/multi_engine_propulsion.h b/performance_assessment/src/libs/multi_engine_propulsion.h
index 3a27ed74540c515a96ecdde28c53f5f759e65b7f..87063222697b47bb214a2aa0d94b8d61356e48ac 100644
--- a/performance_assessment/src/libs/multi_engine_propulsion.h
+++ b/performance_assessment/src/libs/multi_engine_propulsion.h
@@ -9,11 +9,12 @@
  *
  */
 
-#ifndef performanceAssessment_SRC_LIBS_MULTI_ENGINE_PROPULSION_H_
-#define performanceAssessment_SRC_LIBS_MULTI_ENGINE_PROPULSION_H_
+#ifndef MISSION_ANALYSIS_SRC_LIBS_MULTI_ENGINE_PROPULSION_MULTI_ENGINE_PROPULSION_H_
+#define MISSION_ANALYSIS_SRC_LIBS_MULTI_ENGINE_PROPULSION_MULTI_ENGINE_PROPULSION_H_
 
 #include <map>
 #include <memory>
+#include <set>
 #include <string>
 #include <tuple>
 #include <utility>
@@ -39,11 +40,14 @@ class Multi_engine_propulsion {
     std::vector<std::string> get_engine_names(const int& energy_carrier_id);
     std::vector<Engine> get_engines(const int& energy_carrier_id);
     std::vector<double> get_thrust_shares(const int& energy_carrier_id);
+    uint16_t get_number_of_engines(const int& energy_carrier_id);
 
     std::vector<OperatingPoint> get_operating_points(const int& energy_carrier_id);
     void set_operating_points(const int& energy_carrier_id, std::vector<OperatingPoint> operating_points);
 
     double get_aircraft_fuelflow(const int& energy_carrier_id);
+    double get_aircraft_energyflow(const int& energy_carrier_id);
+    double get_aircraft_energyflow(const int& energy_carrier_id, const double& aircraft_fuelflow);
     double get_thrust_aircraft(const int& energy_carrier_id);
 
     void calculate_N1_with_penalties(const int& energy_carrier_id,
@@ -68,11 +72,12 @@ class Multi_engine_propulsion {
      public:
         std::string name;
         Engine engine;
+        std::vector<uint16_t> engine_id;
         double thrust_share;
 
         /** \brief Constructor of used_components.
          */
-        Propulsor(const std::string& a_name, Engine an_engine, const double& a_thrust_share);
+        Propulsor(const std::string& a_name, Engine an_engine, const uint16_t& an_id, const double& a_thrust_share);
 
         /** \brief Destructor of used_components
          */
@@ -84,32 +89,54 @@ class Multi_engine_propulsion {
         uint16_t tank_id;
         double capacity;
         double relative_capacity;
-        double used_energy;
+        double consumed_energy;
+
+        /** \brief Constructor of used_components.
+         */
+        Tank(uint16_t a_tank_id, double a_capacity);
+
+        /** \brief Destructor of used_components
+         */
+        virtual ~Tank();
+    };
+
+    class Energy_consumption {
+     public:
         double density;
         double gravimetric_density;
         double volumetric_density;
+        std::vector<Tank> tanks;
 
         /** \brief Constructor of used_components.
          */
-        Tank(uint16_t a_tank_id, double a_capacity, double a_density, double a_gravimetric_density, double a_volumetric_density);
+        Energy_consumption();
+
+        /** \brief Constructor of used_components.
+         */
+        Energy_consumption(double a_density, double a_gravimetric_density, double a_volumetric_density);
 
         /** \brief Destructor of used_components
          */
-        virtual ~Tank();
+        virtual ~Energy_consumption();
     };
-    std::vector<Tank> get_tanks_by_id(int energy_carrier_id);
+
+    std::map<int, double> get_consumed_energy_map();
+    double get_consumed_energy(const int& energy_carrier_id);
+    std::map<int, double> get_energyflow_map();
+    std::vector<Tank> get_tanks_by_id(const int& energy_carrier_id);
     void tank_setup(const node& tank_definition, const node& tank_design);
-    void drain_tanks(const int& energy_carrier_id, const double& consumed_energy);
+    void drain_tanks(const int& energy_carrier_id, const double& delta_t, const double& fuelflow = NAN);
     double get_consumed_fuel_mass();
-    double get_total_energy_capacity(const int& energy_carrier_id);
+    double get_energy_carrier_capacity(const int& energy_carrier_id);
+    std::vector<Propulsor> get_propulsors(const int& energy_carrier_id);
 
  private:
     /* variables */
     std::map<int, std::vector<Propulsor>> propulsors;
-    std::map<int, std::vector<Tank>> tanks;
+    std::map<int, Energy_consumption> energy_consumption;
 
     /* functions */
-    void check_energy_carrier_id(const int& energy_carrier_id, const std::string additional_info = "");
+    bool vector_check(const std::vector<int>& v1, const std::vector<int>& v2);
 };
 
-#endif  // performanceAssessment_SRC_LIBS_MULTI_ENGINE_PROPULSION_H_
+#endif // MISSION_ANALYSIS_SRC_LIBS_MULTI_ENGINE_PROPULSION_MULTI_ENGINE_PROPULSION_H_
diff --git a/performance_assessment/src/performance_assessment.cpp b/performance_assessment/src/performance_assessment.cpp
index 241e0db90d8d099b82808e6bb3f3061f51b02daa..0fafa3b07898556825c1f4ef162af7995fe93415 100644
--- a/performance_assessment/src/performance_assessment.cpp
+++ b/performance_assessment/src/performance_assessment.cpp
@@ -24,31 +24,8 @@
 
 performance_assessment::performance_assessment(const int argc, char *argv[], const std::string& toolName, const std::string& toolVersion) : Module(argc, argv, toolName, toolVersion) {
     std::string configuration = rtIO_->aircraft_configuration_type();
-    std::string strategySelectionByUser = rtIO_->moduleConfig.at("/module_configuration_file/program_settings/module_strategy");
-    std::string fidelitySelectionByUser = rtIO_->moduleConfig.at("/module_configuration_file/program_settings/module_fidelity_level");
 
-    route = {configuration, strategySelectionByUser, fidelitySelectionByUser};
-    strategy.setStrategy(design_routing(route)(rtIO_));
-}
-
-strategyaccess performance_assessment::design_routing(const std::vector<std::string> &route) {
-    /* Routing table */
-  std::map<std::string, std::map<std::string, std::map<std::string, strategyaccess>>> table = {
-    {"tube_and_wing",
-       std::map<std::string, std::map<std::string, strategyaccess>>{
-           {"default_methods",
-            std::map<std::string, strategyaccess>{
-                {"low",
-                 [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<taw::performance_assessment_factory>(arg); }},
-            }},
-       }},
-    {"blended_wing_body",
-       std::map<std::string, std::map<std::string, strategyaccess>>{
-           {"default_methods",
-            std::map<std::string, strategyaccess>{
-                {"low",
-                 [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<taw::performance_assessment_factory>(arg); }},
-            }}}}};
-
-  return table[route.at(0)][route.at(1)][route.at(2)];
+    /* Register existing strategies */
+    strategy.registerStrategy<taw::performance_assessment_factory>({"tube_and_wing"});
+    strategy.setStrategy({configuration}, rtIO_);
 }
diff --git a/performance_assessment/src/taw/defaultMethods/SARPerformance/low_fidelity/SARPerformance.cpp b/performance_assessment/src/taw/defaultMethods/SARPerformance/low_fidelity/SARPerformance.cpp
index 09a95f0818dae537e335a1bb3056f50d7759b2c5..ba2fa8d97ae1e2b58512171ce604c125bfb4c61f 100644
--- a/performance_assessment/src/taw/defaultMethods/SARPerformance/low_fidelity/SARPerformance.cpp
+++ b/performance_assessment/src/taw/defaultMethods/SARPerformance/low_fidelity/SARPerformance.cpp
@@ -100,9 +100,13 @@ double SARPerformance::calculateSAR(double mass, double alt, double mach, string
     double SAR(0.0);
     double cruiseTAS = theAcftPt->atm.getSpeedOfSound(alt) * mach;
     double cruiseDrag = theAcftPt->aero.getCruiseDrag(mach, alt, 0., mass, configuration, theAcftPt->atm);
+    try {
     theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, alt, mach, theAcftPt->atm, 1., rating, theAcftPt->myMission.bleedOffCr,
-        theAcftPt->myMission.shaftOffCr, cruiseDrag / 1000.);
-    if (1000. * theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) >= 0.99 * cruiseDrag) {
+            theAcftPt->myMission.shaftOffCr, cruiseDrag);
+    } catch (int status) {
+        double current_ac_thrust = theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);  //TODO(hansmann): Revise this section
+    }
+    if (theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) >= 0.99 * cruiseDrag) {
         SAR = cruiseTAS / theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
     } else {
         SAR = 0.0;
diff --git a/performance_assessment/src/taw/defaultMethods/VnDiagram/low_fidelity/VnDiagram.cpp b/performance_assessment/src/taw/defaultMethods/VnDiagram/low_fidelity/VnDiagram.cpp
index d0da5b2750b5cebbedd1f5e0431729c785e4f0f6..3a7a2d658a14f8a1bd9f2d8195a3b8eaf248ad2e 100644
--- a/performance_assessment/src/taw/defaultMethods/VnDiagram/low_fidelity/VnDiagram.cpp
+++ b/performance_assessment/src/taw/defaultMethods/VnDiagram/low_fidelity/VnDiagram.cpp
@@ -34,29 +34,29 @@ VnDiagram::VnDiagram(std::shared_ptr<aircraft> theAircraft, const std::shared_pt
 }
 void VnDiagram::doVnDiagram() {
     /* Calculation of the decisive coefficients, which define the shape of the first part of the V-n diagram (quadratic shape) Coeff*pow(v,2) */
-    CleanCoefficientPos = (theAcftPt->aero.getCLmax(0., "Clean") * 0.5 * theAcftPt->atm.getDensity(0.) * theAcftPt->S_Wing) / (theAcftPt->MTOM * G_FORCE);
+    CleanCoefficientPos = (theAcftPt->aero.getCLmax(0., "clean") * 0.5 * theAcftPt->atm.getDensity(0.) * theAcftPt->S_Wing) / (theAcftPt->MTOM * G_FORCE);
     CleanCoefficientNeg = -CleanCoefficientPos;  // Assumption: minimum lift coefficient is as high as positive one
     FlapsCoefficientTO = (theAcftPt->aero.CLmaxTakeoff * 0.5 * theAcftPt->atm.getDensity(0.) * theAcftPt->S_Wing) / (theAcftPt->MTOM * G_FORCE);
     // Note here the use of MLM instead of MTOM
     FlapsCoefficientLDG = (theAcftPt->aero.CLmaxLanding * 0.5 * theAcftPt->atm.getDensity(0.) * theAcftPt->S_Wing) / (theAcftPt->MLM * G_FORCE);
     /* Diagram for die Clean-configuration */
-    for (int i = 0 ; i <= theAcftPt->VDive + 5; i += step) {
+    for (int i = 0 ; i <= theAcftPt->VDive + convertUnit(KNOTS, METERPERSECOND, 5); i += step) {
         tempValues.speed = i;
-        tempValues.n_upperBound = calc_upperBoundClean(CleanCoefficientPos, convertUnit(KNOTS, METERPERSECOND, tempValues.speed));
-        tempValues.n_lowerBound = calc_lowerBoundClean(CleanCoefficientNeg, convertUnit(KNOTS, METERPERSECOND, tempValues.speed));
+        tempValues.n_upperBound = calc_upperBoundClean(CleanCoefficientPos, tempValues.speed);
+        tempValues.n_lowerBound = calc_lowerBoundClean(CleanCoefficientNeg, tempValues.speed);
         myCleanDiagram.push_back(tempValues);
     }
     /* Diagram for the Takeoff configuration */
     for (int i = 0 ; i <= theAcftPt->VDive + 5; i += step) {  // TODO(Ufermann): Determine maximum speed for TakeOff configuration
         tempValues.speed = i;
-        tempValues.n_upperBound = calc_upperBoundFlaps("Takeoff", FlapsCoefficientTO, convertUnit(KNOTS, METERPERSECOND, tempValues.speed));
+        tempValues.n_upperBound = calc_upperBoundFlaps("takeoff", FlapsCoefficientTO, tempValues.speed);
         tempValues.n_lowerBound = 0;
         myTakeoffDiagram.push_back(tempValues);
     }
     /* Diagram for the Landing configuration */
-    for (int i = 0 ; i <= theAcftPt->VDive + 5; i += step) {  // TODO(Ufermann): Determine maximum speed for landing configuration
+    for (int i = 0 ; i <= theAcftPt->VDive + convertUnit(KNOTS, METERPERSECOND, 5); i += step) {  // TODO(Ufermann): Determine maximum speed for landing configuration
         tempValues.speed = i;
-        tempValues.n_upperBound = calc_upperBoundFlaps("Landing", FlapsCoefficientLDG, convertUnit(KNOTS, METERPERSECOND, tempValues.speed));
+        tempValues.n_upperBound = calc_upperBoundFlaps("landing", FlapsCoefficientLDG, tempValues.speed);
         tempValues.n_lowerBound = 0;
         myLandingDiagram.push_back(tempValues);
     }
@@ -71,7 +71,7 @@ double VnDiagram::calc_upperBoundClean(double Coefficient, double v) {  // v in
         return 0;
     }
     // Upper v Limit
-    if (v >= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive)) {
+    if (v >= theAcftPt->VDive) {
         return 0;
     }
     // maximum n from config
@@ -90,14 +90,14 @@ double VnDiagram::calc_lowerBoundClean(double Coefficient, double v) {
         return 0;
     }
     // upper v limit
-    if (v >= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive)) {
+    if (v >= theAcftPt->VDive) {
         return 0;
     }
     // If v is interpolated linearly between VMO and VDive
-    if (v >= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VMO) && v <= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive)) {
+    if (v >= theAcftPt->VMO && v <= theAcftPt->VDive) {
         return mySettingsPt->myVnDiagramConstants.minNClean + ((0 - mySettingsPt->myVnDiagramConstants.minNClean) /
-                                                               (convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive) - convertUnit(KNOTS, METERPERSECOND, theAcftPt->VMO))) *
-                                                               (v - convertUnit(KNOTS, METERPERSECOND, theAcftPt->VMO));
+                                                               (theAcftPt->VDive - theAcftPt->VMO)) *
+                                                               (v - theAcftPt->VMO);
     }
     // n limit
     if (n <= mySettingsPt->myVnDiagramConstants.minNClean) {
@@ -109,9 +109,9 @@ double VnDiagram::calc_lowerBoundClean(double Coefficient, double v) {
 
 double VnDiagram::calc_upperBoundFlaps(const string &configuration, double Coefficient, double v) {
     double n(Coefficient * pow(v, 2));
-    if (configuration == "Takeoff") {
+    if (configuration == "takeoff") {
         // upper limit v
-        if (v >= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive)) {
+        if (v >= theAcftPt->VDive) {
             return 0;
         }
         // lower limit v
@@ -125,9 +125,9 @@ double VnDiagram::calc_upperBoundFlaps(const string &configuration, double Coeff
             return n;
         }
     }
-    if (configuration == "Landing") {
+    if (configuration == "landing") {
         // upper limit v
-        if (v >= convertUnit(KNOTS, METERPERSECOND, theAcftPt->VDive)) {
+        if (v >= theAcftPt->VDive) {
             return 0;
         }
         // lower limit v
diff --git a/performance_assessment/src/taw/defaultMethods/aircraft.cpp b/performance_assessment/src/taw/defaultMethods/aircraft.cpp
index ed3e5d15bcd587ef9a4d5a4091d9056469af6e9e..4877a530f0d5aff2154e7e45eda82483edbb7b16 100644
--- a/performance_assessment/src/taw/defaultMethods/aircraft.cpp
+++ b/performance_assessment/src/taw/defaultMethods/aircraft.cpp
@@ -34,102 +34,55 @@
 
 using std::endl;
 
-aircraft::aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const performance_assessment_settings &mySettings)
+aircraft::aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const std::shared_ptr<performance_assessment_settings> mySettingsPt)
     :
     rtIO(rtIO),
-    mySettingsPt(&mySettings),  // Pointer to the settings
-    polarXML(aixml::openDocument(rtIO->getIODir() + "/aeroData/" + rtIO->acxml.at("/aircraft_exchange_file/analysis/aerodynamics/polar/polar_file/value"))),
-    // acftName(rtIO->aircraft_type() + rtIO->aircraft_model()),
-    // MTOM(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_takeoff_mass/mass_properties/mass").read(rtIO->acxml).value()),
-    // MLM(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_landing_mass/mass_properties/mass").read(rtIO->acxml).value()),
-    // OME(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_zero_fuel_mass/mass_properties/mass").read(rtIO->acxml).value()),
-    // MFM(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_fuel_mass/mass_properties/mass").read(rtIO->acxml).value()),
-    // maxPayload(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_fuel_mass/mass_properties/mass").read(rtIO->acxml).value()),
-    // MMO(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelopemaximum_operating_mach_number")
-    //     .read(rtIO->acxml).value()),
-    // VMO(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelope/maximum_operating_velocity")
-    //     .read(rtIO->acxml).value()),
-    // MDive(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/speed/dive_mach_number").read(rtIO->acxml).value()),
-    // VDive(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/speed/dive_velocity").read(rtIO->acxml).value()),
-    // MInitialCruise(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/initial_cruise_Mach_number")
-    //     .read(rtIO->acxml).value()),
-    // hInitialCruise(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/initial_cruise_altitude")
-    //     .read(rtIO->acxml).value()),
-    // hMaxOperating(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelope/maximum_operating_altitude")
-    //     .read(rtIO->acxml).value()),
-    // timeToClimb(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/time_to_climb")
-    //     .read(rtIO->acxml).value()),
-    // designRange(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/analysis/mission/design_mission/range").read(rtIO->acxml).value()),
-    // designPayload(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/maximum_structrual_payload_mass")
-    //     .read(rtIO->acxml).value()),
-    // rangeMaxPayload(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_payload_at_maximum_takeoff_mass").read(rtIO->acxml).value()),
-    // rangeMaxFuel(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_fuel_at_maximum_takeoff_mass").read(rtIO->acxml).value()),
-    // payloadRangeMaxfuel(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/payload_maximum_fuel_at_maximum_takeoff_mass").read(rtIO->acxml).value()),
-    // rangeFerry(EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_maximum_fuel_empty").read(rtIO->acxml).value()),
-    // numberEngines(rtIO->acxml.getVector(("/aircraft_exchange_file/component_design/propulsion/specific/propulsion"), 1).size()),
-    // S_Wing(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/aerodynamics/reference_values/S_ref").read(rtIO->acxml).value()),
-    // optCL(EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/aerodynamics/lift_coefficients/C_LoptimumCruise").read(rtIO->acxml).value()),
-    // frictionCoefficient(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/additional_requirements/landing_gear/friction_coefficient").read(rtIO->acxml).value()),
-    // brakingCoefficient(EndnodeReadOnly<double>(
-    //     "/aircraft_exchange_file/requirements_and_specifications/requirements/additional_requirements/landing_gear/breaking_coefficient").read(rtIO->acxml).value()),
-    // // myEngine(rtIO->getEngineDataDir()),
-    myEngines(rtIO),
-    aero(rtIO->acxml, polarXML),
+    mySettingsPt(mySettingsPt),  // Pointer to the settings
     delta_isa(EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/" + this->getMissionType() + "/delta_ISA").read(rtIO->acxml).value()),
-    // myMission(string(rtIO->getIODir(), rtIO->acxml.at("/aircraft_exchange_file/requirements_and_specifications/mission_files/" + this->getMissionType() + "/value")))
-    myMission(rtIO->getIODir() + "/missionData/" + rtIO->acxml.at("/aircraft_exchange_file/requirements_and_specifications/mission_files/" + this->getMissionType() + "/value"),
-        delta_isa)
-    // engineInletD(checkBoundaries(rtIO->acxml.at("AcftExchangeFile/Propulsion/Engine@1/EngineDimensions/w_Engine"), 0., true, 20., true)), //Todo
-    // factorVLOF(1.1),
-    // factorV2(1.1)
-    {
-
+        "requirements_and_specifications/requirements/top_level_aircraft_requirements/" + this->getMissionType() + "/delta_ISA").read(rtIO->acxml).value()),
+    myMission(rtIO->getMissionDataDir() + "/" + rtIO->acxml.at("requirements_and_specifications/mission_files/" + this->getMissionType() + "_file/value"), delta_isa),
+    myEngines(rtIO),
+    polarXML(aixml::openDocument(rtIO->getAeroDataDir() + "/" + rtIO->acxml.at("analysis/aerodynamics/polar/polar_file/value"))),
+    aero(rtIO->acxml, polarXML) {
+    /* Constructor */
     // polarXML = aixml::openDocument(rtIO->getIODir() + "/aeroData/" + rtIO->acxml.at("/aircraft_exchange_file/analysis/aerodynamics/polar/polar_file/value"));
     acftName = rtIO->aircraft_type() + rtIO->aircraft_model();
     MTOM = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_takeoff_mass/mass_properties/mass").read(rtIO->acxml).value();
     MLM = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_landing_mass/mass_properties/mass").read(rtIO->acxml).value();
-    OME = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_zero_fuel_mass/mass_properties/mass").read(rtIO->acxml).value();
-    MFM =EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_fuel_mass/mass_properties/mass").read(rtIO->acxml).value();
-    maxPayload = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_fuel_mass/mass_properties/mass").read(rtIO->acxml).value();
+    OME = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/operating_mass_empty/mass_properties/mass").read(rtIO->acxml).value();
+    MFM = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_fuel_mass/mass_properties/mass").read(rtIO->acxml).value();
+    maxPayload = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_payload_mass/mass_properties/mass").read(rtIO->acxml).value();
     MMO = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelopemaximum_operating_mach_number")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_operating_mach_number")
         .read(rtIO->acxml).value();
     VMO = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelope/maximum_operating_velocity")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_operating_velocity")
         .read(rtIO->acxml).value();
-    MDive = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/speed/dive_mach_number").read(rtIO->acxml).value();
-    VDive = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/speed/dive_velocity").read(rtIO->acxml).value();
+    MDive = EndnodeReadOnly<double>("/assessment/performance/speed/dive_mach_number", 0.).read(rtIO->acxml).value();
+    VDive = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/speed/dive_velocity", 0.).read(rtIO->acxml).value();
     MInitialCruise = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/initial_cruise_Mach_number")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/initial_cruise_mach_number")
         .read(rtIO->acxml).value();
     hInitialCruise = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/initial_cruise_altitude")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/initial_cruise_altitude")
         .read(rtIO->acxml).value();
     hMaxOperating = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_flight_envelope/maximum_operating_altitude")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_operating_altitude")
         .read(rtIO->acxml).value();
     timeToClimb = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission_requirements/time_to_climb")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/time_to_climb")
         .read(rtIO->acxml).value();
     designRange = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/mission/design_mission/range").read(rtIO->acxml).value();
     designPayload = EndnodeReadOnly<double>("/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/maximum_structrual_payload_mass")
         .read(rtIO->acxml).value();
-    rangeMaxPayload = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_payload_at_maximum_takeoff_mass").read(rtIO->acxml).value();
-    rangeMaxFuel = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_fuel_at_maximum_takeoff_mass").read(rtIO->acxml).value();
-    payloadRangeMaxfuel = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/payload_maximum_fuel_at_maximum_takeoff_mass").read(rtIO->acxml).value();
-    rangeFerry = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_maximum_fuel_empty").read(rtIO->acxml).value();
+    rangeMaxPayload = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_payload_at_maximum_takeoff_mass", 0.).read(rtIO->acxml).value();
+    rangeMaxFuel = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_max_fuel_at_maximum_takeoff_mass", 0.).read(rtIO->acxml).value();
+    payloadRangeMaxfuel = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/payload_maximum_fuel_at_maximum_takeoff_mass",
+        0.).read(rtIO->acxml).value();
+    rangeFerry = EndnodeReadOnly<double>("/aircraft_exchange_file/assessment/performance/range/range_maximum_fuel_empty", 0.).read(rtIO->acxml).value();
     numberEngines = rtIO->acxml.getVector(("/aircraft_exchange_file/component_design/propulsion/specific/propulsion"), 1).size();
     S_Wing = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/aerodynamics/reference_values/S_ref").read(rtIO->acxml).value();
+    span = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/aerodynamics/reference_values/b").read(rtIO->acxml).value();
     optCL = EndnodeReadOnly<double>("/aircraft_exchange_file/analysis/aerodynamics/lift_coefficients/C_LoptimumCruise").read(rtIO->acxml).value();
     frictionCoefficient = EndnodeReadOnly<double>(
         "/aircraft_exchange_file/requirements_and_specifications/requirements/additional_requirements/landing_gear/friction_coefficient").read(rtIO->acxml).value();
@@ -139,23 +92,24 @@ aircraft::aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const performance_ass
     // myEngines(rtIO);
     // aero = aerodynamics(rtIO->acxml, polarXML);
     // myMission = string(rtIO->getIODir(), rtIO->acxml.at("/aircraft_exchange_file/requirements_and_specifications/mission_files/" + this->getMissionType() + "/value"));
-    engineInletD = checkBoundaries(rtIO->acxml.at("AcftExchangeFile/Propulsion/Engine@1/EngineDimensions/w_Engine"), 0., true, 20., true); //Todo
+
     factorVLOF = 1.1;
     factorV2 = 1.1;
 
-    /* Constructor */
     /* Requirements */
     myReqs.OEICruiseAltitude = EndnodeReadOnly<double>(
         "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_one_engine_operating_altitude")
         .read(rtIO->acxml).value();
-    myReqs.TOFL = EndnodeReadOnly<double>("/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/takeoff_distance/value")
+    myReqs.TOFL = EndnodeReadOnly<double>("/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/takeoff_distance")
         .read(rtIO->acxml).value();
-    myReqs.LDN = EndnodeReadOnly<double>("/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/landing_field_length/value")
+    myReqs.LDN = EndnodeReadOnly<double>("/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/landing_field_length")
         .read(rtIO->acxml).value();
     myReqs.approachSpeed = EndnodeReadOnly<double>(
-        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_approach_speed/value")
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_approach_speed")
         .read(rtIO->acxml).value();
-    myReqs.setRequiredClimbGradients(rtIO->acxml.at("/AcftExchangeFile/Requirements/DesignMission/ClimbGradients/"), this->numberEngines);
+    myReqs.icao_aerodrome_reference_code = EndnodeReadOnly<std::string>(
+        "/aircraft_exchange_file/requirements_and_specifications/requirements/top_level_aircraft_requirements/icao_aerodrome_reference_code").read(rtIO->acxml).value();
+    this->myReqs.setRequiredClimbGradients(this->numberEngines);
     myChecks.TOFL = false;
     myChecks.LDN = false;
     myChecks.vApproach = false;
@@ -184,18 +138,23 @@ aircraft::aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const performance_ass
     myEnergyProviders.energyCarrierID_landing =
         EndnodeReadOnly<int>("energy_carrier_ID").read(rtIO->acxml.at("requirements_and_specifications/design_specification/propulsion/energy_provider/landing")).value();
 
-
-    //Determination of V2 for minimum climb gradients
+    // Determination of V2 for minimum climb gradients
     factorV2 = this->getMinimumFactorForV2();
-    if (factorV2 <= 1.128) { //Par CS25.107: v2 !> 1.2 * vS or 1.128 * vSR (vS1g)
+    if (factorV2 <= 1.128) {  // Par CS25.107: v2 !> 1.2 * vS or 1.128 * vSR (vS1g)
         factorVLOF = factorV2;
     } else {
         factorVLOF = 1.128;
     }
+    // Span limit
+    decipher_icao_ref_code(myReqs.icao_aerodrome_reference_code);  // TODO(hansmann): Move span check somewhere else (e.g into factory)
+    if (span < myReqs.span_limit) {
+        myChecks.span_limit = true;
+    } else {
+        myChecks.span_limit = false;
+    }
+
     /* Set atmosphere */
     this->atm.setAtmosphere(0., ISA_TEMPERATURE + myMission.deltaISA, ISA_PRESSURE);
-
-
 }
 
 aircraft::~aircraft() {
@@ -205,9 +164,9 @@ aircraft::~aircraft() {
 string aircraft::getMissionType() {
     string missionType;
     if (!mySettingsPt->designForMTOM && (mySettingsPt->mySwitches.doFuelPlanning && mySettingsPt->useStudyMissionForAnalysis)) {
-        missionType = "study_mission_file";
+        missionType = "study_mission";
     } else {
-        missionType = "design_mission_file";
+        missionType = "design_mission";
     }
     return missionType;
 }
@@ -217,7 +176,7 @@ double aircraft::getReferenceStallSpeed(const double& aircraftMass, const double
 }
 
 double aircraft::v1gS_Clean(double Mass, double Altitude) {
-    return 1.0 * this->getReferenceStallSpeed(Mass, Altitude, this->aero.getCLmax(0., "Clean"));
+    return 1.0 * this->getReferenceStallSpeed(Mass, Altitude, this->aero.getCLmax(0., "clean"));
 }
 
 double aircraft::v1gS_TO(double Mass, double Altitude) {
@@ -244,14 +203,16 @@ double aircraft::ROC(double Mass, double Alt, double Mach, double fACC, string C
                      const aerodynamics& thisAERO) {
     // s. Scheiderer P.230 ff.
     // Determine engine carrier for climb phase
-    int energy_carrier_id =  // TODO(hansmann): Consideration of varying energy carriers and operating strategies (shall be covered by engine.lib or multi_engine_prop.lib)
-        EndnodeReadOnly<int>("energy_carrier_ID").read(rtIO->acxml.at("requirements_and_specifications/design_specification/propulsion/energy_provider/climb")).value();
+    int energy_carrier_id = 0;  // TODO(hansmann): Consideration of varying energy carriers and operating strategies (shall be covered by engine.lib or multi_engine_prop.lib)
     myEngines.calculate_N1_with_penalties(energy_carrier_id, Alt, Mach, atm, 1.0, Rating, bleedOff, shaftOff);  // Set operating point
     double ac_thrust = myEngines.get_thrust_aircraft(energy_carrier_id);
     double tempDrag(thisAERO.getCruiseDrag(Mach, Alt, 0.0, Mass, Configuration, atm));
     if (OEI == true) {
         ac_thrust = ac_thrust * static_cast<double>(numberEngines - 1) / static_cast<double>(numberEngines);
-        tempDrag += calcWindMillingDrag(Mach, Alt);
+        tempDrag += calcWindMillingDrag(0, 0, Mach, Alt);
+    }
+    if (std::isnan(tempDrag)) {
+        tempDrag = ac_thrust;  // Hansmann: Temporary workaround in case the polars deliver a NaN because of missing data
     }
     double tempGamma = asin((ac_thrust - tempDrag) / (G_FORCE * Mass) / (1. + fACC));  // because not with const. TAS but with const. IAS or Ma is risen
                                                                                     //--> Introduction of facc: Commutation factor: facc = V/g * dV/dh; see table 11.1 p.232
@@ -262,45 +223,83 @@ double aircraft::ROC(double Mass, double Alt, double Mach, double fACC, string C
     return tempROC;
 }
 
-double aircraft::calcWindMillingDrag(double Mach, double Altitude) {
+double aircraft::calcWindMillingDrag(int energy_carrier_id, int engine_id, double Mach, double Altitude) {
+    double engine_inlet_diameter = myEngines.get_propulsors(energy_carrier_id).at(engine_id).engine.get_engine_dimensions().diameter;
     double tempCdWMJ(0.0);
-    tempCdWMJ = 0.0785 * pow(engineInletD, 2.) / S_Wing
-                + 2. / (1. + 0.16 * pow(Mach, 2.)) * 0.92 * (1.0 - 0.92) * (PI / 4. * pow(engineInletD, 2.)) / S_Wing;
+    tempCdWMJ = 0.0785 * pow(engine_inlet_diameter, 2.) / S_Wing
+                + 2. / (1. + 0.16 * pow(Mach, 2.)) * 0.92 * (1.0 - 0.92) * (PI / 4. * pow(engine_inlet_diameter, 2.)) / S_Wing;
     // tempCdWMJ = 0.75 * tempCdWMJ;
     return 0.5 * atm.getDensity(Altitude) * pow(Mach * atm.getSpeedOfSound(Altitude), 2.) * S_Wing * tempCdWMJ;
 }
 
 double aircraft::getMinimumFactorForV2() {
     double altitude(convertUnit(FOOT, METER, 400.));  // End of 2nd climb segment for standard departure according to FAR
-    double factor(1.); // Start value
+    double factor(1.);  // Start value
     double tempClimbGradient(NAN);
     do {
         factor += 0.0025;
         double Mach = factor * this->v1gS_TO(this->MTOM, altitude) / this->atm.getSpeedOfSound(altitude);
         double tempTAS = convertUnit(MACH, TRUEAIRSPEED, altitude, this->atm, Mach);
         //this->ROC(..., true, ...): OEI active, which is a requirement for minimum climb gradient in 2nd climb segment
-        double tempROC = this->ROC(this->MTOM, altitude, Mach, 0.0, "Climb", "TO", this->myMission.bleedOffTO,  this->myMission.shaftOffTO, true, this->aero);
+        double tempROC = this->ROC(this->MTOM, altitude, Mach, 0.0, "climb", "takeoff", this->myMission.bleedOffTO,  this->myMission.shaftOffTO, true, this->aero);
         tempClimbGradient = tempROC / tempTAS * 100.;
     } while (tempClimbGradient < myReqs.climbGradientSecondTOSegment);
     return factor;
 }
 
-void aircraft::Requirements::setRequiredClimbGradients(const node& climbGradientRequirement, const uint16_t& numberOfEngines) {
+void aircraft::Requirements::setRequiredClimbGradients(const uint16_t& numberOfEngines) {
     if (numberOfEngines == 1) {
         myRuntimeInfo->err << "Climbing requirements are invalid for a single engine aircraft!" << endl;
         exit(1);
     } else if (numberOfEngines == 2) {
-        this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 2.4, true, 10., true);
-        this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.2, true, 10., true);
-        this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.1, true, 10., true);
+        // this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 2.4, true, 10., true);
+        // this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.2, true, 10., true);
+        // this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.1, true, 10., true);
+        this->climbGradientSecondTOSegment = 2.4;
+        this->climbGradientFinalTOSegment = 1.2;
+        this->climbGradientApproachOEI = 2.1;
     } else if (numberOfEngines == 3) {
-        this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 2.7, true, 10., true);
-        this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.5, true, 10., true);
-        this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.4, true, 10., true);
+        // this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 2.7, true, 10., true);
+        // this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.5, true, 10., true);
+        // this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.4, true, 10., true);
+        this->climbGradientSecondTOSegment = 2.7;
+        this->climbGradientFinalTOSegment = 1.5;
+        this->climbGradientApproachOEI = 2.4;
     } else if (numberOfEngines >= 4) {
-        this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 3.0, true, 10., true);
-        this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.7, true, 10., true);
-        this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.7, true, 10., true);
+        // this->climbGradientSecondTOSegment = checkBoundaries(climbGradientRequirement.at("secondTOsegment"), 3.0, true, 10., true);
+        // this->climbGradientFinalTOSegment = checkBoundaries(climbGradientRequirement.at("finalTOsegment"), 1.7, true, 10., true);
+        // this->climbGradientApproachOEI = checkBoundaries(climbGradientRequirement.at("approachOEI"), 2.7, true, 10., true);
+        this->climbGradientSecondTOSegment = 3.0;
+        this->climbGradientFinalTOSegment = 1.7;
+        this->climbGradientApproachOEI = 2.7;
+    }
+    this->climbGradientApproachAEO = 3.2;
+}
+
+void aircraft::decipher_icao_ref_code(const std::string icao_ref_code) {
+    if (icao_ref_code.length() != 6) {  // TODO(hansmann): Add checks for other letters
+        throw std::invalid_argument("ICAO ref code malformed (length)!");
+    }
+    // First letter: Field length
+    // (...)
+    // Second letter: Wing span
+    if (icao_ref_code[1] == 'A') {
+        myReqs.span_limit = 15.;
+    } else if (icao_ref_code[1] == 'B') {
+        myReqs.span_limit = 24.;
+    } else if (icao_ref_code[1] == 'C') {
+        myReqs.span_limit = 36.;
+    } else if (icao_ref_code[1] == 'D') {
+        myReqs.span_limit = 52.;
+    } else if (icao_ref_code[1] == 'E') {
+        myReqs.span_limit = 65.;
+    } else if (icao_ref_code[1] == 'F') {
+        myReqs.span_limit = 80.;
+    } else {
+        throw std::invalid_argument("ICAO ref code pos 2 malformed!");
     }
-    this->climbGradientApproachAEO = checkBoundaries(climbGradientRequirement.at("approachAEO"), 3.2, true, 10., true);
+    // Third letter: Tail height
+    // (...)
+    // Fourth letter: Approach speed
+    // (...)
 }
diff --git a/performance_assessment/src/taw/defaultMethods/aircraft.h b/performance_assessment/src/taw/defaultMethods/aircraft.h
index e621e65a5d9d12bdc00e8a52bb6ac5fe4af7333e..ee1204b0b40568791ae84c63085bf872af832099 100644
--- a/performance_assessment/src/taw/defaultMethods/aircraft.h
+++ b/performance_assessment/src/taw/defaultMethods/aircraft.h
@@ -14,8 +14,8 @@
     You should have received a copy of the GNU General Public License
     along with UNICADO.  If not, see <http://www.gnu.org/licenses/>.
 */
-#ifndef performance_assessment_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
-#define performance_assessment_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
+#ifndef PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
+#define PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
 
 #include <string>
 #include <memory>
@@ -39,7 +39,7 @@ using std::string;
 class aircraft {
  public:
     const std::shared_ptr<RuntimeIO>& rtIO;
-    const performance_assessment_settings *mySettingsPt; /**< pointer to the mySettings object */
+    const std::shared_ptr<performance_assessment_settings> mySettingsPt; /**< pointer to the mySettings object */
     node& polarXML; /**< Address of aixml object for the polar file */
     
     string acftName;/**<Name of the aircraft*/
@@ -95,6 +95,7 @@ class aircraft {
     energyProvider myEnergyProviders;
 
     double S_Wing; /**< Wing reference area (m2) */
+    double span; /**< Wing span (m) */
     double optCL; /**< Aircraft lift coefficient at cruise Mach number and highest lift to drag ratio (-) */
 
     /* Landing Gear Properties */
@@ -110,7 +111,7 @@ class aircraft {
         *   \param climbGradientRequirement const node: constant reference to aircraft node of Requirement/ClimbGradients [-]
         *   \param numberOfEngines const uint16_t: constant reference to aircraft numberEngines [-]
         */
-        void setRequiredClimbGradients(const node& climbGradientRequirement, const uint16_t& numberOfEngines);
+        void setRequiredClimbGradients(const uint16_t& numberOfEngines);
         // Member variables
         double OEICruiseAltitude;               /**< Maximum operating altitude with one engine inoperative (ft) */
         double TOFL;                            /**< Take-off field length (m) */
@@ -120,6 +121,9 @@ class aircraft {
         double climbGradientApproachOEI;        /**< Required climb gradient for go-around during approach and one engine inoperative(%) */
         double climbGradientApproachAEO;        /**< Required climb gradient for go-around during approach (%) */
         double approachSpeed;                   /**< Design approach speed (kts) */
+        string icao_aerodrome_reference_code;   // ICAO reference code - code_number 1-4 (field length) + code_letter A-F (wing span limits) +
+            // faa ADG code number I-VI (wing span limits + tail height limits) + Aircraft Approach Category letter A-D */
+        double span_limit;                      /**< Maximum span limit according to ICAO ref code */
     };
     Requirements myReqs;
 
@@ -139,6 +143,7 @@ class aircraft {
         bool climbGradientFinalSegment; /**< Switch if landing field length can be maintained (-) */
         bool climbGradientApproachOEI; /**< Switch if landing field length can be maintained (-) */
         bool climbGradientApproachAEO; /**< Switch if landing field length can be maintained (-) */
+        bool span_limit; /**< Switch indicating of span limit is maintained (-) */
     };
     requirementChecks myChecks;
 
@@ -199,6 +204,7 @@ class aircraft {
     */
     double vAPPR(double Mass, double Altitude);
 
+    void decipher_icao_ref_code(const std::string icao_ref_code);
 
     /** \brief Function to calculate the rate of climb
     * \param Mass Aircraft mass (kg)
@@ -208,7 +214,7 @@ class aircraft {
     * \param Configuration Aerodynamic configuration (-)
     * \param Rating Engine rating (-)
     * \param bleedOff Current bleed air offtake (kg/s)
-    * \param shaftOff Current shaft power offtake (kW)
+    * \param shaftOff Current shaft power offtake (W)
     * \param OEI Switch if one engine is inoperative (-)
     * \param thisAERO object of the aerodynamics class
     * \return rate of climb (m/s)
@@ -222,20 +228,18 @@ class aircraft {
     * \param Altitude Aircraft altitude (m)
     * \return wind milling drag (N)
     */
-    double calcWindMillingDrag(double Mach, double Altitude);
+    double calcWindMillingDrag(int energy_carrier_id, int engine_id, double Mach, double Altitude);
 
     /** \brief Constructor for an aircraft object
-    * \param mySettings Address to the performance_assessment_settings object
+    * \param mySettingsPt Address to the performance_assessment_settings object
     */
-    explicit aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const performance_assessment_settings &mySettings);
+    explicit aircraft(const std::shared_ptr<RuntimeIO>& rtIO, const std::shared_ptr<performance_assessment_settings> mySettingsPt);
 
     /** \brief Destructor for an aircraft object
     */
     virtual ~aircraft();
 
  private:
-    double engineInletD; /**< Width of the engine (m) */
-
     double factorVLOF; /**< Factor to calculate the take-off safety speed (-) */
     double factorV2; /**< Factor to calculate the final take-off speed (-) */
 
@@ -247,4 +251,4 @@ class aircraft {
     double getMinimumFactorForV2();
 };
 
-#endif // performance_assessment_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
+#endif  // PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_AIRCRAFT_H_
diff --git a/performance_assessment/src/taw/defaultMethods/ceilingPerformance/low_fidelity/ceilingPerformance.cpp b/performance_assessment/src/taw/defaultMethods/ceilingPerformance/low_fidelity/ceilingPerformance.cpp
index 2ada5578cd3a5e77a4566d3abdcc45cfa6362b64..7eecd3133088a4734a263bebf53eaceddbc9ef19 100644
--- a/performance_assessment/src/taw/defaultMethods/ceilingPerformance/low_fidelity/ceilingPerformance.cpp
+++ b/performance_assessment/src/taw/defaultMethods/ceilingPerformance/low_fidelity/ceilingPerformance.cpp
@@ -40,9 +40,9 @@ void ceilingPerformance::doCeilingCalculation() {
         double lastAltMax(0.0);
         double lastAltMaxOEI(0.0);
         if (i == 0) {
-            lastAltService = 15000.;
-            lastAltMax = 15000.;
-            lastAltMaxOEI = 15000.;
+            lastAltService = 0.; //15000.;
+            lastAltMax = 0.; //15000.;
+            lastAltMaxOEI = 0.; //15000.;
         } else {
             lastAltService = theCeiling.back().serviceCeiling;
             lastAltMax = theCeiling.back().maxCeiling;
@@ -51,9 +51,9 @@ void ceilingPerformance::doCeilingCalculation() {
         theCeiling.push_back(dataCeiling());
         theCeiling.back().Mass = grossMass;
         theCeiling.back().Mach = theAcftPt->MInitialCruise;
-        theCeiling.back().serviceCeiling = iterateForCeiling(grossMass, 500. * 0.3048 / 60., theCeiling.back().Mach, lastAltService, false);
+        theCeiling.back().serviceCeiling = iterateForCeiling(grossMass, convertUnit(FOOT, METER, 500.) / 60., theCeiling.back().Mach, lastAltService, false);
         theCeiling.back().maxCeiling = iterateForCeiling(grossMass, 0.0, theCeiling.back().Mach, lastAltMax, false);
-        theCeiling.back().maxCeilingOEI = iterateForCeiling(0.925 * grossMass, 500.0 * 0.3048 / 60., theCeiling.back().Mach, lastAltMaxOEI, true);
+        theCeiling.back().maxCeilingOEI = iterateForCeiling(0.925 * grossMass, convertUnit(FOOT, METER, 500.) / 60., theCeiling.back().Mach, lastAltMaxOEI, true);
     }
     theAcftPt->myChecks.initCruiseAlt   = checkForInitialCruiseAlt();
     theAcftPt->myChecks.initCruiseM     = checkForInitialCruiseMach();
@@ -62,41 +62,46 @@ void ceilingPerformance::doCeilingCalculation() {
 }
 
 double ceilingPerformance::iterateForCeiling(double Mass, double ROC, double Mach, double startAlt, bool OEI) {
-    double maxROC(-10.0);
-    while (ROC > maxROC && startAlt >= 0.0) {
+    double maxROC(10.0);
+    double max_engine_deck_altitude = 14000.;  // TODO(hansmann): Engine deck data not sufficient if ceiling height >14000m (especially relevant for very OME-like weight scenario)
+    double altitude_increment = 50.;
+    while (ROC < maxROC && startAlt <= max_engine_deck_altitude) {
         try {
             if (OEI == true) {
                 Mach = sqrt((2.*Mass * G_FORCE)
                             / (theAcftPt->atm.getDensity(startAlt) * theAcftPt->S_Wing * theAcftPt->aero.CLoptimumCruise))
                             / theAcftPt->atm.getSpeedOfSound(startAlt);
-                // cout << "Mach(Ceiling): " << Mach << "Startalt = "<<startAlt<<endl;
                 if (Mach > theAcftPt->MMO) {
                     Mach = theAcftPt->MMO;
                 }
                 maxROC = theAcftPt->ROC(Mass, startAlt, Mach, 0.0,
-                                        "Clean", "MaxCont", theAcftPt->myMission.bleedOffCr,  theAcftPt->myMission.shaftOffCr, true,
+                                        "clean", "maximum_continuous", theAcftPt->myMission.bleedOffCr,  theAcftPt->myMission.shaftOffCr, true,
                                         theAcftPt->aero);
             } else {
                 maxROC = theAcftPt->ROC(Mass, startAlt, Mach, 0.0,
-                                        "Clean", "MaxCont", theAcftPt->myMission.bleedOffCr,  theAcftPt->myMission.shaftOffCr, false,
+                                        "clean", "maximum_continuous", theAcftPt->myMission.bleedOffCr,  theAcftPt->myMission.shaftOffCr, false,
                                         theAcftPt->aero);
             }
-            startAlt = startAlt - 50.;
-        } catch (const char * text) {
+            startAlt = startAlt + altitude_increment;
+        } catch (std::out_of_range e) {
             myRuntimeInfo->info << "CL_max reached. Stop Ceiling calculation" << endl;
             break;
         }
     }
+    if (startAlt >= max_engine_deck_altitude - altitude_increment) {
+        myRuntimeInfo->warn << "Ceiling_performance evaluation reached max altitude ("<< startAlt-altitude_increment <<" m) evaluable by the engine deck." << endl;
+        myRuntimeInfo->warn << "Ceiling height results might be questionable for the considered A/C mass = "<< Mass << " kg." << endl;
+    }
     return startAlt;
 }
 
 bool ceilingPerformance::checkForInitialCruiseAlt() {
     bool Check(false);
     // Check whether service ceiling is sufficient
-    if (theCeiling.back().serviceCeiling < theAcftPt->hInitialCruise * 0.3048) {
+    if (theCeiling.back().serviceCeiling < theAcftPt->hInitialCruise) {
         myRuntimeInfo->out << "Performance too low, Initial Cruise Altitude cannot be achieved with MTOM!" << endl;
-        myRuntimeInfo->out << "Initial Cruise Altitude: " << theAcftPt->hInitialCruise << " ft" << endl;
-        myRuntimeInfo->out << "Service Ceiling at MTOM: " << theCeiling.back().serviceCeiling / 0.3048 << " ft" << endl;
+        myRuntimeInfo->out << "Initial Cruise Altitude: " << theAcftPt->hInitialCruise << " m" << endl;
+        myRuntimeInfo->out << "Service Ceiling at MTOM: " << theCeiling.back().serviceCeiling << " m" << endl;
         Check = false;
     } else {
         Check = true;
@@ -107,13 +112,13 @@ bool ceilingPerformance::checkForInitialCruiseAlt() {
 bool ceilingPerformance::checkForInitialCruiseMach() {
     bool Check(false);
     // Check if the flyable initial Cruise Mach number is sufficient
-    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_cruise, theAcftPt->hInitialCruise * 0.3048, theAcftPt->MInitialCruise,
-                                                        theAcftPt->atm, 1., "MaxCont", theAcftPt->myMission.bleedOffCr, theAcftPt->myMission.shaftOffCr);
-    double tempDrag(theAcftPt->aero.getCruiseDrag(theAcftPt->MInitialCruise, theAcftPt->hInitialCruise * 0.3048, 0.0, theCeiling.back().Mass, "Clean", theAcftPt->atm));
-    if (tempDrag / 1000. > theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise)) {
+    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_cruise, theAcftPt->hInitialCruise, theAcftPt->MInitialCruise,
+                                                        theAcftPt->atm, 1., "maximum_continuous", theAcftPt->myMission.bleedOffCr, theAcftPt->myMission.shaftOffCr);
+    double tempDrag(theAcftPt->aero.getCruiseDrag(theAcftPt->MInitialCruise, theAcftPt->hInitialCruise, 0.0, theCeiling.back().Mass, "clean", theAcftPt->atm));
+    if (tempDrag > theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise)) {
         myRuntimeInfo->out << "Performance too low, Initital Cruise Mach number cannot be achieved with MTOM!" << endl;
-        myRuntimeInfo->out << "Missing engine power: " << tempDrag / 1000. - theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise)
-            / 1000. << " kN" << endl;
+        myRuntimeInfo->out << "Missing engine power: " << tempDrag - theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise)
+             << " N" << endl;
         Check = false;
     } else {
         Check = true;
@@ -124,10 +129,10 @@ bool ceilingPerformance::checkForInitialCruiseMach() {
 bool ceilingPerformance::checkForMaxAlt() {
     bool Check(false);
     // Check whether the maximum flight altitude can be reached.
-    if (theCeiling.at(0).serviceCeiling < theAcftPt->hMaxOperating * 0.3048) {
+    if (theCeiling.at(0).serviceCeiling < theAcftPt->hMaxOperating) {
         myRuntimeInfo->err << "Performance too low, Max. Operating Altitude cannot be achieved!" << endl;
-        myRuntimeInfo->err << "Max. Operating Altitude: " << theAcftPt->hMaxOperating << " ft" << endl;
-        myRuntimeInfo->err << "Service Ceiling at MTOM: " << theCeiling.at(0).serviceCeiling / 0.3048 << " ft" << endl;
+        myRuntimeInfo->err << "Max. Operating Altitude: " << theAcftPt->hMaxOperating << " m" << endl;
+        myRuntimeInfo->err << "Service Ceiling at MTOM: " << theCeiling.at(0).serviceCeiling / 0.3048 << " m" << endl;
         Check = false;
     } else {
         Check = true;
@@ -137,10 +142,10 @@ bool ceilingPerformance::checkForMaxAlt() {
 
 bool ceilingPerformance::checkForOEICruiseAlt() {
     bool Check(false);
-    if (theCeiling.back().maxCeilingOEI < theAcftPt->myReqs.OEICruiseAltitude * 0.3048) {
+    if (theCeiling.back().maxCeilingOEI < theAcftPt->myReqs.OEICruiseAltitude) {
         myRuntimeInfo->out << "Performance too low, OEI max. Altitude cannot be achieved with MTOM!" << endl;
-        myRuntimeInfo->out << "Req. OEI max. Altitude: " << theAcftPt->myReqs.OEICruiseAltitude << " ft" << endl;
-        myRuntimeInfo->out << "Service Ceiling at MTOM: " << theCeiling.back().maxCeilingOEI / 0.3048 << " ft" << endl;
+        myRuntimeInfo->out << "Req. OEI max. Altitude: " << theAcftPt->myReqs.OEICruiseAltitude << " m" << endl;
+        myRuntimeInfo->out << "Service Ceiling at MTOM: " << theCeiling.back().maxCeilingOEI / 0.3048 << " m" << endl;
         Check = false;
     } else {
         Check = true;
diff --git a/performance_assessment/src/taw/defaultMethods/enginePerformance/low_fidelity/enginePerformance.cpp b/performance_assessment/src/taw/defaultMethods/enginePerformance/low_fidelity/enginePerformance.cpp
index 97d8d7a6f3bf726e973562531153a12ad73d96e3..e65979f7fcdee479867ed54df25144cb6053c281 100644
--- a/performance_assessment/src/taw/defaultMethods/enginePerformance/low_fidelity/enginePerformance.cpp
+++ b/performance_assessment/src/taw/defaultMethods/enginePerformance/low_fidelity/enginePerformance.cpp
@@ -23,7 +23,8 @@ namespace low {
 
 enginePerformance::enginePerformance(std::shared_ptr<aircraft> theAircraftPt)
     :
-    maxThrust(0.0) {
+    maxThrust(0.0),
+    theAircraftPt(theAircraftPt) {
     // ctor
 }
 enginePerformance::~enginePerformance() {
@@ -41,9 +42,8 @@ void enginePerformance::doEngineCalculation(vector<string> theRating) {
                 theAircraftPt->myEngines.calculate_N1_with_penalties(theAircraftPt->myEnergyProviders.energyCarrierID_cruise, alt, mach, theAircraftPt->atm, 1.,
                     theRatingEngine.back().Rating, 0., 0.);
                 theRatingEngine.back().theParameter.back().Mach.push_back(mach);
-                theRatingEngine.back().theParameter.back().Thrust.push_back(theAircraftPt->myEngines.get_thrust_aircraft(theAircraftPt->myEnergyProviders.energyCarrierID_cruise)
-                    / 2);
-                theRatingEngine.back().theParameter.back().SFC.push_back(theAircraftPt->myEngines.get_thrust_aircraft(theAircraftPt->myEnergyProviders.energyCarrierID_cruise)
+                theRatingEngine.back().theParameter.back().Thrust.push_back(theAircraftPt->myEngines.get_thrust_aircraft(theAircraftPt->myEnergyProviders.energyCarrierID_cruise));
+                theRatingEngine.back().theParameter.back().SFC.push_back(theAircraftPt->myEngines.get_aircraft_fuelflow(theAircraftPt->myEnergyProviders.energyCarrierID_cruise)
                     / theAircraftPt->myEngines.get_thrust_aircraft(theAircraftPt->myEnergyProviders.energyCarrierID_cruise));
             }
         }
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/abstractFuelPlanning.h b/performance_assessment/src/taw/defaultMethods/fuelPlanning/abstractFuelPlanning.h
index 48758309b58dcf617dfda8e69fe3f2bd37d8d47a..0a2af3b8d146906a370cc0e088022b3e5c85ae49 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/abstractFuelPlanning.h
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/abstractFuelPlanning.h
@@ -28,7 +28,7 @@ class performance_assessment_factory;
 /* Abstract class of fuel planning */
 // The purpose of this class is to be inherited by all "fuelPlanning" (high/mid/.../low) methods.
 
-class abstractFuelPlanning {
+class abstractFuelPlanning : public std::enable_shared_from_this<abstractFuelPlanning> {
  public:
     virtual ~abstractFuelPlanning() { }
     virtual void doFuelPlanning() = 0;
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.cpp b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.cpp
index 04942411c82298b90b5c0d5e905959cdf4891e01..ecb47ebcbf2686b03fa36fbf3be3c616030ca721 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.cpp
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.cpp
@@ -14,16 +14,17 @@
     You should have received a copy of the GNU General Public License
     along with UNICADO.  If not, see <http://www.gnu.org/licenses/>.
 */
+
 #include "flightSimulator.h"
 
 using std::endl;
 using std::string;
 
-flightSimulator::flightSimulator(aircraft *theAircraft)
+flightSimulator::flightSimulator(std::shared_ptr<aircraft> anAcftPtr)
     :
-    theAcftPt(theAircraft),
+    theAcftPt(anAcftPtr),
     climbAltSteps(50.),
-    cruiseSteps(10.) {
+    cruiseSteps(10000.) {
     //ctor
 }
 
@@ -32,8 +33,8 @@ flightSimulator::~flightSimulator() {
 }
 
 double flightSimulator::calcTaxiFuel(double taxiTime) {
-    double totalTaxiTime = convertUnit(MINUTE, SECOND, taxiTime); // in s
-    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_taxi, 0., 0., theAcftPt->atm, 1., "Idle", theAcftPt->myMission.bleedOffTO,
+    double totalTaxiTime = taxiTime; // in s
+    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_taxi, 0., 0., theAcftPt->atm, 1., "idle", theAcftPt->myMission.bleedOffTO,
         theAcftPt->myMission.shaftOffTO);
     double theTaxiFuel = totalTaxiTime * theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_taxi);
     return theTaxiFuel;
@@ -68,17 +69,18 @@ void   flightSimulator::getClimbFuel(double grossMass, double startAlt, double e
 void flightSimulator::calcClimbFuel(double massAC, double H0, double H1, double Mach0, double Mach1, const string& config, string rating, double bleed, double shaft,
                                     aerodynamics AERO, double *theTime, double *theFuel, double *theDistance) {
     /* minimum climb performance */
-    double a_minROC = convertUnit(FOOT, METER, theAcftPt->hInitialCruise) / theAcftPt->timeToClimb; //minimum ROC to maintain TTC requirement [m/s]
-    double m_minROC = (a_minROC - convertUnit(FOOTPERMINUTE, METERPERSECOND, 500.)) / (0. - convertUnit(FOOT, METER, theAcftPt->hInitialCruise));
+    double a_minROC = theAcftPt->hInitialCruise / theAcftPt->timeToClimb; //minimum ROC to maintain TTC requirement [m/s]
+    // double m_minROC = (a_minROC - convertUnit(FOOTPERMINUTE, METERPERSECOND, 500.)) / (0. - theAcftPt->hInitialCruise);
+    double m_minROC = (a_minROC - convertUnit(FOOTPERMINUTE, METERPERSECOND, 500.)) / (0. - theAcftPt->hInitialCruise);
 
     double minimumROC0 = m_minROC * H0 + a_minROC;
     double minimumROC1 = m_minROC * H1 + a_minROC;
     // estimate according to Raymer, p.463 and equation 17.48-17.49
     double ROC0 = theAcftPt->ROC(massAC, H0, Mach0, 0.0, config, rating, bleed, shaft, false, AERO);
     double ROC1 = theAcftPt->ROC(massAC, H1, Mach1, 0.0, config, rating, bleed, shaft, false, AERO);
-    //Increase the setting to "MaxCont"
+    //Increase the setting to "maximum_continuous"
     if (ROC0 <= minimumROC0 || ROC1 <= minimumROC1) {
-        rating = "MaxCont";
+        rating = "maximum_continuous";
         ROC0 = theAcftPt->ROC(massAC, H0, Mach0, 0.0, config, rating, bleed, shaft, false, AERO);
         ROC1 = theAcftPt->ROC(massAC, H1, Mach1, 0.0, config, rating, bleed, shaft, false, AERO);
         if (ROC0 <= 0. || ROC1 <= 0.) {
@@ -165,7 +167,7 @@ double flightSimulator::calcThrustForROC(double massOfAC, double H, double Mach,
                                 (theAcftPt->atm.getDensity(H) * pow(Mach * theAcftPt->atm.getSpeedOfSound(H), 2.) * theAcftPt->S_Wing);
     double reqDrag = theAERO.getCLDrag(Mach, H, regLiftCoefficient, theConfiguration, theAcftPt->atm);
     double reqThrust = reqDrag + (G_FORCE * massOfAC) * theROC / (Mach * theAcftPt->atm.getSpeedOfSound(H));
-    return convertUnit(NEWTON, KILO, NEWTON, reqThrust); //kN
+    return reqThrust; //N
 }
 
 /* Accelerate Fuel */
@@ -180,19 +182,20 @@ void flightSimulator::getAccelerateFuel(double grossMass, double Altitude, doubl
     // assumption of a constant acceleration -> linear increase in velocity
     double avgMach = 0.5 * (startMach + endMach);
     theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, avgMach, theAcftPt->atm, 1.0, Rating, bleedOff, shaftOff);
-    double avgAcc = (1. / grossMass) * (convertUnit(KILO, NEWTON, NEWTON, theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise))
-                                          - theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm));
-    if (avgAcc <= 0. && Rating == "Cruise") {
-        Rating = "Climb";
+    double average_thrust = theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
+    double average_drag = theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm);
+    double avgAcc = (1. / grossMass) * (average_thrust - average_drag);
+    if (avgAcc <= 0. && Rating == "cruise") {
+        Rating = "climb";
         theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, avgMach, theAcftPt->atm, 1.0, Rating, bleedOff, shaftOff);
-        avgAcc = (1. / grossMass) * (convertUnit(KILO, NEWTON, NEWTON, theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise))
-                                       - theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm));
+        avgAcc = (1. / grossMass) * (theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise))
+                                       - theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm);
     }
-    if (avgAcc <= 0. && Rating == "Climb") {
-        Rating = "MaxCont";
+    if (avgAcc <= 0. && Rating == "climb") {
+        Rating = "maximum_continuous";
         theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_climb, Altitude, avgMach, theAcftPt->atm, 1.0, Rating, bleedOff, shaftOff);
-        avgAcc = (1. / grossMass) * (convertUnit(KILO, NEWTON, NEWTON, theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_climb))
-                                       - theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm));
+        avgAcc = (1. / grossMass) * (theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_climb))
+                                       - theAero.getCruiseDrag(avgMach, Altitude, 0.0, grossMass, Config, theAcftPt->atm);
     }
     if (avgAcc <= 0.) {
         myRuntimeInfo->err << "No acceleration possible!" << endl;
@@ -205,17 +208,17 @@ void flightSimulator::getAccelerateFuel(double grossMass, double Altitude, doubl
         exit(1);
     }
     *accTime = fabs(endMach - startMach) * theAcftPt->atm.getSpeedOfSound(Altitude) / avgAcc;
-    *accDistance = convertUnit(METER, KILO, METER, *accTime * fabs(endMach - startMach) * theAcftPt->atm.getSpeedOfSound(Altitude));
+    *accDistance = *accTime * fabs(endMach - startMach) * theAcftPt->atm.getSpeedOfSound(Altitude);
     *accFuel = theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise) * *accTime;;
 }
 
 bool flightSimulator::checkForAcceleration(double grossMass, double Altitude, double Mach, string Config, string Rating, double Derate, double bleedOff, double shaftOff,
                                            aerodynamics theAero) {
     double theDrag = theAero.getCruiseDrag(Mach, Altitude, 0., grossMass, Config, theAcftPt->atm);
-    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, Mach, theAcftPt->atm, Derate, Rating, bleedOff, shaftOff,
-        convertUnit(NEWTON, KILO, NEWTON, theDrag));  // TODO(hansmann): cuise is currently hardcoded here as energy carrier
-
-    if (0.995 * convertUnit(NEWTON, KILO, NEWTON, theDrag) > theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise)) {
+    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, Mach, theAcftPt->atm, Derate, Rating, bleedOff, shaftOff);
+          // TODO(hansmann): cuise energy_carrier is currently hardcoded here as energy carrier
+    double currentThrust = theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
+    if (0.995 * theDrag > currentThrust) {
         return false;
     } else {
         return true;
@@ -232,16 +235,16 @@ void flightSimulator::getCruiseFuel(double grossMass, double Altitude, double Ma
         do {
             double theDrag = theAero.getCruiseDrag(Mach, Altitude, 0., grossMass, Config, theAcftPt->atm);
             theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, Mach, theAcftPt->atm, 1.0, Rating, bleedOff, shaftOff,
-                convertUnit(NEWTON, KILO, NEWTON, theDrag));
+                theDrag);
             double theThrust = theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
-            if (0.995 * convertUnit(NEWTON, KILO, NEWTON, theDrag) > theThrust) {
+            if (0.995 * theDrag > theThrust) {
                 myRuntimeInfo->err << "Error in cruise calculation! Abort!!!" << endl;
                 myRuntimeInfo->err << "Thrust is not equal to resistance:" << endl;
-                myRuntimeInfo->err << "-> Thrust: " << theThrust << " kN" << endl;
-                myRuntimeInfo->err << "-> Drag:  " << convertUnit(NEWTON, KILO, NEWTON, theDrag) << " kN" << endl;
+                myRuntimeInfo->err << "-> Thrust: " << theThrust << " N" << endl;
+                myRuntimeInfo->err << "-> Drag:  " << theDrag << " N" << endl;
                 exit(1);
             }
-            double segTime = (cruiseSteps * 1000.) / (Mach * theAcftPt->atm.getSpeedOfSound(Altitude));
+            double segTime = cruiseSteps / (Mach * theAcftPt->atm.getSpeedOfSound(Altitude));
             double segFuel = segTime * theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
             *cruiseTime += segTime;
             *cruiseFuel += segFuel;
@@ -258,9 +261,9 @@ bool flightSimulator::checkForSteadyLevelFlight(double grossMass, double Altitud
                                                 aerodynamics theAero) {
     double theDrag = theAero.getCruiseDrag(Mach, Altitude, 0., grossMass, Config, theAcftPt->atm);
     theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, Altitude, Mach, theAcftPt->atm, 1.0, Rating, bleedOff, shaftOff,
-        convertUnit(NEWTON, KILO, NEWTON, theDrag));
+        theDrag);
     double theThrust = theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
-    if (0.995 * convertUnit(NEWTON, KILO, NEWTON, theDrag) > theThrust) {
+    if (0.995 * theDrag > theThrust) {
         return false;
     } else {
         return true;
@@ -273,9 +276,9 @@ void flightSimulator::getDescendFuel(double startAltitude, double endAltitude, d
     double deltaAltitude = fabs(startAltitude - endAltitude);
     double avgTAS = 0.5 * (startMach * theAcftPt->atm.getSpeedOfSound(startAltitude)
                            + endMach * theAcftPt->atm.getSpeedOfSound(endAltitude));
-    *descendDistance = convertUnit(METER, KILO, METER, 1. / tan(convertUnit(DEGREE, RADIAN, 5.)) * deltaAltitude);
-    *descendTime = sqrt(pow(convertUnit(KILO, METER, METER, *descendDistance), 2.) + pow(deltaAltitude, 2)) / avgTAS;
-    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_descent, startAltitude, startMach, theAcftPt->atm, 1., "Idle", bleedOff,
+    *descendDistance = 1. / tan(convertUnit(DEGREE, RADIAN, 5.)) * deltaAltitude;
+    *descendTime = sqrt(pow(*descendDistance, 2.) + pow(deltaAltitude, 2)) / avgTAS;
+    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_descent, startAltitude, startMach, theAcftPt->atm, 1., "idle", bleedOff,
         shaftOff);
     *descendFuel = *descendTime * theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_descent);
 }
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.h b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.h
index 4c1728d78c271140ba69d3dec815528d688f13e3..cb0f1300ff9d3898fe91b94ae65cc8d7818956cf 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.h
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/flightSimulator.h
@@ -24,6 +24,7 @@
 #include <unitConversion/unitConversion.h>
 
 #include <string>
+#include <memory>
 
 class aircraft;
 class aerodynamics;
@@ -50,7 +51,7 @@ class flightSimulator {
     *\param Config Flaps configuration (-)
     *\param Rating Engine rating (-)
     *\param bleedOff Current bleed air offtake (kg/s)
-    *\param shaftOff Shaft power offtake (kW)
+    *\param shaftOff Shaft power offtake (W)
     *\param theAero Object of the aerodynamics class
     *\param climbFuel Fuel needed during climb phase (kg)
     *\param climbDistance Distance covered during climb phase (km)
@@ -73,7 +74,7 @@ class flightSimulator {
     *\param Config Flaps configuration (-)
     *\param Rating Engine rating (-)
     *\param bleedOff Current bleed air offtake (kg/s)
-    *\param shaftOff Current shaft power offtake (kW)
+    *\param shaftOff Current shaft power offtake (W)
     *\param theAero Object of the aerodynamics class
     *\param accFuel Fuel needed during acceleration phase (kg)
     *\param accDistance Distance covered during acceleration phase (km)
@@ -95,7 +96,7 @@ class flightSimulator {
     *\param Rating Engine rating (-)
     *\param Derate Artificial constant to reduce the engine spool speed (between 0 and 1)
     *\param bleedOff Current bleed air offtake (kg/s)
-    *\param shaftOff Current shaft power offtake (kW)
+    *\param shaftOff Current shaft power offtake (W)
     *\param theAero Object of the aerodynamics class
     *\return True or false
     */
@@ -112,7 +113,7 @@ class flightSimulator {
     *\param Config Flaps configuration (-)
     *\param Rating Engine rating (-)
     *\param bleedOff Current bleed air offtake (kg/s)
-    *\param shaftOff Current shaft power offtake (kW)
+    *\param shaftOff Current shaft power offtake (W)
     *\param theAero Object of the aerodynamics class
     *\param cruiseFuel Fuel needed during the cruise phase (kg)
     *\param cruiseDistance Distance covered during cruise phase (km)
@@ -132,7 +133,7 @@ class flightSimulator {
     *\param Config Flap configuration (-)
     *\param Rating Engine rating (-)
     *\param bleedOff Current bleed air offtake (kg/s)
-    *\param shaftOff Current shaft power offtake (kW)
+    *\param shaftOff Current shaft power offtake (W)
     *\param theAero Object of the aerodynamics class
     *\return True or false
     */
@@ -148,7 +149,7 @@ class flightSimulator {
      *\param startMach Mach number at the start of the descend segment (-)
      *\param endMach Mach number at the end of the descend segment (-)
      *\param bleedOff Current bleed air offtake (kg/s)
-     *\param shaftOff Shaft power offtake (kW)
+     *\param shaftOff Shaft power offtake (W)
      *\param descendFuel Fuel needed during descend phase (kg)
      *\param descendDistance Distance covered during descend phase (km)
      *\param descendTime Time spent for the descend phase (s)
@@ -161,7 +162,7 @@ class flightSimulator {
     /**\brief Constructor flightSimulator
      *\param theAircraft Address to the aircraft object
      */
-    explicit flightSimulator(aircraft *theAircraft);
+    explicit flightSimulator(std::shared_ptr<aircraft> anAcftPtr);
 
     /**\brief Destructor flightSimulator object
     *
@@ -169,10 +170,10 @@ class flightSimulator {
     virtual ~flightSimulator();
 
  private:
-    aircraft *theAcftPt; /**< Pointer to the aircraft object */
+    std::shared_ptr<aircraft> theAcftPt; /**< Pointer to the aircraft object */
 
     double climbAltSteps; /**< Climb altitude steps (m) */
-    double cruiseSteps; /**< Cruise steps (km) */
+    double cruiseSteps; /**< Cruise steps (m) */
 
     /**\brief Function to compute the climb fuel needed
     *\param massAC Aircraft mass (kg)
@@ -183,7 +184,7 @@ class flightSimulator {
     *\param config Flap configuration (-)
     *\param rating Engine rating (-)
     *\param bleed Current bleed air (kg/s)
-    *\param shaft Shaft power (kW)
+    *\param shaft Shaft power (W)
     *\param AERO Object of the aerodynamics class
     *\param theTime Time spent in the climb phase (s)
     *\param theFuel Average fuel needed (kg)
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelFromMassFraction.cpp b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelFromMassFraction.cpp
index 5f02d0434bc9cf74325da7facb97c52b9ddf04dc..73d2255d4f29e195ddab4c2781e436a139e0dc34 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelFromMassFraction.cpp
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelFromMassFraction.cpp
@@ -103,7 +103,7 @@ void fuelFromMassFraction::calcFuelFromMassFractions(double missionPayload, doub
             } else if (i == 2) { /* Climb and Accelerate */
                 fraction = 1.0065 - 0.0325 * theCruiseMach;
             } else if (i == 3) { /* Cruise */
-                double thisRange = (missionRange - 300.) * 1000.;  // m
+                double thisRange = (missionRange - 300000.);
                 fraction = pow(2.71828, (-1.) * thisRange * theBreguetFactor);
             } else if (i == 4) { /* Descent */
                 fraction = 0.992;
@@ -126,6 +126,7 @@ void fuelFromMassFraction::calcFuelFromMassFractions(double missionPayload, doub
                 missionFuel += segmentFuel.back();
             }
             if (segmentMass.back() < 0.) {
+                myRuntimeInfo->err << "Error in calcFuelFromMassFractions" << std::endl;
                 exit(1);
             }
         }
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.cpp b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.cpp
index a29299577e40b132dafea6c8cfb999b8fffcde2b..df912230365bdbe26b2f077bcd7b74567fd361a7 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.cpp
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.cpp
@@ -20,12 +20,12 @@
 
 namespace low {
 
-fuelPlanning::fuelPlanning(aircraft *theAircraft, const performance_assessment_settings *theSettings, const std::shared_ptr<RuntimeIO>& rtIO)
+fuelPlanning::fuelPlanning(std::shared_ptr<aircraft> anAcftPtr, const std::shared_ptr<performance_assessment_settings> aSettingsPt, const std::shared_ptr<RuntimeIO>& rtIO)
     :
     rtIO(rtIO),
-    theAcftPt(theAircraft),
-    theSettingsPt(theSettings),
-    myFlightSim(theAircraft),
+    theAcftPt(anAcftPtr),
+    theSettingsPt(aSettingsPt),
+    myFlightSim(anAcftPtr),
     myBreguet(theAcftPt->OME, theAcftPt->MInitialCruise),
     relConFuel(theSettingsPt->myFuelPlan.contingencyFuel),
     P(pointData()) {
@@ -80,7 +80,7 @@ void fuelPlanning::doPayloadRangeOLD() {
     double tempBreguetFactor(0.);
     // where is theMissionFuel.at(i+1).consumedFuel (see below) set/calculated?
     for (unsigned int i(0); i <= theAcftPt->myMission.Steps.size() - 1; i++) {
-        if (theAcftPt->myMission.Steps.at(i).modeStep == "Cruise") {
+        if (theAcftPt->myMission.Steps.at(i).modeStep == "cruise") {
             if ((1. / (1. - theMissionFuel.at(i + 1).consumedFuel / theMissionFuel.at(i).Mass)) < 10e-8) {
                 myRuntimeInfo->err << "Abort: Log-Argument becomes too small!!!" << std::endl;
                 myRuntimeInfo->err << "1 / (1-f_consumed/f_mission) = " << (1. / (1. - theMissionFuel.at(i + 1).consumedFuel / theMissionFuel.at(i).Mass)) << std::endl;
@@ -163,8 +163,7 @@ void fuelPlanning::doPayloadRangeOLD() {
 void fuelPlanning::doFuelPayloadRangeOLD() {
     if (!fileExists(rtIO->getCsvFilesDirTool())) {
         myRuntimeInfo->out << "Create csvOutput folder in program folder: " << rtIO->getCsvFilesDirTool() << std::endl;
-        CreateDirectory(rtIO->getCsvFilesDirTool().c_str(), NULL); //...Create folder
-
+        CreateDirectory(rtIO->getCsvFilesDirTool().c_str(), NULL);  // ...Create folder
     }
     std::ofstream plot;
     string plotFile(rtIO->getCsvFilesDirTool() + "performance_assessment" + "_fuelPayloadRange.csv");  // Replaced global variable "TOOLNAME" (?)
@@ -261,7 +260,7 @@ void fuelPlanning::calcStandardFuelPlanning(double *theTaxiFuelTakeoff, double *
         exit(1);
     }
     *theTripFuel = this->fastFuelEstimate(myAERO);
-    *theMissionFuel = *theTripFuel;//initialization of the mission fuel
+    *theMissionFuel = *theTripFuel;  // initialization of the mission fuel
     *theTaxiFuelTakeoff = myFlightSim.calcTaxiFuel(theAcftPt->myMission.taxiTimeOrigin);
     *theTaxiFuelLanding = myFlightSim.calcTaxiFuel(theAcftPt->myMission.taxiTimeDestination);
     double oldMissionFuel(0.);
@@ -269,16 +268,16 @@ void fuelPlanning::calcStandardFuelPlanning(double *theTaxiFuelTakeoff, double *
     do {
         oldMissionFuel = *theMissionFuel;
         double acMass = theAcftPt->OME + thePayload + *theMissionFuel;
-        acMass -= *theTaxiFuelTakeoff; //Take-off mass
+        acMass -= *theTaxiFuelTakeoff;  // Take-off mass
         *theTripFuel = this->calcMissionFuel(acMass, theRange, writingMissionData, myAERO);
         acMass -= *theTripFuel;
         *theAlternateFuel = this->calcAlternateFuel(acMass, myAERO);
         acMass -= *theAlternateFuel;
         *theFinalReserveFuel = this->calcFinalReserveFuel(acMass, myAERO);
         *theContigencyFuel = relConFuel * *theTripFuel;
-        //no taxi fuel at landing necessary if reserve fuel is used
+        // no taxi fuel at landing necessary if reserve fuel is used
         *theMissionFuel = *theTaxiFuelTakeoff + *theTripFuel + *theAlternateFuel + *theFinalReserveFuel + *theContigencyFuel;
-        //*theTripFuel = *theTaxiFuel + *theMissionFuel + *theAlternateFuel + *theFinalReserveFuel + *theContigencyFuel;
+        // *theTripFuel = *theTaxiFuel + *theMissionFuel + *theAlternateFuel + *theFinalReserveFuel + *theContigencyFuel;
         ID++;
         if (ID >= 30) {
             myRuntimeInfo->out << "Attention: No tank convergence could be achieved." << std::endl;
@@ -318,26 +317,28 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
         double time(0.);
         double Drag(0.);
         /* TakeOff, Climb, Accelerate, Cruise, Descend, Landing */
-        if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "TakeOff") {
+        if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "takeoff") {
             time = convertUnit(MINUTE, SECOND, 1.);  // Assumption that take-off lasts 1 minute
-            Drag = 0.0;
-            theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_takeoff, P.Altitude, P.Mach, theAcftPt->atm, P.derate, P.rating,
-                P.bleedOff, P.shaftOff, convertUnit(NEWTON, KILO, NEWTON, Drag));
+            // Drag = 0.0;  // TODO(hansmann): Wechsel von Drag=0.0 & calculate_N1_with_thrustlimit auf calculate_N1_with_penalties mit vollschub abklären
+            // theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_takeoff, P.Altitude, P.Mach, theAcftPt->atm, P.derate, P.rating,
+            //     P.bleedOff, P.shaftOff, convertUnit(NEWTON, KILO, NEWTON, Drag));
+            theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_takeoff, P.Altitude, P.Mach, theAcftPt->atm, P.derate, P.rating,
+                P.bleedOff, P.shaftOff);
             missionFuel.push_back(time * theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_takeoff));
-        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "Climb") {
+        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "climb") {
             time = 0.0;
             distance = 0.;
             if (theAcftPt->myMission.Steps.at(i - 1).endAltitude < theAcftPt->myMission.Steps.at(i).endAltitude) {
                 missionFuel.push_back(0.);
-                myFlightSim.getClimbFuel(acMass, convertUnit(FOOT, METER, theAcftPt->myMission.Steps.at(i - 1).endAltitude),
-                                         convertUnit(FOOT, METER, theAcftPt->myMission.Steps.at(i).endAltitude), theAcftPt->myMission.Steps.at(i - 1).endMach,
+                myFlightSim.getClimbFuel(acMass,  theAcftPt->myMission.Steps.at(i - 1).endAltitude,
+                                         theAcftPt->myMission.Steps.at(i).endAltitude, theAcftPt->myMission.Steps.at(i - 1).endMach,
                                          theAcftPt->myMission.Steps.at(i).endMach, P.config, P.rating, P.bleedOff, P.shaftOff, theAERO, &missionFuel.back(), &distance, &time);
             } else {
                 myRuntimeInfo->out << "... No change in altitude despite climb segment." << std::endl;
                 missionFuel.push_back(0.0);
             }
             flownDistance += distance;
-        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "Accelerate") {
+        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "accelerate") {
             Drag = 0.0;
             time = 0.0;
             distance = 0.;
@@ -348,8 +349,8 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
                 myRuntimeInfo->out << errMsg << std::endl;
                 myRuntimeInfo->out << "Try to increase rating..." << std::endl;
             }
-            if (checkAcceleration == false && P.rating == "Cruise") {
-                P.rating = "Climb";
+            if (checkAcceleration == false && P.rating == "cruise") {
+                P.rating = "climb";
                 try {
                     checkAcceleration = myFlightSim.checkForAcceleration(acMass, P.Altitude, P.Mach,
                                         P.config, P.rating, P.derate, P.bleedOff, P.shaftOff, theAERO);
@@ -358,8 +359,8 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
                     myRuntimeInfo->out << "Try to increase rating..." << std::endl;
                 }
             }
-            if (checkAcceleration == false && P.rating == "Climb") {
-                P.rating = "MaxCont";
+            if (checkAcceleration == false && P.rating == "climb") {
+                P.rating = "maximum_continuous";
                 try {
                     checkAcceleration = myFlightSim.checkForAcceleration(acMass, P.Altitude, P.Mach,
                                         P.config, P.rating, P.derate, P.bleedOff, P.shaftOff, theAERO);
@@ -379,9 +380,9 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
                                           theAERO,
                                           &missionFuel.back(), &distance, &time);
             flownDistance += distance;
-        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "Cruise") {
+        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "cruise") {
             if (firstCruise == true) {
-                distanceCruise = Range - flownDistance - (convertUnit(METER, KILO, METER, 10000.)) / tan(convertUnit(DEGREE, RADIAN, 5.));
+                distanceCruise = Range - flownDistance - 10000. / tan(convertUnit(DEGREE, RADIAN, 5.));
                 flownCruise = 0.;
                 firstCruise = false;
             }
@@ -391,8 +392,8 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
                 myRuntimeInfo->out << errMsg << std::endl;
                 myRuntimeInfo->out << "Try to increase rating..." << std::endl;
             }
-            if (checkSteadyLevelFlight == false && P.rating == "Cruise") {
-                P.rating = "Climb";
+            if (checkSteadyLevelFlight == false && P.rating == "cruise") {
+                P.rating = "climb";
                 try {
                     checkSteadyLevelFlight = myFlightSim.checkForSteadyLevelFlight(acMass, P.Altitude, P.Mach, P.config, P.rating, P.bleedOff, P.shaftOff, theAERO);
                 } catch (const std::string& errMsg) {
@@ -400,8 +401,8 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
                     myRuntimeInfo->out << "Try to increase rating..." << std::endl;
                 }
             }
-            if (checkSteadyLevelFlight == false && P.rating == "Climb") {
-                P.rating = "MaxCont";
+            if (checkSteadyLevelFlight == false && P.rating == "climb") {
+                P.rating = "maximum_continuous";
                 try {
                     checkSteadyLevelFlight = myFlightSim.checkForSteadyLevelFlight(acMass, P.Altitude, P.Mach, P.config, P.rating, P.bleedOff, P.shaftOff, theAERO);
                 } catch (const std::string& errMsg) {
@@ -430,19 +431,19 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
             time = 0.;
             myFlightSim.getCruiseFuel(acMass, P.Altitude, P.Mach, P.config, P.rating, P.bleedOff, P.shaftOff, theAERO,
                                       &missionFuel.back(), cruiseRange, &time);
-        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "Descend") {
+        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "descend") {
             time = 0.;
             missionFuel.push_back(0.);
-            myFlightSim.getDescendFuel(convertUnit(FOOT, METER, theAcftPt->myMission.Steps.at(i - 1).endAltitude),
-                                       convertUnit(FOOT, METER, theAcftPt->myMission.Steps.at(i).endAltitude), theAcftPt->myMission.Steps.at(i - 1).endMach,
+            myFlightSim.getDescendFuel(theAcftPt->myMission.Steps.at(i - 1).endAltitude,
+                                       theAcftPt->myMission.Steps.at(i).endAltitude, theAcftPt->myMission.Steps.at(i - 1).endMach,
                                        theAcftPt->myMission.Steps.at(i).endMach, P.bleedOff, P.shaftOff, &missionFuel.back(), &distance, &time);
             flownDistance += distance;
-        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "Landing") {
+        } else if (theAcftPt->myMission.Steps.at(i).Point.simplifiedMODE == "landing") {
             Drag = 0.0;
             time = convertUnit(MINUTE, SECOND, 2.0);  // Assume the final approach and landing will take 2 minutes.
             distance = 0.;
-            theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_landing, P.Altitude, P.Mach, theAcftPt->atm, P.derate, P.rating, P.bleedOff, P.shaftOff,
-                                                             convertUnit(NEWTON, KILO, NEWTON, Drag));
+            theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_landing, P.Altitude, P.Mach, theAcftPt->atm, P.derate, P.rating,
+                P.bleedOff, P.shaftOff);
             missionFuel.push_back(time * theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_landing));
         } else {
             myRuntimeInfo->err << "unknown simplified Mode !" << std::endl;
@@ -454,7 +455,7 @@ double fuelPlanning::calcMissionFuel(double acMass, double Range, bool writeMiss
             double maxROC(0.);
             theMissionFuel.push_back(missionFuelData());
             theMissionFuel.back().Time = time;
-            theMissionFuel.back().Range = convertUnit(KILO, METER, METER, distance);
+            theMissionFuel.back().Range = distance;
             theMissionFuel.back().Altitude = P.Altitude;
             theMissionFuel.back().TAS = P.TAS;
             theMissionFuel.back().Mach = P.Mach;
@@ -474,7 +475,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     double Fuel(0.0);
     double alternateAlt = convertUnit(FOOT, METER, 27000.);
     double alternateMach = 0.95 * theAcftPt->MInitialCruise;
-    double tempAlternateRange = theAcftPt->myMission.alternateRange - 1. * convertUnit(METER, KILO, METER, alternateAlt) / tan(convertUnit(DEGREE, RADIAN, 5.));
+    double tempAlternateRange = theAcftPt->myMission.alternateRange - 1. * alternateAlt / tan(convertUnit(DEGREE, RADIAN, 5.));
     /* Climb */
     double tempTime(0.);
     double climbFuel(0.);
@@ -483,7 +484,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     double climbTAS = theAcftPt->v2(acMass, convertUnit(FOOT, METER, 750.)) + convertUnit(KNOTS, METERPERSECOND, 10.);
     myFlightSim.getClimbFuel(acMass, 0.0, convertUnit(FOOT, METER, 1500.),
                              climbTAS / theAcftPt->atm.getSpeedOfSound(0.), climbTAS / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 1500.)),
-                             "Climb", "TO", 0.0, 0.0, theAERO,
+                             "climb", "takeoff", 0.0, 0.0, theAERO,
                              &climbFuel, &climbDistance, &tempTime);
     Fuel += climbFuel;
     acMass -= climbFuel;
@@ -495,7 +496,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     myFlightSim.getAccelerateFuel(acMass, convertUnit(FOOT, METER, 1500.),
                                   climbTAS / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 1500.)),
                                   convertUnit(KNOTS, METERPERSECOND, 250.) / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 1500.)),
-                                  "Clean", "TO", 0.0, 0.0, theAERO,
+                                  "clean", "takeoff", 0.0, 0.0, theAERO,
                                   &climbFuel, &climbDistance, &tempTime);
     Fuel += climbFuel;
     acMass -= climbFuel;
@@ -504,11 +505,11 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     tempTime = 0.;
     climbFuel = 0.;
     climbDistance = 0.;
-    climbTAS = 250. * (1.852 / 3.6);
-    myFlightSim.getClimbFuel(acMass, 1500.*0.3048, 10000.*0.3048,
-                             climbTAS / theAcftPt->atm.getSpeedOfSound(1500.*0.3048), climbTAS / theAcftPt->atm.getSpeedOfSound(10000.*0.3048),
-                             "Clean", "MaxCont", 0.0, 0.0, theAERO,
-                             &climbFuel, &climbDistance, &tempTime);
+    climbTAS = convertUnit(KNOTS, METERPERSECOND, 250);
+    myFlightSim.getClimbFuel(acMass, convertUnit(FOOT, METER, 1500.), convertUnit(FOOT, METER, 10000.),
+                        climbTAS / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 1500.)), climbTAS / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 10000.)),
+                        "clean", "maximum_continuous", 0.0, 0.0, theAERO,
+                        &climbFuel, &climbDistance, &tempTime);
     Fuel += climbFuel;
     acMass -= climbFuel;
     tempAlternateRange -= climbDistance;
@@ -516,10 +517,10 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     tempTime = 0.;
     climbFuel = 0.;
     climbDistance = 0.;
-    myFlightSim.getAccelerateFuel(acMass, 10000.*0.3048,
-                                  climbTAS / theAcftPt->atm.getSpeedOfSound(10000.*0.3048),
-                                  300.* (1.852 / 3.6) / theAcftPt->atm.getSpeedOfSound(10000.*0.3048),
-                                  "Clean", "MaxCont", 0.0, 0.0, theAERO,
+    myFlightSim.getAccelerateFuel(acMass, convertUnit(FOOT, METER, 10000.),
+                                  climbTAS / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 10000.)),
+                                  convertUnit(KNOTS, METERPERSECOND, 300) / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 10000.)),
+                                  "clean", "maximum_continuous", 0.0, 0.0, theAERO,
                                   &climbFuel, &climbDistance, &tempTime);
     Fuel += climbFuel;
     acMass -= climbFuel;
@@ -531,7 +532,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     climbTAS = 300. * (1.852 / 3.6);
     myFlightSim.getClimbFuel(acMass, 10000.*0.3048, alternateAlt,
                              climbTAS / theAcftPt->atm.getSpeedOfSound(10000.*0.3048), climbTAS / theAcftPt->atm.getSpeedOfSound(alternateAlt),
-                             "Clean", "Climb", 0.0, 0.0, theAERO,
+                             "clean", "climb", 0.0, 0.0, theAERO,
                              &climbFuel, &climbDistance, &tempTime);
     Fuel += climbFuel;
     acMass -= climbFuel;
@@ -544,7 +545,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
         myFlightSim.getAccelerateFuel(acMass, alternateAlt,
                                       climbTAS / theAcftPt->atm.getSpeedOfSound(10000.*0.3048),
                                       alternateMach,
-                                      "Clean", "MaxCont", 0.0, 0.0, theAERO,
+                                      "clean", "maximum_continuous", 0.0, 0.0, theAERO,
                                       &climbFuel, &climbDistance, &tempTime);
         Fuel += climbFuel;
         acMass -= climbFuel;
@@ -557,7 +558,7 @@ double fuelPlanning::calcAlternateFuel(double acMass, aerodynamics theAERO) {
     tempTime = 0.;
     climbFuel = 0.;
     climbDistance = 0.;
-    myFlightSim.getCruiseFuel(acMass, alternateAlt, alternateMach, "Clean", "MaxCont", 0.0, 0.0, theAERO,
+    myFlightSim.getCruiseFuel(acMass, alternateAlt, alternateMach, "clean", "maximum_continuous", 0.0, 0.0, theAERO,
                               &climbFuel, tempAlternateRange, &tempTime);
     Fuel += climbFuel;
     return Fuel;
@@ -568,15 +569,16 @@ double fuelPlanning::calcFinalReserveFuel(double acMass, aerodynamics theAERO) {
     // SARPerformance SAR(*theAcftPt);
     // Determining the most effective speed via SAR
     double holdingM(0.);
-    double holdingSpeed = 1.05 * theAcftPt->v1gS_Clean(acMass, convertUnit(FOOT, METER, 1500.));
-    holdingM = calcBestSARSpeed(convertUnit(FOOT, METER, 1500.), acMass, holdingSpeed, convertUnit(KNOTS, METERPERSECOND, 250.));
-    double holdingDrag = theAERO.getCruiseDrag(holdingM, convertUnit(FOOT, METER, 1500.), 0., acMass, "Clean", theAcftPt->atm);
-    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, convertUnit(FOOT, METER, 1500.), holdingM, theAcftPt->atm, 1.,
-        "MaxCont", 0.0, 0.0, convertUnit(NEWTON, KILO, NEWTON, holdingDrag));
+    double holding_altitude = convertUnit(FOOT, METER, 1500.);
+    double holdingSpeed = 1.05 * theAcftPt->v1gS_Clean(acMass, holding_altitude);
+    holdingM = calcBestSARSpeed(holding_altitude, acMass, holdingSpeed, convertUnit(KNOTS, METERPERSECOND, 250.));
+    double holdingDrag = theAERO.getCruiseDrag(holdingM, holding_altitude, 0., acMass, "clean", theAcftPt->atm);
+    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, holding_altitude, holdingM, theAcftPt->atm, 1.,
+                                                        "maximum_continuous", 0.0, 0.0, holdingDrag);
     double LoverD = (G_FORCE * acMass) / holdingDrag;
     double SFC = theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise)
-        / theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
-    return acMass * (expm1(convertUnit(MINUTE, SECOND, 30.) * G_FORCE * SFC / 1000. * 1. / LoverD));  // return calcBreguet(acMass, 30.*60., SFC, LoverD);
+               / theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
+    return acMass * (expm1(convertUnit(MINUTE, SECOND, 30.) * G_FORCE * SFC * 1. / LoverD));  // return calcBreguet(acMass, 30.*60., SFC, LoverD);
 }
 
 double fuelPlanning::calcBestSARSpeed(double alt, double mass, double lowerSpeed, double upperSpeed) {
@@ -584,7 +586,7 @@ double fuelPlanning::calcBestSARSpeed(double alt, double mass, double lowerSpeed
     double tempSAR(0.);
     double tempMach(lowerSpeed / theAcftPt->atm.getSpeedOfSound(alt));
     while (lowerSpeed < upperSpeed) {
-        if (tempSAR <= SAR.calculateSAR(mass, alt, lowerSpeed / theAcftPt->atm.getSpeedOfSound(alt), "Climb", "Clean")) {
+        if (tempSAR <= SAR.calculateSAR(mass, alt, lowerSpeed / theAcftPt->atm.getSpeedOfSound(alt), "climb", "clean")) {
             tempMach = lowerSpeed / theAcftPt->atm.getSpeedOfSound(convertUnit(FOOT, METER, 1500.));
         }
         lowerSpeed += 0.5;
@@ -593,7 +595,7 @@ double fuelPlanning::calcBestSARSpeed(double alt, double mass, double lowerSpeed
 }
 
 double fuelPlanning::calcBreguet(double W0, double Time, double theSFC, double theLoD) {
-    return W0 * (1. - 1. / exp(Time * G_FORCE * theSFC / 1000. * 1. / theLoD));
+    return W0 * (1. - 1. / exp(Time * G_FORCE * theSFC * 1. / theLoD));
 }
 
 //double fuelPlanning::calcRangeForMass(double Range0, double Range1, double Mass0, double Mass1, double targetMass) {
@@ -606,9 +608,9 @@ double fuelPlanning::calcBreguet(double W0, double Time, double theSFC, double t
 
 void fuelPlanning::setP(int ID) {
     P.Mach = theAcftPt->myMission.Steps.at(ID).Point.Mach;
-    P.Altitude = convertUnit(FOOT, METER, theAcftPt->myMission.Steps.at(ID).Point.Altitude);
-    P.TAS = convertUnit(KNOTS, METERPERSECOND, theAcftPt->myMission.Steps.at(ID).Point.TAS);
-    P.ROC = convertUnit(FOOTPERMINUTE, METERPERSECOND, theAcftPt->myMission.Steps.at(ID).Point.ROC);
+    P.Altitude = theAcftPt->myMission.Steps.at(ID).Point.Altitude;
+    P.TAS = theAcftPt->myMission.Steps.at(ID).Point.TAS;
+    P.ROC = theAcftPt->myMission.Steps.at(ID).Point.ROC;
     P.derate = theAcftPt->myMission.Steps.at(ID).derating;
     P.bleedOff = theAcftPt->myMission.Steps.at(ID).Point.bleedOffTakes;
     P.shaftOff = theAcftPt->myMission.Steps.at(ID).Point.shaftOffTakes;
@@ -634,14 +636,14 @@ void fuelPlanning::setP(int ID) {
 
 void low::fuelPlanning::exitAcceleration(int ID, pointData theP, double massAircraft) {
     double Drag = theAcftPt->aero.getCruiseDrag(theP.Mach, theP.Altitude, 0., massAircraft, theP.config, theAcftPt->atm);
-    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, theP.Altitude, theP.Mach, theAcftPt->atm, theP.derate, theP.rating, theP.bleedOff, theP.shaftOff, Drag / 1000.);
+    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, theP.Altitude, theP.Mach, theAcftPt->atm, theP.derate, theP.rating, theP.bleedOff, theP.shaftOff, Drag);
     myRuntimeInfo->err << "Error in fuel estimation!" << std::endl;
     myRuntimeInfo->err << "Thrust does not allow acceleration!" << std::endl;
     myRuntimeInfo->err << "mission segment: " << ID << std::endl;
     myRuntimeInfo->err << "Mission mode: " << theAcftPt->myMission.Steps.at(ID).modeStep << std::endl;
-    myRuntimeInfo->err << "available thrust: " << theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) << " kN" << std::endl;
-    myRuntimeInfo->err << "drag: " << Drag / 1000. << " kN" << std::endl;
-    myRuntimeInfo->err << "flight altitude: " << theP.Altitude / 0.3048 << " ft" << std::endl;
+    myRuntimeInfo->err << "available thrust: " << theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) << " N" << std::endl;
+    myRuntimeInfo->err << "drag: " << Drag << " N" << std::endl;
+    myRuntimeInfo->err << "flight altitude: " << theP.Altitude << " m" << std::endl;
     myRuntimeInfo->err << "Mach number: " << theP.Mach << "" << std::endl;
     myRuntimeInfo->err << "Engine-Rating: " << theP.rating << std::endl;
     exit(1);
@@ -652,21 +654,21 @@ void low::fuelPlanning::exitSteadyLevelFlight(int ID, pointData theP, double the
     myRuntimeInfo->err << "Thrust does not allow Steady Level Flight!" << std::endl;
     myRuntimeInfo->err << "Mission segment: " << ID << std::endl;
     myRuntimeInfo->err << "Mission mode: " << theAcftPt->myMission.Steps.at(ID).modeStep << std::endl;
-    myRuntimeInfo->err << "available thrust: " << theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise)/1000. << " kN" << std::endl;
-    myRuntimeInfo->err << "drag: " << theDrag / 1000. << " kN" << std::endl;
-    myRuntimeInfo->err << "flight altitude: " << theP.Altitude / 0.3048 << " ft" << std::endl;
+    myRuntimeInfo->err << "available thrust: " << theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) << " N" << std::endl;
+    myRuntimeInfo->err << "drag: " << theDrag << " N" << std::endl;
+    myRuntimeInfo->err << "flight altitude: " << theP.Altitude << " m" << std::endl;
     myRuntimeInfo->err << "Mach number: " << theP.Mach << "" << std::endl;
     myRuntimeInfo->err << "Engine-Rating: " << theP.rating << std::endl;
     exit(1);
 }
 
 double low::fuelPlanning::fastFuelEstimate(aerodynamics theAERO) {
-    double Time = convertUnit(KILO, METER, METER, theAcftPt->myMission.missionRange) / (theAcftPt->myMission.crMach * theAcftPt->atm.getSpeedOfSoundISA(10000.));
+    double Time = theAcftPt->myMission.missionRange / (theAcftPt->myMission.crMach * theAcftPt->atm.getSpeedOfSoundISA(10000.));
     double acMass = theAcftPt->MTOM;
-    double theLoverD = theAERO.getCruiseLoverD(theAcftPt->myMission.crMach, 10000., 0.0, acMass, "Clean", theAcftPt->atm);
-    double theDrag = theAERO.getCruiseDrag(theAcftPt->myMission.crMach, 10000., 0.0, acMass, "Clean", theAcftPt->atm);
-    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, 10000., theAcftPt->myMission.crMach, theAcftPt->atm, 1.0, "MaxCont",
-        0., 0., convertUnit(NEWTON, KILO, NEWTON, theDrag));
+    double theLoverD = theAERO.getCruiseLoverD(theAcftPt->myMission.crMach, 10000., 0.0, acMass, "clean", theAcftPt->atm);
+    double theDrag = theAERO.getCruiseDrag(theAcftPt->myMission.crMach, 10000., 0.0, acMass, "clean", theAcftPt->atm);
+    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, 10000., theAcftPt->myMission.crMach, theAcftPt->atm, 1.0,
+        "maximum_continuous", 0., 0., theDrag);
     double theSFC = theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise)
         / theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
     return this->calcBreguet(theAcftPt->MTOM, Time, theSFC, theLoverD);
diff --git a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.h b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.h
index 5d28f53783030750ddd1c72b3cedb3b143dbc13c..40cb29e6c1fbfa6a351d0b36c88804178643e94b 100644
--- a/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.h
+++ b/performance_assessment/src/taw/defaultMethods/fuelPlanning/low_fidelity/fuelPlanning.h
@@ -58,7 +58,7 @@ class fuelPlanning : public ::abstractFuelPlanning {
     *\param theAircraft Address to the aircraft object
     *\param rtIO pointer to the runtimeIO object
     */
-    fuelPlanning(aircraft *theAircraft, const performance_assessment_settings *theSettings, const std::shared_ptr<RuntimeIO>& rtIO);
+    fuelPlanning(std::shared_ptr<aircraft> anAcftPtr, const std::shared_ptr<performance_assessment_settings> aSettingsPt, const std::shared_ptr<RuntimeIO>& rtIO);
 
     /**\brief Destructor fuelPlanning
     *
@@ -104,7 +104,7 @@ class fuelPlanning : public ::abstractFuelPlanning {
  private:
     const std::shared_ptr<RuntimeIO>& rtIO;
     std::shared_ptr<aircraft> theAcftPt; /**< Pointer to aircraft object */
-    const performance_assessment_settings *theSettingsPt; /**< Pointer to the performance_assessment_settings object */
+    const std::shared_ptr<performance_assessment_settings> theSettingsPt; /**< Pointer to the performance_assessment_settings object */
     flightSimulator myFlightSim; /**< flightSimulator object */
     fuelFromMassFraction myBreguet; /**< fuelFromMassFraction object */
     double relConFuel; /**< Relative amount of contingency fuel in reference to the total trip fuel (-) */
diff --git a/performance_assessment/src/taw/defaultMethods/landingPerformance/low_fidelity/landingPerformance.cpp b/performance_assessment/src/taw/defaultMethods/landingPerformance/low_fidelity/landingPerformance.cpp
index 454fa757214b92910e3fc31add6f1bebd40e4e5b..51df25aec3d0f435cad17cd372bb2e6f1558a651 100644
--- a/performance_assessment/src/taw/defaultMethods/landingPerformance/low_fidelity/landingPerformance.cpp
+++ b/performance_assessment/src/taw/defaultMethods/landingPerformance/low_fidelity/landingPerformance.cpp
@@ -37,9 +37,9 @@ void landingPerformance::doLandingPerformance(double theRunwaySlope, double theG
     brakingFriction = theGroundFrictionBraking;
     windSpeed = theHeadWind;
     /* Calculation of landing distance as a function of mass and height */
-    for (double elevation = 0.0; elevation <= 12000.; elevation += 2000.) {  // calculation for several runway altitudes [ft]
+    for (double elevation = 0.0; elevation <= convertUnit(FOOT, METER, 12000.); convertUnit(FOOT, METER, elevation += 2000.)) {  // calculation for several runway altitudes [ft]
         myLDNField.push_back(dataElevationLDN());
-        myLDNField.back().elevation = convertUnit(FOOT, METER, elevation);
+        myLDNField.back().elevation = elevation;
         for (int i = 0; i <= 10; i++) {  // calculation for several masses between OME and MLM
             myLDNField.back().myLDN.push_back(dataLDN());
             myLDNField.back().myLDN.back().grossMass = theAcftPt->OME + static_cast<double>(i) / 10.*(theAcftPt->MLM - theAcftPt->OME);
@@ -86,10 +86,8 @@ double landingPerformance::calcDeAccelerationGroundRoll(double mass, double alt,
     double tempThrust(0.0);
     double tempLift(0.0);
     double tempDrag(0.0);
-    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "Landing", theAcftPt->atm);
-    return 1.0 / mass * (1000.0 * tempThrust
-                           - mass * G_FORCE * (brakingFriction + sin(runwaySlopeAngle))
-                           - (tempDrag - brakingFriction * tempLift));
+    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "landing", theAcftPt->atm);
+    return 1.0 / mass * (tempThrust - mass * G_FORCE * (brakingFriction + sin(runwaySlopeAngle)) - (tempDrag - brakingFriction * tempLift));
 }
 
 bool landingPerformance::checkForLDN() {
@@ -107,10 +105,10 @@ bool landingPerformance::checkForLDN() {
 
 bool landingPerformance::checkForApproachSpeed() {
     bool Check(false);
-    if (theAcftPt->vAPPR(theAcftPt->MLM, 0.0) > theAcftPt->myReqs.approachSpeed * 0.51444) {
+    if (theAcftPt->vAPPR(theAcftPt->MLM, 0.0) > theAcftPt->myReqs.approachSpeed) {
         myRuntimeInfo->out << "The required approach speed cannot be maintained.!" << endl;
-        myRuntimeInfo->out << "Req.  V_approach: " << theAcftPt->myReqs.approachSpeed << " kts" << endl;
-        myRuntimeInfo->out << "Calc. V_approach: " << theAcftPt->vAPPR(theAcftPt->MLM, 0.0) / 0.51444 << " kts" << endl;
+        myRuntimeInfo->out << "Req.  V_approach: " << theAcftPt->myReqs.approachSpeed << " m/s" << endl;
+        myRuntimeInfo->out << "Calc. V_approach: " << theAcftPt->vAPPR(theAcftPt->MLM, 0.0) << " m/s" << endl;
         Check = false;
     } else {
         Check = true;
@@ -131,12 +129,12 @@ void landingPerformance::checkForApproachClimb() {
         double tempMach(tempTAS / theAcftPt->atm.getSpeedOfSound(tempAlt));
         double tempROC(0.0);
         tempROC = theAcftPt->ROC(theAcftPt->MLM, tempAlt, tempMach, 0.0,
-                                 "Landing", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
+                                 "landing", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
         if (tempGradientOEI > asin(tempROC / tempTAS)) {
             tempGradientOEI = 100. * asin(tempROC / tempTAS);
         }
         tempROC = theAcftPt->ROC(theAcftPt->MLM, tempAlt, tempMach, 0.0,
-                                 "Landing", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, false, theAcftPt->aero);
+                                 "landing", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, false, theAcftPt->aero);
         if (tempGradientAEO > asin(tempROC / tempTAS)) {
             tempGradientAEO = 100. * asin(tempROC / tempTAS);
         }
diff --git a/performance_assessment/src/taw/defaultMethods/missionDefinition.cpp b/performance_assessment/src/taw/defaultMethods/missionDefinition.cpp
index ce5b6dc485c645024ac4b3ae8563bd79a5110e63..a7e5d35e64a241d433522e32f17a303c88870b36 100644
--- a/performance_assessment/src/taw/defaultMethods/missionDefinition.cpp
+++ b/performance_assessment/src/taw/defaultMethods/missionDefinition.cpp
@@ -29,7 +29,7 @@ missionDefinition::missionDefinition(const string &fileNameAndDir, double delta_
     missionXML(aixml::openDocument(fileNameAndDir)) {
     myRuntimeInfo->out << "Reading the Mission: " << fileNameAndDir << endl;
     missionPayload = EndnodeReadOnly<double>("/mission/payload").read(missionXML).value();
-    missionPAX = EndnodeReadOnly<double>("mission/number_of_pax").read(missionXML).value();
+    missionPAX = EndnodeReadOnly<int>("mission/number_of_pax").read(missionXML).value();
     missionCargo = EndnodeReadOnly<double>("/mission/cargo_mass").read(missionXML).value();
     missionRange = EndnodeReadOnly<double>("mission/range").read(missionXML).value();
     alternateRange = EndnodeReadOnly<double>("mission/alternate_distance").read(missionXML).value();
@@ -65,7 +65,7 @@ void missionDefinition::readSteps(const string& missionPhase, const uint16_t& nu
         if (missionPhase == "departure") {
             xmlPath += "departure/departure_step@";
         } else if (missionPhase == "cruise") {
-            xmlPath += "flight/flight_phase@";
+            xmlPath += "cruise/cruise_step@";
         } else {
             xmlPath += "approach/approach_step@";
         }
@@ -85,13 +85,26 @@ void missionDefinition::getMissionSegment(string XML) {
     Steps.back().derating = EndnodeReadOnly<double>(XML + "/derate").read(missionXML).value();
     if (missionXML.find(XML+"/altitude")) {
         Steps.back().endAltitude = EndnodeReadOnly<double>(XML + "/altitude").read(missionXML).value();
+    } else {
+        Steps.back().endAltitude = NAN;
     }
     if (missionXML.find(XML+"/calibrated_airspeed")) {
         Steps.back().endCAS = EndnodeReadOnly<double>(XML + "/calibrated_airspeed").read(missionXML).value();
+    } else {
+        Steps.back().endCAS = NAN;
     }
     /* Off-Takes */
-    Steps.back().shaftOffTakes = EndnodeReadOnly<double>(XML + "/shaft_power_takeoff_schedule/background_power_level").read(missionXML).value();
-    Steps.back().bleedOffTakes = EndnodeReadOnly<double>(XML + "/bleed_air_takeoff_schedule/background_bleed_level").read(missionXML).value();
+    if (missionXML.find(XML+"/shaft_power_takeoff_schedule/background_power_level")) {
+        Steps.back().shaftOffTakes = EndnodeReadOnly<double>(XML + "/shaft_power_takeoff_schedule/background_power_level").read(missionXML).value();
+    } else {
+        Steps.back().shaftOffTakes = 0;
+    }
+
+    if (missionXML.find(XML+"/bleed_air_takeoff_schedule/background_bleed_level")) {
+        Steps.back().bleedOffTakes = EndnodeReadOnly<double>(XML + "/bleed_air_takeoff_schedule/background_bleed_level").read(missionXML).value();
+    } else {
+        Steps.back().bleedOffTakes = 0;
+    }
 
     /* Mission phase dependent parameters */
     if (Steps.back().missionPhase == "departure") {
@@ -105,7 +118,7 @@ void missionDefinition::getMissionSegment(string XML) {
         if (Steps.back().modeStep == "takeoff") {
             Steps.back().endAltitude = 0.0;
             Steps.back().endFL = 0.0;
-            Steps.back().endCAS = 160.0;
+            Steps.back().endCAS = 82.3;  // =160.0 kts;    // TODO(hansmann): Mildly illegal to assume 160 flat?
         } else if (Steps.back().modeStep == "climb") {
             if (Steps.back().endAltitude <= 0.0) {
                 myRuntimeInfo->err << "flight phase: " << Steps.back().missionPhase << " | Step: " << Steps.back().modeStep << endl;
@@ -127,14 +140,19 @@ void missionDefinition::getMissionSegment(string XML) {
             exit(1);
         }
         Steps.back().endFL = Steps.back().endAltitude / 100;
-        Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS, convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                                          convertUnit(KNOTS, METERPERSECOND, Steps.back().endCAS)));
-        Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, convertUnit(KNOTS, METERPERSECOND, Steps.back().endTAS));
+        Steps.back().endTAS =  convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endCAS);
+        Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, Steps.back().endAltitude, myISA, Steps.back().endTAS);
         Steps.back().relSegmentLength = 0.0;
     } else if (Steps.back().missionPhase == "cruise") {
-        Steps.back().endMach = missionXML.at(XML + "/endMach");
-        Steps.back().endFL = missionXML.at(XML + "/endFL");
-        Steps.back().relSegmentLength = missionXML.at(XML + "/relSegmentLength");
+        if (missionXML.find(XML+"/mach_number")) {
+            Steps.back().endMach = EndnodeReadOnly<double>(XML + "/mach_number").read(missionXML).value();
+        }
+        if (missionXML.find(XML+"/altitude")) {
+            Steps.back().endFL = EndnodeReadOnly<double>(XML+"/altitude").read(missionXML).value() / 100;
+        }
+        if (missionXML.find(XML+"/relative_segment_length")) {
+            Steps.back().relSegmentLength = EndnodeReadOnly<double>(XML + "/relative_segment_length").read(missionXML).value();
+        }
         /* Filling the unoccupied entries depending on the step */
         if (Steps.back().modeStep == "change_speed_to_CAS") {
             if (Steps.back().endCAS <= 0.0) {
@@ -144,10 +162,8 @@ void missionDefinition::getMissionSegment(string XML) {
             }
             Steps.back().endAltitude = Steps.at(Steps.size() - 2).endAltitude;
             Steps.back().endFL = Steps.back().endAltitude / 100;
-            Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS, convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                                  convertUnit(KNOTS, METERPERSECOND, Steps.back().endCAS)));
-            Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                                               convertUnit(KNOTS, METERPERSECOND, Steps.back().endTAS));
+            Steps.back().endTAS = convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endCAS);
+            Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, Steps.back().endAltitude, myISA, Steps.back().endTAS);
         } else if (Steps.back().modeStep == "climb_to_cruise") {
             if (Steps.back().endFL <= 0.0) {
                 myRuntimeInfo->err << "flight phase: " << Steps.back().missionPhase << " | Step: " << Steps.back().modeStep << endl;
@@ -160,10 +176,8 @@ void missionDefinition::getMissionSegment(string XML) {
                 exit(1);
             }
             Steps.back().endAltitude = 100 * Steps.back().endFL;
-            Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS,
-                                              convertUnit(MACH, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, Steps.back().endMach));
-            Steps.back().endCAS = convertUnit(METERPERSECOND, KNOTS,
-                                              convertUnit(MACH, CALIBRATEDAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, Steps.back().endMach));
+            Steps.back().endTAS = convertUnit(MACH, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endMach);
+            Steps.back().endCAS = convertUnit(MACH, CALIBRATEDAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endMach);
             cruiseAlt.push_back(Steps.back().endAltitude);
             //Steps.back().endROC = missionXML.at(XML + "/ROC");
         } else if (Steps.back().modeStep == "change_speed_to_Mach") {
@@ -174,10 +188,8 @@ void missionDefinition::getMissionSegment(string XML) {
             }
             Steps.back().endAltitude = Steps.at(Steps.size() - 2).endAltitude;
             Steps.back().endFL = Steps.at(Steps.size() - 2).endFL;
-            Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS,
-                                              convertUnit(MACH, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, Steps.back().endMach));
-            Steps.back().endCAS = convertUnit(METERPERSECOND, KNOTS,
-                                              convertUnit(MACH, CALIBRATEDAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, Steps.back().endMach));
+            Steps.back().endTAS = convertUnit(MACH, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endMach);
+            Steps.back().endCAS = convertUnit(MACH, CALIBRATEDAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endMach);
         } else if (Steps.back().modeStep == "cruise") {
             Steps.back().endAltitude = Steps.at(Steps.size() - 2).endAltitude;
             Steps.back().endFL = Steps.at(Steps.size() - 2).endFL;
@@ -219,10 +231,8 @@ void missionDefinition::getMissionSegment(string XML) {
                 exit(1);
             }
             Steps.back().endFL = Steps.back().endAltitude / 100;
-            Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS, convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                                  convertUnit(KNOTS, METERPERSECOND, Steps.back().endCAS)));
-            Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                                               convertUnit(KNOTS, METERPERSECOND, Steps.back().endTAS));
+            Steps.back().endTAS = convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endCAS);
+            Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, Steps.back().endAltitude, myISA, Steps.back().endTAS);
         } else {
             myRuntimeInfo->err << "flight phase: " << Steps.back().missionPhase << " | Step: " << Steps.back().modeStep << endl;
             myRuntimeInfo->err << "Step in this flight phase is unknown! Abort!" << endl;
@@ -255,9 +265,8 @@ void missionDefinition::getMissionSegment(string XML) {
             exit(1);
         }
         Steps.back().endFL = Steps.back().endAltitude / 100;
-        Steps.back().endTAS = convertUnit(METERPERSECOND, KNOTS, convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA,
-                              convertUnit(KNOTS, METERPERSECOND, Steps.back().endCAS)));
-        Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, convertUnit(FOOT, METER, Steps.back().endAltitude), myISA, convertUnit(KNOTS, METERPERSECOND, Steps.back().endTAS));
+        Steps.back().endTAS = convertUnit(CALIBRATEDAIRSPEED, TRUEAIRSPEED, Steps.back().endAltitude, myISA, Steps.back().endCAS);
+        Steps.back().endMach = convertUnit(TRUEAIRSPEED, MACH, Steps.back().endAltitude, myISA, Steps.back().endTAS);
         Steps.back().relSegmentLength = 0.0;
     } else {
         myRuntimeInfo->err << "The mission segment cannot be determined!" << endl;
@@ -269,7 +278,7 @@ void missionDefinition::getMissionSegment(string XML) {
 void missionDefinition::getMissionPoint() {
     if (Steps.size() == 1) {
         Steps.back().Point.Altitude = Steps.back().endAltitude;
-        Steps.back().Point.Temperature = myISA.getTemperature(convertUnit(FOOT, METER, Steps.back().Point.Altitude));
+        Steps.back().Point.Temperature = myISA.getTemperature(Steps.back().Point.Altitude);
         Steps.back().Point.CAS = Steps.back().endCAS;
         Steps.back().Point.TAS = Steps.back().endTAS;
         Steps.back().Point.Mach = Steps.back().endMach;
@@ -278,7 +287,7 @@ void missionDefinition::getMissionPoint() {
     } else {
         Steps.back().Point.Altitude = Steps.at(Steps.size() - 2).endAltitude
                                       + 0.5 * (Steps.back().endAltitude - Steps.at(Steps.size() - 2).endAltitude);
-        Steps.back().Point.Temperature = myISA.getTemperature(convertUnit(FOOT, METER, Steps.back().Point.Altitude));
+        Steps.back().Point.Temperature = myISA.getTemperature(Steps.back().Point.Altitude);
         Steps.back().Point.CAS = Steps.at(Steps.size() - 2).endCAS
                                  + 0.5 * (Steps.back().endCAS - Steps.at(Steps.size() - 2).endCAS);
         Steps.back().Point.TAS = Steps.at(Steps.size() - 2).endTAS
@@ -291,9 +300,8 @@ void missionDefinition::getMissionPoint() {
                                            + 0.5 * (Steps.back().bleedOffTakes - Steps.at(Steps.size() - 2).bleedOffTakes);
     }
     Steps.back().Point.ROC = Steps.back().endROC;
-    Steps.back().Point.density = myISA.getDensity(convertUnit(FOOT, METER, Steps.back().Point.Altitude));
-    Steps.back().Point.dynamicPressure = 0.5 * myISA.getDensity(convertUnit(FOOT, METER, Steps.back().Point.Altitude)) *
-                                         pow(convertUnit(KNOTS, METERPERSECOND, Steps.back().Point.TAS), 2.);
+    Steps.back().Point.density = myISA.getDensity(Steps.back().Point.Altitude);
+    Steps.back().Point.dynamicPressure = 0.5 * myISA.getDensity(Steps.back().Point.Altitude) * pow(Steps.back().Point.TAS, 2.);
     if (Steps.back().modeStep == "takeoff") {
         Steps.back().Point.simplifiedMODE = "takeoff";
     } else if (Steps.back().modeStep == "climb") {
diff --git a/performance_assessment/src/taw/defaultMethods/missionDefinition.h b/performance_assessment/src/taw/defaultMethods/missionDefinition.h
index 2d625297818215a2cfa6eb4dd41a872890a0ce92..8ca62a09d56ef6c01fb12694514848d4f096264f 100644
--- a/performance_assessment/src/taw/defaultMethods/missionDefinition.h
+++ b/performance_assessment/src/taw/defaultMethods/missionDefinition.h
@@ -43,21 +43,21 @@ class missionDefinition {
     string missionPhase; /**< name of the mission phase */
 
     double missionPayload; /**< Payload during the mission (kg) */
-    double missionPAX; /**< Number of passengers during the mission (kg) */
+    double missionPAX; /**< Number of passengers during the mission (-) */
     double missionCargo; /**< Cargo mass during the mission (kg) */
-    double missionRange; /**< Range of the mission (km) */
+    double missionRange; /**< Range of the mission (m) */
     double alternateRange; /**< Distance to the alternate airport (km) */
     double deltaISA; /**< Temperature delta to the ISA-Conditions (K) */
-    double taxiTimeOrigin; /**< Time for taxiing at the origin (min) */
-    double taxiTimeDestination; /**< Time for taxiing at the destination (min) */
+    double taxiTimeOrigin; /**< Time for taxiing at the origin (s) */
+    double taxiTimeDestination; /**< Time for taxiing at the destination (s) */
 
     double crMach; /**< Desired cruise speed for the calculation of the fuel amount */
 
     double bleedOffTO; /**< Bleed air off take at take-off (kg/s) */
-    double shaftOffTO; /**< Shaft power off take at take-off (kW) */
+    double shaftOffTO; /**< Shaft power off take at take-off (W) */
 
     double bleedOffCr; /**< Bleed air off take at cruise(kg/s) */
-    double shaftOffCr; /**< Shaft power off take at cruise (kW) */
+    double shaftOffCr; /**< Shaft power off take at cruise (W) */
 
     uint16_t numberDepartureSteps; /**< Number of steps during depature in the mission.xml  (-) */
     uint16_t numberCruiseSteps; /**< Number of steps during cruise in the mission.xml (-) */
@@ -70,17 +70,17 @@ class missionDefinition {
      public:
         string simplifiedMODE; /**< Mission phase (TakeOff, Climb, Accelerate, Cruise, Descend, Landing) */
 
-        double Altitude; /**< Aircraft altitude (ft) */
+        double Altitude; /**< Aircraft altitude (m) */
         double Temperature; /**< Air temperature (K) */
-        double CAS; /**< Calibrated air speed (kts) */
-        double TAS; /**< True air speed (kts) */
+        double CAS; /**< Calibrated air speed (m/s) */
+        double TAS; /**< True air speed (m/s) */
         double Mach; /**< Mach number (-) */
         double density; /**< Air density (kg / pow(m,3)) */
         double dynamicPressure; /**< Dynamic pressure (kg/m*pow(s,2))*/
 
-        double ROC; /**< Rate of climb (ft / min)*/
+        double ROC; /**< Rate of climb (m/s)*/
 
-        double shaftOffTakes; /**< Shaft off take (kW)*/
+        double shaftOffTakes; /**< Shaft off take (W)*/
         double bleedOffTakes; /**< Bleed air off take (kg/s) */
 
         averageMissionPoint() {
diff --git a/performance_assessment/src/taw/defaultMethods/optimizeMissionProfile/low_fidelity/optimizeMissionProfile.cpp b/performance_assessment/src/taw/defaultMethods/optimizeMissionProfile/low_fidelity/optimizeMissionProfile.cpp
index bb3f81767fb10635bb7bd1fbb88420a0dbd5a5bb..afa52d74db6920cd8374b9041c2a71ce2b4b1c1a 100644
--- a/performance_assessment/src/taw/defaultMethods/optimizeMissionProfile/low_fidelity/optimizeMissionProfile.cpp
+++ b/performance_assessment/src/taw/defaultMethods/optimizeMissionProfile/low_fidelity/optimizeMissionProfile.cpp
@@ -30,12 +30,12 @@ optimizeMissionProfile::~optimizeMissionProfile() {
 }
 
 void low::optimizeMissionProfile::doOptimizeMission(std::shared_ptr<abstractFuelPlanning>& myFuelPlanning, const std::shared_ptr<RuntimeIO>& rtIO, bool sizingForMTOM) {
-    double maxAltitudeForRange = 0.5 * (theAcftPt->designRange - 150.) * 1000. * tan(2.5 * 3.14159 / 180.) / 0.3048 / 100.;
+    double maxAltitudeForRange = 0.5 * (theAcftPt->designRange - 150.) * 1000. * tan(convertUnit(DEGREE, RADIAN, 2.5)) / 0.3048 / 100.;
     if (theAcftPt->hMaxOperating / 100. < maxAltitudeForRange) {
         maxAltitudeForRange = theAcftPt->hMaxOperating / 100.;
     }
     for (unsigned int i(0); i <= theAcftPt->myMission.Steps.size() - 1; i++) {
-        if (theAcftPt->myMission.Steps.at(i).modeStep == "Cruise") {
+        if (theAcftPt->myMission.Steps.at(i).modeStep == "cruise") {
             cruiseSteps.push_back(theCruiseSteps());
             cruiseSteps.back().ID = i + 1;
             cruiseSteps.back().oldFL        = theAcftPt->myMission.Steps.at(i).endFL;
@@ -69,13 +69,13 @@ double optimizeMissionProfile::getNewFlightLevel(double theLift, double theMach)
     double targetFL(theAcftPt->hInitialCruise / 100.);
     double SAR = 0.;
     for (double i = theAcftPt->hInitialCruise; i <= theAcftPt->hMaxOperating; i = i + deltaStep) {
-        double theDrag = theAcftPt->aero.getCruiseDrag(theMach,  i * 0.3048, 0., theLift / G_FORCE, "Clean", theAcftPt->atm);
-        theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, i * 0.3048, theMach, theAcftPt->atm, 1., "MaxCont",
-                theAcftPt->myMission.bleedOffCr, theAcftPt->myMission.shaftOffCr, theDrag / 1000.);
-        if (theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) < 0.99999 * theDrag / 1000.) {
+        double theDrag = theAcftPt->aero.getCruiseDrag(theMach,  i * 0.3048, 0., theLift / G_FORCE, "clean", theAcftPt->atm);
+        theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, i * 0.3048, theMach, theAcftPt->atm, 1., "maximum_continuous",
+                theAcftPt->myMission.bleedOffCr, theAcftPt->myMission.shaftOffCr, theDrag);
+        if (theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise) < 0.99999 * theDrag) {
             break;
         }
-        double tempROC = theAcftPt->ROC(theLift / G_FORCE, i * 0.3048, theMach, 1.0, "Clean", "MaxCont",
+        double tempROC = theAcftPt->ROC(theLift / G_FORCE, i * 0.3048, theMach, 1.0, "clean", "maximum_continuous",
                                         theAcftPt->myMission.bleedOffCr, theAcftPt->myMission.shaftOffCr,
                                         false, theAcftPt->aero) * (60. / 0.3048);
         if (tempROC < 300.) {
diff --git a/performance_assessment/src/taw/defaultMethods/payloadRange/low_fidelity/payloadRange.cpp b/performance_assessment/src/taw/defaultMethods/payloadRange/low_fidelity/payloadRange.cpp
index 487d201be532bf383f49061d4aea52167c2b7d73..ec0decdaab124b24a3258aa985471292b7acb036 100644
--- a/performance_assessment/src/taw/defaultMethods/payloadRange/low_fidelity/payloadRange.cpp
+++ b/performance_assessment/src/taw/defaultMethods/payloadRange/low_fidelity/payloadRange.cpp
@@ -46,11 +46,11 @@ void payloadRange::calcPayloadRange() {
     // myRuntimeInfo->out << "cruiseHeigth " << cruiseHeight << endl;
     // TODO(franz#1#): statt MTOM, MTOM reduziert um Massfractions Start, Climb
     // TODO(franz#1#): ggf. statt LoverD und SFC ausrechnen aus Aircraft XML holen und dann Drag ausrechnen
-    double theLoverD = theAcftPt->aero.getCruiseLoverD(theAcftPt->myMission.crMach, convertUnit(FOOT, METER, theAcftPt->hInitialCruise), 0.0, theAcftPt->MTOM, "Clean",
+    double theLoverD = theAcftPt->aero.getCruiseLoverD(theAcftPt->myMission.crMach, convertUnit(FOOT, METER, theAcftPt->hInitialCruise), 0.0, theAcftPt->MTOM, "clean",
                                                        theAcftPt->atm);
-    double theDrag = theAcftPt->aero.getCruiseDrag(theAcftPt->myMission.crMach, convertUnit(FOOT, METER, theAcftPt->hInitialCruise), 0.0, theAcftPt->MTOM, "Clean", theAcftPt->atm);
-    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, convertUnit(FOOT, METER, theAcftPt->hInitialCruise), theAcftPt->myMission.crMach, theAcftPt->atm, 1.0, "MaxCont", 0., 0.,
-                                                     theDrag / 1000.);
+    double theDrag = theAcftPt->aero.getCruiseDrag(theAcftPt->myMission.crMach, convertUnit(FOOT, METER, theAcftPt->hInitialCruise), 0.0, theAcftPt->MTOM, "clean", theAcftPt->atm);
+    theAcftPt->myEngines.calculate_N1_with_thrustlimit(theAcftPt->myEnergyProviders.energyCarrierID_cruise, theAcftPt->hInitialCruise, theAcftPt->myMission.crMach, theAcftPt->atm, 1.0, "maximum_continuous", 0., 0.,
+                                                     theDrag);
     double theSFC = theAcftPt->myEngines.get_aircraft_fuelflow(theAcftPt->myEnergyProviders.energyCarrierID_cruise) / theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_cruise);
     breguetFactor = (theAcftPt->myMission.crMach * theAcftPt->atm.getSpeedOfSound(cruiseHeight) * theLoverD) / (G_FORCE * theSFC);
     /* Determination of the 0.point */
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.cpp b/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.cpp
index 8dca4f5d816fe662d570e235c576364ab3ec6be1..55ef4b7e637f3306bcc3bf5b8edd294bf992d537 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.cpp
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.cpp
@@ -25,46 +25,31 @@ performance_assessment_factory::performance_assessment_factory(const std::shared
     rtIO(rtIOin),
     mySettings(rtIOin),
     mySettingsPt(std::make_shared<performance_assessment_settings>(mySettings)),
-    myAcft(rtIO, mySettings),
-    myAcftPt(std::make_shared<aircraft>(myAcft)),
-    missionXML(aixml::openDocument(static_cast<std::string>(rtIO->acxml.at(
-        "/aircraft_exchange_file/requirements_and_specifications/mission_files/study_mission_file/value")))) {
+    myAcft(rtIO, mySettingsPt),
+    myAcftPt(std::make_shared<aircraft>(myAcft))
+    // missionXML(aixml::openDocument(static_cast<std::string>(rtIO->acxml.at(
+        // "/aircraft_exchange_file/requirements_and_specifications/mission_files/study_mission_file/value")))) 
+        {
 }
 
 void performance_assessment_factory::initialize() {
     /* Get desired fidelity level of methods*/
-    throwError<std::string>(__FILE__, __func__, __LINE__, "Module is not finished yet.");
-    fidelityLevelFuelPlanning = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/PayloadRangeDiagram/fidelityLevel"));  // PFADE ÜBERPRÜFEN
-    fidelityLevelOptimizeMission = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/PayloadRangeDiagram/fidelityLevel"));
-    fidelityLevelPayloadRangeDiagram = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/PayloadRangeDiagram/fidelityLevel"));
-    fidelityLevelEnginePerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/EnginePerformance/fidelityLevel"));
-    fidelityLevelFlightEnvelopePerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/FlightEnvelopePerformance/fidelityLevel"));
-    fidelityLevelClimbPerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/ClimbPerformance/fidelityLevel"));
-    fidelityLevelTakeOffPerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/TOPerformance/fidelityLevel"));
-    fidelityLevelLandingPerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/LandingPerformance/fidelityLevel"));
-    fidelityLevelVnDiagram = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/VnDiagram/fidelityLevel"));
-    fidelityLevelSARPerformance = static_cast<std::string>(rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/SARPerformance/fidelityLevel"));
-    /* Other settings*/
-    // doFuelPlanning = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/Modes/FuelPlanning");
-    // doOptimizeMission = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/Mission/optimizeMissionProfile");
-    // doPayloadRange              = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/PayloadRangeDiagram");
-    // doEnginePerformance         = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/EnginePerformance");
-    // doFlightEnvelopePerformance = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/FlightEnvelopePerformance");
-    // overwriteInitialValues      = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/FlightEnvelopePerformance").getIntAttrib("OverwriteInitialValues");
-    // doClimbPerformance          = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/ClimbPerformance");
-    // doTOPerformance             = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/TOPerformance");
-    // if (doTOPerformance) {
-    //     doBLFLPerformance       = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/TOPerformance").getBoolAttrib("CalculateBLFLPerformance");
-    // } else {
-    //     doBLFLPerformance       = false;
-    // }
-    // doLandingPerformance        = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/LandingPerformance");
-    // doVnDiagram                 = rtIO->moduleConfig.at("/ConfigFile/ProgramSettings/PerformanceChecks/VnDiagram");
-
-    // doFuelPlanning = mySettingsPt->mySwitches.doFuelPlanning;
-
-
-
+    fidelityLevelFuelPlanning = static_cast<std::string>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/fuel_planning/fidelity_level"));
+    fidelityLevelOptimizeMission = static_cast<std::string>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/mission/fidelity_level"));
+    fidelityLevelPayloadRangeDiagram = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/payload_range_diagram/fidelity_level"));
+    fidelityLevelEnginePerformance = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/engine_performance/fidelity_level"));
+    fidelityLevelFlightEnvelopePerformance = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/flight_envelope_performance/fidelity_level"));
+    fidelityLevelClimbPerformance = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/climb_performance/fidelity_level"));
+    fidelityLevelTakeOffPerformance = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/takeoff_performance/fidelity_level"));
+    fidelityLevelLandingPerformance = static_cast<std::string>(rtIO->moduleConfig
+        .at("/module_configuration_file/program_settings/performance_checks/landing_performance/fidelity_level"));
+    fidelityLevelVnDiagram = static_cast<std::string>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/vn_diagram/fidelity_level"));
+    fidelityLevelSARPerformance = static_cast<std::string>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/sar_performance/fidelity_level"));
 
     /* Initialization of performance_assessment objects */
     /* Fuel Planning */
@@ -72,14 +57,13 @@ void performance_assessment_factory::initialize() {
         // Custom implementation here, e.g.:
         // abstractFuelPlanningPt = std::make_shared<high::fuelPlanning>(someArgs);  // Create Object and puts it in interface class pointer
     } else if (fidelityLevelFuelPlanning == "low") {  // low fidelity fuelPlanning
-        abstractFuelPlanningPt = std::make_shared<low::fuelPlanning>(&myAcft, &mySettings, rtIO);  // Create Object and puts it in interface class pointer
-        abstractFuelPlanningPt->setFactory(shared_from_this());  // Enables Factory-Products to access the factory to check what fidelity levels other products are
-        // TODO(Hansmann): Currently unused
+        abstractFuelPlanningPt = std::make_shared<low::fuelPlanning>(myAcftPt, mySettingsPt, rtIO);  // Create Object and puts it in interface class pointer
+        // abstractFuelPlanningPt->setFactory(shared_from_this());  // Enables Factory-Products to access the factory to check what fidelity levels other products are
     } else {
-        myRuntimeInfo->warn << "Unavailable fidelity level for FuelPlanning selected! Exiting"<< std::endl;
+        myRuntimeInfo->warn << "Unavailable fidelity level for 'FuelPlanning' selected! Exiting"<< std::endl;
         exit(1);
     }
-    /* MissionOptimization */
+    /* Mission Optimization */
         if (fidelityLevelOptimizeMission == "high") {  // high fidelity optimizeMission
         // ...
     } else if (fidelityLevelFuelPlanning == "low") {  // low fidelity optimizeMission
@@ -137,7 +121,7 @@ void performance_assessment_factory::initialize() {
     if (fidelityLevelLandingPerformance == "high") {
         // ...
     } else if (fidelityLevelLandingPerformance == "low") {
-        theLandingPerformance = std::make_shared<low::landingPerformance>(myAcftPt);
+        abstractLandingPerformancePt = std::make_shared<low::landingPerformance>(myAcftPt);
     } else {
         myRuntimeInfo->warn << "Unavailable fidelity level for 'landingPerformance' selected! Exiting"<< std::endl;
         exit(1);
@@ -146,7 +130,7 @@ void performance_assessment_factory::initialize() {
     if (fidelityLevelVnDiagram == "high") {
         // ...
     } else if (fidelityLevelVnDiagram == "low") {
-        theVnDiagram = std::make_shared<low::VnDiagram>(myAcftPt, mySettingsPt);
+        abstractVnDiagramPt = std::make_shared<low::VnDiagram>(myAcftPt, mySettingsPt);
     } else {
         myRuntimeInfo->warn << "Unavailable fidelity level for 'VnDiagram' selected! Exiting"<< std::endl;
         exit(1);
@@ -158,7 +142,7 @@ void performance_assessment_factory::run() {
 if (mySettingsPt->mySwitches.doFuelPlanning == true) {
     myRuntimeInfo->out << "  -> Fuel Planning" << std::endl;
     try {
-        theFuelPlanning->doFuelPlanning();
+        abstractFuelPlanningPt->doFuelPlanning();
     } catch (const int& errorCode) {
         throwError(__FILE__, __func__, __LINE__,
                 "Error in fuel planning. Possibly thrust rating of engine could not be set correctly. See logLevel=2 (Info) for more details.");
@@ -167,7 +151,7 @@ if (mySettingsPt->mySwitches.doFuelPlanning == true) {
 /* Optimize Mission */
 if (mySettingsPt->optimizeMission == true) {
     try {
-        theOptimizeMission->doOptimizeMission(theFuelPlanning, rtIO, mySettingsPt->designForMTOM);
+        abstractOptimizeMissionProfilePt->doOptimizeMission(abstractFuelPlanningPt, rtIO, mySettingsPt->designForMTOM);
         // theOptimizeMission->doOptimizeMission(&theFuelPlanning, rtIO, mySettingsPt->designForMTOM);
         } catch (const int& errorCode) {
         throwError(__FILE__, __func__, __LINE__,
@@ -177,16 +161,20 @@ if (mySettingsPt->optimizeMission == true) {
 
 /* PayloadRange */
 if (mySettingsPt->mySwitches.doPayloadRange == true) {
+    if (mySettingsPt->mySwitches.doFuelPlanning == false) {
+        throwError(__FILE__, __func__, __LINE__,
+            "Error in payload range diagram calculation: Fuel planning needed for payload range calculation. Please turn on fuel planning.");
+    }
     if (!mySettingsPt->designForMTOM && mySettingsPt->useStudyMissionForAnalysis) {
         myRuntimeInfo->out << "Attention: Payload range diagram incorrect when MTOM Design off or StudyMission is used!" << std::endl;
-        theFuelPlanning->doPayloadRangeOLD();
+        abstractFuelPlanningPt->doPayloadRangeOLD();
     } else {
         myRuntimeInfo->out << "      ... Payload Range using OLD method" << std::endl;
-        theFuelPlanning->doPayloadRangeOLD();
-        theFuelPlanning->doFuelPayloadRangeOLD();
+        abstractFuelPlanningPt->doPayloadRangeOLD();
+        abstractFuelPlanningPt->doFuelPayloadRangeOLD();
     }
 } else {
-    theFuelPlanning->payloadRangeFromAcftXML();
+    abstractFuelPlanningPt->payloadRangeFromAcftXML();
 }
 if (mySettingsPt->mySwitches.doPayloadRange == true && mySettingsPt->mySwitches.doFuelPlanning == false) {
     myRuntimeInfo->out << "      ... Payload Range" << std::endl;
@@ -237,14 +225,14 @@ if (mySettingsPt->mySwitches.doTOPerformance == true) {
 /* Landing Performance */
 if (mySettingsPt->mySwitches.doLandingPerformance == true) {
     myRuntimeInfo->out << "  -> Landing Performance" << std::endl;
-    theLandingPerformance->doLandingPerformance(mySettingsPt->myField.runwaySlope,
+    abstractLandingPerformancePt->doLandingPerformance(mySettingsPt->myField.runwaySlope,
             myAcftPt->brakingCoefficient,
             mySettingsPt->myField.headWind);
 }
 /* Vn-Diagram */
 if (mySettingsPt->mySwitches.doVnDiagram == true) {
     myRuntimeInfo->out << "  -> V-n Diagram" << std::endl;
-    theVnDiagram->doVnDiagram();
+    abstractVnDiagramPt->doVnDiagram();
 }
 }  // end of run()
 
@@ -253,10 +241,22 @@ void performance_assessment_factory::update() {
 }
 
 void performance_assessment_factory::report() {
-    performance_assessment_output theOutput(shared_from_this(), shared_from_this()->myAcftPt);
+    performance_assessment_output theOutput(
+        abstractFuelPlanningPt,
+        abstractOptimizeMissionProfilePt,
+        abstractPayloadRangePt,
+        abstractEnginePerformancePt,
+        abstractCeilingPerformancePt,
+        abstractFlightEnvelopesPt,
+        abstractSARPerformancePt,
+        abstractTakeOffPerformancePt,
+        abstractLandingPerformancePt,
+        abstractVnDiagramPt,
+        myAcftPt);
 
     theOutput.generateHtmlBody();
     theOutput.writeXmlOutput();
+    theOutput.generatePlotData();
     // (...)
 }
 
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.h b/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.h
index 17293545bb7c4dcac5aeffb131a4607ff733982d..9bfdee03e737f65cbd633ede9231e04c7e139c0c 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.h
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_factory.h
@@ -14,8 +14,8 @@
     You should have received a copy of the GNU General Public License
     along with UNICADO.  If not, see <http://www.gnu.org/licenses/>.
 */
-#ifndef performance_assessment_SRC_TAW_DEFAULTMETHODS_performance_assessmentFactory_H_
-#define performance_assessment_SRC_TAW_DEFUALTMETHODS_performance_assessmentFactory_H_
+#ifndef PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_PERFORMANCE_ASSESSMENT_Factory_H_
+#define PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_PERFORMANCE_ASSESSMENT_Factory_H_
 
 #include <moduleBasics/module.h>
 #include <moduleBasics/strategySelector.h>
@@ -25,12 +25,12 @@
 #include <functional>
 #include <map>
 #include <memory>
+#include <utility>
 #include <string>
 
 #include "performance_assessment_settings.h"
 #include "../defaultMethods/aircraft.h"
 
-
 /* Include custom implementation header files here */
 // ...
 
@@ -41,7 +41,7 @@
 #include "enginePerformance/low_fidelity/enginePerformance.h"
 #include "SARPerformance/low_fidelity/SARPerformance.h"
 #include "ceilingPerformance/low_fidelity/ceilingPerformance.h"
-#include "takeOffPerformance/low_fidelity/takeOffperformance.h"
+#include "takeOffPerformance/low_fidelity/takeOffPerformance.h"
 #include "landingPerformance/low_fidelity/landingPerformance.h"
 #include "VnDiagram/low_fidelity/VnDiagram.h"
 
@@ -53,7 +53,7 @@
 #include "enginePerformance/abstractEnginePerformance.h"
 #include "SARPerformance/abstractSARPerformance.h"
 #include "flightEnvelopes/abstractFlightEnvelopes.h"
-#include "takeOffperformance/abstractTakeOffPerformance.h"
+#include "takeOffPerformance/abstractTakeOffPerformance.h"
 #include "landingPerformance/abstractLandingPerformance.h"
 #include "VnDiagram/abstractVnDiagram.h"
 
@@ -77,20 +77,17 @@ class performance_assessment_factory : public Strategy, std::enable_shared_from_
     std::shared_ptr<performance_assessment_settings> mySettingsPt;
     aircraft myAcft;
     std::shared_ptr<aircraft> myAcftPt;
-    node& missionXML;
 
-    std::shared_ptr<abstractFuelPlanning> abstractFuelPlanningPt;
-    std::shared_ptr<abstractFuelPlanning> theFuelPlanning;  /**< fuelPlanning object */
-    std::shared_ptr<abstractOptimizeMissionProfile> abstractOptimizeMissionProfilePt;
-    std::shared_ptr<abstractOptimizeMissionProfile> theOptimizeMission;  /**< optimizeMissionProfile object */
+    std::shared_ptr<abstractFuelPlanning> abstractFuelPlanningPt;  /**< fuelPlanning object */
+    std::shared_ptr<abstractOptimizeMissionProfile> abstractOptimizeMissionProfilePt;  /**< optimizeMissionProfile object */
     std::shared_ptr<abstractPayloadRange> abstractPayloadRangePt;  /**< payloadRange object */
     std::shared_ptr<abstractEnginePerformance> abstractEnginePerformancePt;  /**< enginePerformance object */
     std::shared_ptr<abstractCeilingPerformance> abstractCeilingPerformancePt; /**< ceilingPerformance object*/
     std::shared_ptr<abstractFlightEnvelopes> abstractFlightEnvelopesPt; /**< flightEnvelopes object */
     std::shared_ptr<abstractSARPerformance> abstractSARPerformancePt; /**< SARPerformance object */
     std::shared_ptr<abstractTakeOffPerformance> abstractTakeOffPerformancePt; /**< takeOffPerformance object */
-    std::shared_ptr<abstractLandingPerformance> theLandingPerformance; /**< landingPerformance object */
-    std::shared_ptr<abstractVnDiagram> theVnDiagram; /**< VnDiagram object */
+    std::shared_ptr<abstractLandingPerformance> abstractLandingPerformancePt; /**< landingPerformance object */
+    std::shared_ptr<abstractVnDiagram> abstractVnDiagramPt; /**< VnDiagram object */
 
     std::string fidelityLevelFuelPlanning;
     std::string fidelityLevelOptimizeMission;
@@ -106,4 +103,5 @@ class performance_assessment_factory : public Strategy, std::enable_shared_from_
 };
 
 }  // namespace taw
-#endif   // CALCULATEPERFORMANCE_SRC_TAW_DEFUALTMETHODS_LOW_FIDELITY_performance_assessment_Factory_H_
+
+#endif   // PERFORMANCE_ASSESSMENT_SRC_TAW_DEFAULTMETHODS_PERFORMANCE_ASSESSMENT_FACTORY_H_
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_output.cpp b/performance_assessment/src/taw/defaultMethods/performance_assessment_output.cpp
index 76a1079294c6bf5d355681cf0bede86d688838f0..494d5178305f824954ddb8b4ac9bef181ef98a35 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_output.cpp
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_output.cpp
@@ -16,21 +16,40 @@
 */
 
 #include "performance_assessment_factory.h"
-
 #include "performance_assessment_output.h"
 
-
-
-performance_assessment_output::performance_assessment_output(std::shared_ptr<taw::performance_assessment_factory> aFactoryPt, std::shared_ptr<aircraft> anAcftPt)
+performance_assessment_output::performance_assessment_output(
+        std::shared_ptr<abstractFuelPlanning> abstractFuelPlanningPt,
+        std::shared_ptr<abstractOptimizeMissionProfile> abstractOptimizeMissionProfilePt,
+        std::shared_ptr<abstractPayloadRange> abstractPayloadRangePt,
+        std::shared_ptr<abstractEnginePerformance> abstractEnginePerformancePt,
+        std::shared_ptr<abstractCeilingPerformance> abstractCeilingPerformancePt,
+        std::shared_ptr<abstractFlightEnvelopes> abstractFlightEnvelopesPt,
+        std::shared_ptr<abstractSARPerformance> abstractSARPerformancePt,
+        std::shared_ptr<abstractTakeOffPerformance> abstractTakeOffPerformancePt,
+        std::shared_ptr<abstractLandingPerformance> abstractLandingPerformancePt,
+        std::shared_ptr<abstractVnDiagram> abstractVnDiagramPt,
+        const std::shared_ptr<aircraft> anAcftPt)
     :
-    theFactoryPt(aFactoryPt),
     myAcftPt(anAcftPt),
-    theReport(aFactoryPt->rtIO) {
+    mySettingsPt(myAcftPt->mySettingsPt),
+    rtIO(myAcftPt->rtIO),
+    abstractFuelPlanningPt(abstractFuelPlanningPt),
+    abstractOptimizeMissionProfilePt(abstractOptimizeMissionProfilePt),
+    abstractPayloadRangePt(abstractPayloadRangePt),
+    abstractEnginePerformancePt(abstractEnginePerformancePt),
+    abstractCeilingPerformancePt(abstractCeilingPerformancePt),
+    abstractFlightEnvelopesPt(abstractFlightEnvelopesPt),
+    abstractSARPerformancePt(abstractSARPerformancePt),
+    abstractTakeOffPerformancePt(abstractTakeOffPerformancePt),
+    abstractLandingPerformancePt(abstractLandingPerformancePt),
+    abstractVnDiagramPt(abstractVnDiagramPt),
+    theReport(myAcftPt->rtIO) {
     // ctor
-    if (theFactoryPt->mySettings.mySwitches.doFuelPlanning && theFactoryPt->mySettings.useStudyMissionForAnalysis) {
-        theProgramName = theFactoryPt->rtIO->programname + "_study";
+    if (mySettingsPt->mySwitches.doFuelPlanning && mySettingsPt->useStudyMissionForAnalysis) {
+        theProgramName = rtIO->programname + "_study";
     } else {
-        theProgramName = theFactoryPt->rtIO->programname;
+        theProgramName = rtIO->programname;
     }
 }
 
@@ -40,39 +59,39 @@ performance_assessment_output::~performance_assessment_output() {
 
 void performance_assessment_output::generateHtmlBody() {
     theReport.htmlReportStream() << "<h1>Report " << myAcftPt->acftName << "</h1>" << std::endl;
-    if (theFactoryPt->mySettingsPt->mySwitches.doFuelPlanning == true) {
+    if (mySettingsPt->mySwitches.doFuelPlanning == true) {
         theReport.htmlReportStream() << "<h2>Fuel Planning</h2>" << std::endl
         << "<table class=\"ceras\">" << std::endl
         << "<tr>" << std::endl
-        << "<td>Taxi Fuel: </td><td>" << theFactoryPt->theFuelPlanning->myFuel.taxiFuelTakeoff + theFactoryPt->theFuelPlanning->myFuel.taxiFuelLanding << " kg</td>" << std::endl
+        << "<td>Taxi Fuel: </td><td>" << abstractFuelPlanningPt->myFuel.taxiFuelTakeoff + abstractFuelPlanningPt->myFuel.taxiFuelLanding << " kg</td>" << std::endl
         << "</tr>" << std::endl
         << "<tr>" << std::endl
-        << "<td>Mission Fuel: </td><td>" << theFactoryPt->theFuelPlanning->myFuel.missionFuel << " kg</td>" << std::endl
+        << "<td>Mission Fuel: </td><td>" << abstractFuelPlanningPt->myFuel.missionFuel << " kg</td>" << std::endl
         << "</tr>" << std::endl
         << "<tr>" << std::endl
-        << "<td>Trip Fuel: </td><td>" << theFactoryPt->theFuelPlanning->myFuel.tripFuel << " kg</td>" << std::endl
+        << "<td>Trip Fuel: </td><td>" << abstractFuelPlanningPt->myFuel.tripFuel << " kg</td>" << std::endl
         << "</tr>" << std::endl
         << "<tr>" << std::endl
         << "<td>-> TOM: </td><td>" << Rounding(myAcftPt->OME
                 + myAcftPt->myMission.missionPayload
-                + theFactoryPt->theFuelPlanning->myFuel.missionFuel
-                - theFactoryPt->theFuelPlanning->myFuel.taxiFuelTakeoff, 1) << " kg</td>" << std::endl
+                + abstractFuelPlanningPt->myFuel.missionFuel
+                - abstractFuelPlanningPt->myFuel.taxiFuelTakeoff, 1) << " kg</td>" << std::endl
         << "</tr>" << std::endl
         << "<tr>" << std::endl
         << "<td>-> MTOM: </td><td>" << myAcftPt->MTOM << " kg</td>" << std::endl
         << "</tr>" << std::endl
         << "</table>" << std::endl
-        << "<img class=\"ceras\" src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir())
+        << "<img class=\"ceras\" src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir())
                 + theProgramName + "_Mission_plot.svg\">" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Payload Range</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doPayloadRange == true) {
-        if (theFactoryPt->mySettings.mySwitches.doFuelPlanning == true) {
-            theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doPayloadRange == true) {
+        if (mySettingsPt->mySwitches.doFuelPlanning == true) {
+            theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                    theProgramName + "_payloadRange.svg\">" << std::endl;
         } else {
-            if (theFactoryPt->abstractPayloadRangePt->Range.at(2) > myAcftPt->designRange) {
-                theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+            if (abstractPayloadRangePt->Range.at(2) > myAcftPt->designRange) {
+                theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                        theProgramName + "_payloadRange.svg\">" << std::endl;
             } else {
                 theReport.htmlReportStream() << "<table>" << std::endl
@@ -90,8 +109,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Flight Envelope</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doFlightEnvelopePerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doFlightEnvelopePerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_FlightEnvelope.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -101,8 +120,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Ceiling</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doFlightEnvelopePerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doFlightEnvelopePerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_Ceiling.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -112,13 +131,13 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Specific Air Range (SAR)</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doFlightEnvelopePerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doFlightEnvelopePerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_SAR.svg\">" << std::endl
         << "<div id=\"wrapper\">" << std::endl
         << "<div id=\"leftCol\">" << std::endl
         << "<h2>Best Specific Air Range (SAR)</h2>" << std::endl
-        << "<img class=\"ceras\" src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+        << "<img class=\"ceras\" src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_bestSAR.svg\">" << std::endl
         << "</div>" << std::endl
         << "</div>" << std::endl;
@@ -130,8 +149,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Takeoff Performance</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doTOPerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doTOPerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_TOFL.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -141,8 +160,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>BFL Performance</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doBLFLPerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doBLFLPerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_BLFL.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -152,8 +171,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Landing Performance</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doLandingPerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doLandingPerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_LDN.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -163,8 +182,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>Engine Performance</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doEnginePerformance == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doEnginePerformance == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_EnginePerformance.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -174,8 +193,8 @@ void performance_assessment_output::generateHtmlBody() {
         << "</table>" << std::endl;
     }
     theReport.htmlReportStream() << "<h2>V-n-Diagram</h2>" << std::endl;
-    if (theFactoryPt->mySettings.mySwitches.doVnDiagram == true) {
-        theReport.htmlReportStream() << "<img src=\"" + relativePath(theFactoryPt->rtIO->getPlotDir(), theFactoryPt->rtIO->getReportDir()) +
+    if (mySettingsPt->mySwitches.doVnDiagram == true) {
+        theReport.htmlReportStream() << "<img src=\"" + relativePath(rtIO->getPlotDir(), rtIO->getReportDir()) +
                theProgramName + "_VnDiagram.svg\">" << std::endl;
     } else {
         theReport.htmlReportStream() << "<table>" << std::endl
@@ -189,157 +208,323 @@ void performance_assessment_output::generateHtmlBody() {
 void performance_assessment_output::writeXmlOutput() {
     string subPath;
     /* MTOM */
-    if (theFactoryPt->mySettings.designForMTOM == true && theFactoryPt->mySettings.mySwitches.doFuelPlanning == true) {
-        theFactoryPt->rtIO->acxml.at("AcftExchangeFile/MassesAndLoadings/MTOM") = myAcftPt->MTOM;
+    if (mySettingsPt->designForMTOM == true && mySettingsPt->mySwitches.doFuelPlanning == true) {
+        rtIO->acxml.at("analysis/masses_cg_inertia/maximum_takeoff_mass/mass_properties/mass/value") = myAcftPt->MTOM;
     }
-    if (theFactoryPt->mySettings.mySwitches.doFlightEnvelopePerformance == true) {
+    if (mySettingsPt->mySwitches.doFlightEnvelopePerformance == true) {
         /* Speeds */
-        subPath = "/aircraft_exchange_file/assessment/performance/speed";
-        theFactoryPt->rtIO->acxml.at(subPath + "/maximum_operating_mach_number") = myAcftPt->MMO;
-        theFactoryPt->rtIO->acxml.at(subPath + "/maximum_operating_velocity") = myAcftPt->VMO;
-        theFactoryPt->rtIO->acxml.at(subPath + "/dive_mach_number") = myAcftPt->MDive;
-        theFactoryPt->rtIO->acxml.at(subPath + "/dive_velocity") = myAcftPt->VDive;
-        theFactoryPt->rtIO->acxml.at(subPath + "/one_g_stall_speed_velocity") =  myAcftPt->v1gS_Clean(myAcftPt->MTOM, 0.0);
+        subPath = "assessment/performance/speed";
+        Endnode<double> MMO(subPath + "/maximum_operating_mach_number", "Maximum operating mach number");
+        MMO.set_value(myAcftPt->MMO);
+        MMO.set_boundaries(0., 1.);
+        MMO.set_unit("1");
+        MMO.update(rtIO->acxml);
+        Endnode<double> VMO(subPath + "/maximum_operating_velocity", "Maximum operating velocity");
+        VMO.set_value(myAcftPt->VMO);
+        VMO.set_boundaries(0., 400.);
+        VMO.set_unit("m/s");
+        VMO.update(rtIO->acxml);
+        Endnode<double> MDive(subPath + "/dive_mach_number", "Maximum dive mach number");
+        MDive.set_value(myAcftPt->MDive);
+        MDive.set_boundaries(0., 1.);
+        MDive.set_unit("1");
+        MDive.update(rtIO->acxml);
+        Endnode<double> VDive(subPath + "/dive_velocity", "Dive velocity");
+        VDive.set_value(myAcftPt->VDive);
+        VDive.set_boundaries(0., 400.);
+        VDive.set_unit("m/s");
+        VDive.update(rtIO->acxml);
+        Endnode<double> v1gsClean(subPath + "/one_g_stall_speed_velocity", "One g stall speed");
+        v1gsClean.set_value(myAcftPt->v1gS_Clean(myAcftPt->MTOM, 0.0));
+        v1gsClean.set_boundaries(0., 400.);
+        v1gsClean.set_unit("m/s");
+        v1gsClean.update(rtIO->acxml);
     }
     /* Start */
-    if (theFactoryPt->mySettings.mySwitches.doTOPerformance == true) {
-        subPath = "/aircraft_exchange_file/assessment/performance/takeoff";
-        theFactoryPt->rtIO->acxml.at(subPath + "/takeoff_distance_normal_safety") = theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().TODR_AEO;
-        theFactoryPt->rtIO->acxml.at(subPath + "/lift_off_speed_velocity") = myAcftPt->vLOF(myAcftPt->MTOM, 0.0);
-        theFactoryPt->rtIO->acxml.at(subPath + "/decision_speed") = theFactoryPt->abstractTakeOffPerformancePt->myBLFL.v1;
-        theFactoryPt->rtIO->acxml.at(subPath + "/takeoff_safety_speed") = myAcftPt->v2(myAcftPt->MTOM, 0.0);
-        theFactoryPt->rtIO->acxml.at(subPath + "/final_takeoff_speed") = myAcftPt->vFTO(myAcftPt->MTOM, 0.0);
-        theFactoryPt->rtIO->acxml.at(subPath + "/time_to_screen_height") = theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().Time;
-        theFactoryPt->rtIO->acxml.at(subPath + "/climb_or_descend_segment_climb_gradient") = theFactoryPt->abstractTakeOffPerformancePt->scdSegmentGradient;
-        theFactoryPt->rtIO->acxml.at(subPath + "/final_segment_climb_gradient") = theFactoryPt->abstractTakeOffPerformancePt->finalSegmentGradient;
+    if (mySettingsPt->mySwitches.doTOPerformance == true) {
+        // subPath = "assessment/performance/takeoff";
+        // Endnode<double> todns(subPath + "/takeoff_distance_normal_safety", "Takeoff distance normal safety");
+        // todns.set_value(abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().TODR_AEO);
+        // todns.set_lower_boundary(0);
+        // todns.set_upper_boundary(20000);
+        // todns.set_unit("m");
+        // todns.update(rtIO->acxml);
+        Endnode<double> vlof(subPath + "/lift_off_speed_velocity", "Lift off velocity");
+        vlof.set_value(myAcftPt->vLOF(myAcftPt->MTOM, 0.0));
+        vlof.set_lower_boundary(0);
+        vlof.set_upper_boundary(400);
+        vlof.set_unit("m/s");
+        vlof.update(rtIO->acxml);
+        Endnode<double> decision_speed(subPath + "/decision_speed", "Take off decision speed (V1)");
+        decision_speed.set_value(abstractTakeOffPerformancePt->myBLFL.v1);
+        decision_speed.set_lower_boundary(0);
+        decision_speed.set_upper_boundary(200);
+        decision_speed.set_unit("m/s");
+        decision_speed.update(rtIO->acxml);
+        Endnode<double> v2(subPath + "/takeoff_safety_speed", "Take off safety speed (V2)");
+        v2.set_value(myAcftPt->v2(myAcftPt->MTOM, 0.0));
+        v2.set_boundaries(0, 200);
+        v2.set_unit("m/s");
+        v2.update(rtIO->acxml);
+        Endnode<double> vfto(subPath + "/final_takeoff_speed", "Final take off speed");
+        vfto.set_value(myAcftPt->vFTO(myAcftPt->MTOM, 0.0));
+        vfto.set_boundaries(0, 200);
+        vfto.set_unit("m/s");
+        vfto.update(rtIO->acxml);
+        Endnode<double> ttsh(subPath + "/time_to_screen_height", "Time to screen height");
+        ttsh.set_value(abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().Time);
+        ttsh.set_boundaries(0, 3600);
+        ttsh.set_unit("s");
+        ttsh.update(rtIO->acxml);
+        Endnode<double> climbDescendecondSegment(subPath + "/climb_or_descend_segment_climb_gradient", "Climb or descend in second segment");
+        climbDescendecondSegment.set_value(abstractTakeOffPerformancePt->scdSegmentGradient);
+        climbDescendecondSegment.set_boundaries(0, 100);
+        climbDescendecondSegment.set_unit("m/s");
+        climbDescendecondSegment.update(rtIO->acxml);
+        Endnode<double> finalSegmentGradient(subPath + "/final_segment_climb_gradient", "Climb gradient in final segment");
+        finalSegmentGradient.set_value(abstractTakeOffPerformancePt->finalSegmentGradient);
+        finalSegmentGradient.set_boundaries(0, 100);
+        finalSegmentGradient.set_unit("m/s");
+        finalSegmentGradient.update(rtIO->acxml);
     }
     /* BLFL */
-    if (theFactoryPt->mySettings.mySwitches.doBLFLPerformance == true) {
-        subPath = "/aircraft_exchange_file/assessment/performance/takeoff";
-        theFactoryPt->rtIO->acxml.at(subPath + "/balanced_field_length") = theFactoryPt->abstractTakeOffPerformancePt->myBLFL.BLFL;
+    if (mySettingsPt->mySwitches.doBLFLPerformance == true) {
+        subPath = "assessment/performance/takeoff";
+        Endnode<double> BLFL(subPath + "/balanced_field_length", "Balanced field length");
+        BLFL.set_value(abstractTakeOffPerformancePt->myBLFL.BLFL);
+        BLFL.set_boundaries(0, 100000);
+        BLFL.set_unit("m");
+        BLFL.update(rtIO->acxml);
     }
     /* Landing */
-    if (theFactoryPt->mySettings.mySwitches.doLandingPerformance == true) {
-        subPath = "/aircraft_exchange_file/assessment/performance/landing";
-        theFactoryPt->rtIO->acxml.at(subPath + "/needed_runway_length") = theFactoryPt->theLandingPerformance->myLDNField.at(0).myLDN.back().ALD_AEO;
-        theFactoryPt->rtIO->acxml.at(subPath + "/approach_speed") = myAcftPt->vAPPR(myAcftPt->MLM, 0.0);
-    }
-    if (theFactoryPt->mySettings.mySwitches.doPayloadRange) {
+    if (mySettingsPt->mySwitches.doLandingPerformance == true) {
+        subPath = "assessment/performance/landing";
+        Endnode<double> needed_runway_length(subPath + "/needed_runway_length", "Needed runway length");
+        needed_runway_length.set_value(abstractLandingPerformancePt->myLDNField.at(0).myLDN.back().ALD_AEO);
+        needed_runway_length.set_boundaries(0, 100000);
+        needed_runway_length.set_unit("m");
+        needed_runway_length.update(rtIO->acxml);
+        Endnode<double> vappr(subPath + "/approach_speed", "Approach speed");
+        vappr.set_value(myAcftPt->vAPPR(myAcftPt->MLM, 0.0));
+        vappr.set_boundaries(0, 1000);
+        vappr.set_unit("m/s");
+        vappr.update(rtIO->acxml);
+    }
+    if (mySettingsPt->mySwitches.doPayloadRange) {
         /* Ranges */
-        subPath = "/aircraft_exchange_file/assessment/performance/range";
-        if (theFactoryPt->mySettings.mySwitches.doFuelPlanning == true) {
-            theFactoryPt->rtIO->acxml.at(subPath + "/range_max_payload_at_maximum_takeoff_mass") = theFactoryPt->theFuelPlanning->myPayloadRange.at(1).Range;
-            theFactoryPt->rtIO->acxml.at(subPath + "/range_max_fuel_at_maximum_takeoff_mass") = theFactoryPt->theFuelPlanning->myPayloadRange.at(2).Range;
-            theFactoryPt->rtIO->acxml.at(subPath + "/payload_maximum_fuel_at_maximum_takeoff_mass") = theFactoryPt->theFuelPlanning->myPayloadRange.at(2).Payload;
-            theFactoryPt->rtIO->acxml.at(subPath + "/range_maximum_fuel_empty") = theFactoryPt->theFuelPlanning->myPayloadRange.at(3).Range;
+        subPath = "assessment/performance/range";
+        Endnode<double> range_max_payload_at_maximum_takeoff_mass(subPath + "/range_max_payload_at_maximum_takeoff_mass", "Range at max payload at maximum take off mass");
+        Endnode<double> range_max_fuel_at_maximum_takeoff_mass(subPath + "/range_max_fuel_at_maximum_takeoff_mass", "Range at max fuel at maximum take off mass");
+        Endnode<double> payload_maximum_fuel_at_maximum_takeoff_mass(subPath + "/payload_maximum_fuel_at_maximum_takeoff_mass", "Payload at maximum fuel at maximum takeoff mass");
+        Endnode<double> range_maximum_fuel_empty(subPath + "/range_maximum_fuel_empty", "Range at maximum fuel empty");
+        if (mySettingsPt->mySwitches.doFuelPlanning == true) {
+            range_max_payload_at_maximum_takeoff_mass.set_value(abstractFuelPlanningPt->myPayloadRange.at(1).Range);
+            range_max_fuel_at_maximum_takeoff_mass.set_value(abstractFuelPlanningPt->myPayloadRange.at(2).Range);
+            payload_maximum_fuel_at_maximum_takeoff_mass.set_value(abstractFuelPlanningPt->myPayloadRange.at(2).Payload);
+            range_maximum_fuel_empty.set_value(abstractFuelPlanningPt->myPayloadRange.at(3).Range);
         } else {
-            if (theFactoryPt->abstractPayloadRangePt->Range.at(2) > myAcftPt->designRange) {
-                theFactoryPt->rtIO->acxml.at(subPath + "/range_max_payload_at_maximum_takeoff_mass") = theFactoryPt->abstractPayloadRangePt->Range.at(1);
-                theFactoryPt->rtIO->acxml.at(subPath + "/range_max_fuel_at_maximum_takeoff_mass") = theFactoryPt->abstractPayloadRangePt->Range.at(2);
-                theFactoryPt->rtIO->acxml.at(subPath + "/payload_maximum_fuel_at_maximum_takeoff_mass") = theFactoryPt->abstractPayloadRangePt->Payload.at(2);
-                theFactoryPt->rtIO->acxml.at(subPath + "/range_maximum_fuel_empty") = theFactoryPt->abstractPayloadRangePt->Range.at(3);
+            if (abstractPayloadRangePt->Range.at(2) > myAcftPt->designRange) {
+                range_max_payload_at_maximum_takeoff_mass.set_value(abstractPayloadRangePt->Range.at(1));
+                range_max_fuel_at_maximum_takeoff_mass.set_value(abstractPayloadRangePt->Range.at(2));
+                payload_maximum_fuel_at_maximum_takeoff_mass.set_value(abstractPayloadRangePt->Payload.at(2));
+                range_maximum_fuel_empty.set_value(abstractPayloadRangePt->Range.at(3));
             }
         }
-    }
-    if (theFactoryPt->mySettings.mySwitches.doFuelPlanning == true) {
+        range_max_payload_at_maximum_takeoff_mass.set_boundaries(0, INFINITY);
+        range_max_payload_at_maximum_takeoff_mass.set_unit("m");
+        range_max_payload_at_maximum_takeoff_mass.update(rtIO->acxml);
+        range_max_fuel_at_maximum_takeoff_mass.set_boundaries(0, INFINITY);
+        range_max_fuel_at_maximum_takeoff_mass.set_unit("m");
+        range_max_fuel_at_maximum_takeoff_mass.update(rtIO->acxml);
+        payload_maximum_fuel_at_maximum_takeoff_mass.set_boundaries(0, INFINITY);
+        payload_maximum_fuel_at_maximum_takeoff_mass.set_unit("kg");
+        payload_maximum_fuel_at_maximum_takeoff_mass.update(rtIO->acxml);
+        range_maximum_fuel_empty.set_boundaries(0, INFINITY);
+        range_maximum_fuel_empty.set_unit("m");
+        range_maximum_fuel_empty.update(rtIO->acxml);
+    }
+    if (mySettingsPt->mySwitches.doFuelPlanning == true) {
         /* Mission Fuels */
-        if (!theFactoryPt->mySettings.designForMTOM && theFactoryPt->mySettings.useStudyMissionForAnalysis) {
-            subPath = "/aircraft_exchange_file/analysis/mission/study_mission";
+        if (!mySettingsPt->designForMTOM && mySettingsPt->useStudyMissionForAnalysis) {
+            subPath = "analysis/mission/study_mission";
         } else {
-            subPath = "/aircraft_exchange_file/analysis/mission/design_mission";
+            subPath = "analysis/mission/design_mission";
         }
-        theFactoryPt->rtIO->acxml.at(subPath + "/range") = convertUnit(KILO, METER, NAUTICALMILE, myAcftPt->myMission.missionRange);
+        Endnode<double> missionRange(subPath + "/range", "Traveled range from break release to end of taxi at destination");
+        missionRange.set_value(myAcftPt->myMission.missionRange);
+        missionRange.update(rtIO->acxml);
+        // rtIO->acxml.at(subPath + "/range") = myAcftPt->myMission.missionRange;
         // Fuel
-        theFactoryPt->rtIO->acxml.at(subPath + "/mission_energy") = std::to_string(theFactoryPt->theFuelPlanning->myFuel.missionFuel) + "<-Fuel[kg]";  // Total Tanked Fuel
-        theFactoryPt->rtIO->acxml.at(subPath + "/trip_energy") = theFactoryPt->theFuelPlanning->myFuel.tripFuel;  // Tanked fuel - Reserve Fuel - Taxi Fuel
-        theFactoryPt->rtIO->acxml.at(subPath + "/taxi_energy") = theFactoryPt->theFuelPlanning->myFuel.taxiFuelTakeoff;  // TODO(hansmann): xpath&fuel2energyconversion
-        theFactoryPt->rtIO->acxml.at(subPath + "/TaxifuelLdg") = theFactoryPt->theFuelPlanning->myFuel.taxiFuelLanding;  // TODO(hansmann): xpath&fuel2energyconversion
+        // rtIO->acxml.at(subPath + "/mission_energy") = std::to_string(abstractFuelPlanningPt->myFuel.missionFuel) + "<-Fuel[kg]";  // Total Tanked Fuel
+        // rtIO->acxml.at(subPath + "/trip_energy") = abstractFuelPlanningPt->myFuel.tripFuel;  // Tanked fuel - Reserve Fuel - Taxi Fuel
+        // rtIO->acxml.at(subPath + "/taxi_energy") = abstractFuelPlanningPt->myFuel.taxiFuelTakeoff;  // TODO(hansmann): xpath&fuel2energyconversion
+        // rtIO->acxml.at(subPath + "/TaxifuelLdg") = abstractFuelPlanningPt->myFuel.taxiFuelLanding;  // TODO(hansmann): xpath&fuel2energyconversion
         // Rest
-        theFactoryPt->rtIO->acxml.at(subPath + "/TOM") = myAcftPt->OME
-                                               + myAcftPt->myMission.missionPayload
-                                               + theFactoryPt->theFuelPlanning->myFuel.missionFuel
-                                               - theFactoryPt->theFuelPlanning->myFuel.taxiFuelTakeoff;
-        theFactoryPt->rtIO->acxml.at(subPath + "/payload_mass") = myAcftPt->myMission.missionPayload;
-        theFactoryPt->rtIO->acxml.at(subPath + "/number_of_pax") = myAcftPt->myMission.missionPAX;
-        theFactoryPt->rtIO->acxml.at(subPath + "/cargo_mass") = myAcftPt->myMission.missionCargo;
-        theFactoryPt->rtIO->acxml.at(subPath + "/takeoff_engine_derate") = myAcftPt->myMission.Steps.at(0).derating;
-        theFactoryPt->rtIO->acxml.at(subPath + "/block_time") = theFactoryPt->theFuelPlanning->blockTime;
-        theFactoryPt->rtIO->acxml.at(subPath + "/flight_time") = theFactoryPt->theFuelPlanning->tripTime;
+        Endnode<double> tom(subPath + "/takeoff_mass", "Take off mass");
+        tom.set_value(myAcftPt->OME + myAcftPt->myMission.missionPayload + abstractFuelPlanningPt->myFuel.missionFuel - abstractFuelPlanningPt->myFuel.taxiFuelTakeoff);
+        tom.set_unit("kg");
+        tom.set_boundaries(0, INFINITY);
+        tom.update(rtIO->acxml);
+        // rtIO->acxml.at(subPath + "/TOM") = myAcftPt->OME
+        //                                        + myAcftPt->myMission.missionPayload
+        //                                        + abstractFuelPlanningPt->myFuel.missionFuel
+        //                                        - abstractFuelPlanningPt->myFuel.taxiFuelTakeoff;
+        Endnode<double> payload_mass(subPath + "/payload_mass", "Mission payload mass");
+        payload_mass.set_value(myAcftPt->myMission.missionPayload);
+        payload_mass.set_boundaries(0, INFINITY);
+        payload_mass.set_unit("kg");
+        payload_mass.update(rtIO->acxml);
+        Endnode<int> missionPax(subPath + "/number_of_pax", "Number of passengers considered for the mission");
+        missionPax.set_value(myAcftPt->myMission.missionPAX);
+        missionPax.set_boundaries(0, INFINITY);
+        missionPax.set_unit("1");
+        missionPax.update(rtIO->acxml);
+        Endnode<double> cargo_mass(subPath + "/cargo_mass", "Cargo mass considered for the mission");
+        cargo_mass.set_value(myAcftPt->myMission.missionCargo);
+        cargo_mass.set_boundaries(0, INFINITY);
+        cargo_mass.set_unit("kg");
+        cargo_mass.update(rtIO->acxml);
+        Endnode<double> takeoff_engine_derate(subPath + "/takeoff_engine_derate", "Engine power demand");
+        takeoff_engine_derate.set_value(myAcftPt->myMission.Steps.at(0).derating);
+        takeoff_engine_derate.set_unit("1");
+        takeoff_engine_derate.update(rtIO->acxml);
+        Endnode<double> block_time(subPath + "/block_time", "Block time for the whole mission: Time from break release to end of taxiing after landing");
+        block_time.set_value(abstractFuelPlanningPt->blockTime);
+        block_time.set_unit("s");
+        block_time.update(rtIO->acxml);
+        Endnode<double> flight_time(subPath + "/flight_time", "Flight time for the whole mission");
+        flight_time.set_value(abstractFuelPlanningPt->tripTime);
+        flight_time.set_unit("s");
+        flight_time.update(rtIO->acxml);
     }
     /* Requirements Checks */
     // TLARS
-    subPath = "/aircraft_exchange_file/requirement_compliance/top_level_aircraft_requirements";
-    if (theFactoryPt->mySettings.mySwitches.doTOPerformance == true) {
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_takeoff_distance/maintainable") = myAcftPt->myChecks.TOFL;
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_takeoff_distance/checked") = true;
-    }
-    if (theFactoryPt->mySettings.mySwitches.doLandingPerformance == true) {
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_landing_field_length/maintainable") = myAcftPt->myChecks.LDN;
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_landing_field_length/checked") = true;
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_approach_speed/maintainable") = myAcftPt->myChecks.vApproach;
-        theFactoryPt->rtIO->acxml.at(subPath + "/design_approach_speed/checked") = true;
-    }
+    subPath = "aircraft_exchange_file/requirement_compliance/top_level_aircraft_requirements";
+    Endnode<bool> design_takeoff_distance_checked(subPath + "/design_takeoff_distance/checked", "Indicates if the value has been checked against the requirement.");
+    design_takeoff_distance_checked.set_value(false);
+    if (mySettingsPt->mySwitches.doTOPerformance == true) {
+        Endnode<bool> design_takeoff_distance_maintainable(subPath + "/design_takeoff_distance/maintainable",
+            "Switch indicating if design takeoff distance can be maintained.");
+        design_takeoff_distance_maintainable.set_value(myAcftPt->myChecks.TOFL);
+        design_takeoff_distance_maintainable.update(rtIO->acxml);
+        design_takeoff_distance_checked.set_value(true);
+    }
+    design_takeoff_distance_checked.update(rtIO->acxml);
+
+    Endnode<bool> design_landing_field_length_checked(subPath + "/design_landing_field_length/checked", "Indicates if the value has been checked against the requirement.");
+    design_landing_field_length_checked.set_value(false);
+    Endnode<bool> design_approach_speed_maintainable_checked(subPath + "/design_approach_speed/checked", "Indicates if the value has been checked against the requirement.");
+    design_approach_speed_maintainable_checked.set_value(false);
+    if (mySettingsPt->mySwitches.doLandingPerformance == true) {
+        Endnode<bool> design_landing_field_length_maintainable(subPath + "/design_landing_field_length/maintainable",
+            "Switch indicating if landing field length can be maintained.");
+        design_landing_field_length_maintainable.set_value(myAcftPt->myChecks.LDN);
+        design_landing_field_length_maintainable.update(rtIO->acxml);
+        design_landing_field_length_checked.set_value(true);
+        Endnode<bool> design_approach_speed_maintainable(subPath + "/design_approach_speed/maintainable", "Switch indicating if approach speed can be maintained.");
+        design_approach_speed_maintainable.set_value(myAcftPt->myChecks.vApproach);
+        design_approach_speed_maintainable.update(rtIO->acxml);
+        design_approach_speed_maintainable_checked.set_value(true);
+    }
+    design_landing_field_length_checked.update(rtIO->acxml);
+    design_approach_speed_maintainable_checked.update(rtIO->acxml);
+
+    // Span limit
+    Endnode<bool> span_limit(subPath + "/span_limit/maintained", "Switch indicating if the span limit according to ICAO aerodrome ref code is maintained.");
+    span_limit.set_value(myAcftPt->myChecks.span_limit);
+    span_limit.update(rtIO->acxml);
+    Endnode<bool> span_limit_checked(subPath + "/span_limit/checked", "Indicates if the value has been checked against the requirement.");
+    span_limit_checked.set_value(true);
+
     // Certification
-    subPath = "AcftExchangeFile/Performance/RequirementsChecks/Certification";
-    if (theFactoryPt->mySettings.mySwitches.doTOPerformance == true) {  //TODO
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientSecondTOSegment") = myAcftPt->myChecks.climbGradientSecondSegment;
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientSecondTOSegment").setAttrib("Checked", 1);
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientFinalTOSegment") = myAcftPt->myChecks.climbGradientFinalSegment;
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientFinalTOSegment").setAttrib("Checked", 1);
-    }
-    if (theFactoryPt->mySettings.mySwitches.doLandingPerformance == true) {
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientApproachOEI") = myAcftPt->myChecks.climbGradientApproachOEI;
-        theFactoryPt->rtIO->acxml.at("/" + subPath + "/climbGradientApproachOEI").setAttrib("Checked", 1);
-        theFactoryPt->rtIO->acxml.at(subPath + "/climbGradientApproachAEO") = myAcftPt->myChecks.climbGradientApproachAEO;
-        theFactoryPt->rtIO->acxml.at("/" + subPath + "/climbGradientApproachAEO").setAttrib("Checked", 1);
-    }
-    // aixml::saveDocument(theFactoryPt->rtIO->acxml, mySettingsPt->getToolLevel());  // TODO
-    // aixml::closeDocument(theFactoryPt->rtIO->acxml);
+    subPath = "aircraft_exchange_file/requirement_compliance/certification";
+    Endnode<bool> climb_gradient_of_second_takeoff_segment_checked(subPath + "/climb_gradient_of_second_takeoff_segment/checked",
+        "Indicates if the value has been checked against the requirement.");
+    climb_gradient_of_second_takeoff_segment_checked.set_value(false);
+    Endnode<bool> climb_gradient_of_final_takeoff_segment_checked(subPath + "/climb_gradient_of_final_takeoff_segment/checked",
+        "Indicates if the value has been checked against the requirement.");
+    climb_gradient_of_final_takeoff_segment_checked.set_value(false);
+
+    if (mySettingsPt->mySwitches.doTOPerformance == true) {
+        Endnode<bool> climb_gradient_of_second_takeoff_segment(subPath + "/climb_gradient_of_second_takeoff_segment/maintainable",
+            "Switch indicating if climb gradient of second takeoff segment can be maintained.");
+        climb_gradient_of_second_takeoff_segment.set_value(myAcftPt->myChecks.climbGradientSecondSegment);
+        climb_gradient_of_second_takeoff_segment.update(rtIO->acxml);
+        climb_gradient_of_second_takeoff_segment_checked.set_value(true);
+        Endnode<bool> climb_gradient_of_final_takeoff_segment(subPath + "/climb_gradient_of_final_takeoff_segment/maintainable",
+            "Switch indicating if climb gradient of final takeoff segment can be maintained.");
+        climb_gradient_of_final_takeoff_segment.set_value(myAcftPt->myChecks.climbGradientFinalSegment);
+        climb_gradient_of_final_takeoff_segment.update(rtIO->acxml);
+        climb_gradient_of_final_takeoff_segment_checked.set_value(true);
+    }
+    climb_gradient_of_second_takeoff_segment_checked.update(rtIO->acxml);
+    climb_gradient_of_final_takeoff_segment_checked.update(rtIO->acxml);
+
+    Endnode<bool> climb_gradient_approach_one_engine_inoperative_checked(subPath + "/climb_gradient_approach_one_engine_inoperative/checked",
+        "Indicates if the value has been checked against the requirement.");
+    climb_gradient_approach_one_engine_inoperative_checked.set_value(false);
+    Endnode<bool> climb_gradient_all_engines_operative_checked(subPath + "/climb_gradient_all_engines_operative/checked",
+        "Indicates if the value has been checked against the requirement.");
+    climb_gradient_all_engines_operative_checked.set_value(false);
+    if (mySettingsPt->mySwitches.doLandingPerformance == true) {
+        Endnode<bool> climb_gradient_approach_one_engine_inoperative(subPath + "/climb_gradient_approach_one_engine_inoperative/maintainable",
+            "Switch indicating if climb gradient approach one engine inoperative can be maintained.");
+        climb_gradient_approach_one_engine_inoperative.set_value(myAcftPt->myChecks.climbGradientApproachOEI);
+        climb_gradient_approach_one_engine_inoperative.update(rtIO->acxml);
+        climb_gradient_approach_one_engine_inoperative_checked.set_value(true);
+        Endnode<bool> climb_gradient_all_engines_operative(subPath + "/climb_gradient_all_engines_operative/maintainable",
+            "Switch indicating if climb gradient with all engines operative can be maintained.");
+        climb_gradient_all_engines_operative.set_value(myAcftPt->myChecks.climbGradientApproachAEO);
+        climb_gradient_all_engines_operative.update(rtIO->acxml);
+        climb_gradient_all_engines_operative_checked.set_value(true);
+    }
+    climb_gradient_approach_one_engine_inoperative_checked.update(rtIO->acxml);
+    climb_gradient_all_engines_operative_checked.update(rtIO->acxml);
 }
 
 
 void performance_assessment_output::generatePlotData() {
-    if (theFactoryPt->mySettings.mySwitches.doFuelPlanning == true) {
+    if (mySettingsPt->mySwitches.doFuelPlanning == true) {
         generatePlotDataMission();
     }
-    if (theFactoryPt->mySettings.mySwitches.doPayloadRange == true) {
+    if (mySettingsPt->mySwitches.doPayloadRange == true) {
         generatePlotDataPayloadRange();
     }
-    if (theFactoryPt->mySettings.mySwitches.doEnginePerformance == true) {
+    if (mySettingsPt->mySwitches.doEnginePerformance == true) {
         generateEnginePerformanceData();
     }
-    if (theFactoryPt->mySettings.mySwitches.doFlightEnvelopePerformance == true) {
+    if (mySettingsPt->mySwitches.doFlightEnvelopePerformance == true) {
         generateCeilingPlotData();
         generateFlightEnvelopeData();
         generateSARPlotData();
         generateBestSARAltPlotData();
     }
-    if (theFactoryPt->mySettings.mySwitches.doTOPerformance == true) {
+    if (mySettingsPt->mySwitches.doTOPerformance == true) {
         generateTOFLPlotData();
     }
-    if (theFactoryPt->mySettings.mySwitches.doBLFLPerformance == true) {
+    if (mySettingsPt->mySwitches.doBLFLPerformance == true) {
         generateBLFLPlotData();
     }
-    if (theFactoryPt->mySettings.mySwitches.doLandingPerformance == true) {
+    if (mySettingsPt->mySwitches.doLandingPerformance == true) {
         generateLDNPlotData();
     }
-    if (theFactoryPt->mySettings.mySwitches.doVnDiagram == true) {
+    if (mySettingsPt->mySwitches.doVnDiagram == true) {
         generateVnPlotData();
     }
 }
 
 void performance_assessment_output::generatePlotDataMission() {
 std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Mission.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Mission.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_Mission.csv could not be opened!" << std::endl;
         exit(1);
     } else {
-        csv << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Mission.csv" << std::endl;
+        csv << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Mission.csv" << std::endl;
         // Adjust data structure:
-        csv << "# (1) ID; (2) Time [min]; (3) Range [NM]; (4) Altitude [ft]; (5) TAS [kts]; (6) CAS [kts]; (7) Mach; ";
-        csv << "(8) A/C Mass [kg]; (9) consumed Fuel [kg]; (10) total consumed Fuel [kg]; (11) Thrust [kN]; ";
+        csv << "# (1) ID; (2) Time [s]; (3) Range [m]; (4) Altitude [m]; (5) TAS [m/s]; (6) CAS [m/s]; (7) Mach; ";
+        csv << "(8) A/C Mass [kg]; (9) consumed Fuel [kg]; (10) total consumed Fuel [kg]; (11) Thrust [N]; ";
         csv << "(12) Fuel Flow [kg/s]; (13) ROC [m/s]; (14) C_L" << std::endl;
         /*(1)*/ csv << "0; ";
         /*(1)*/ csv << "0; ";
@@ -348,7 +533,7 @@ std::ofstream csv;
         /*(5)*/ csv << "0; ";
         /*(6)*/ csv << "0; ";
         /*(7)*/ csv << "0; ";
-        /*(8)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(0).Mass << "; ";
+        /*(8)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(0).Mass << "; ";
         /*(9)*/ csv << "0; ";
         /*(10)*/ csv << "0; ";
         /*(11)*/ csv << "0; ";
@@ -359,26 +544,26 @@ std::ofstream csv;
         double range(0.);
         double fuel(0.);
         for (unsigned int i = 0; i <= myAcftPt->myMission.Steps.size() - 1; i++) {
-            time += theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).Time;
-            range += theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).Range;
-            fuel += theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).consumedFuel;
-            double C_L = (2. * G_FORCE * theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).Mass)
-                  / (myAcftPt->atm.getDensity(convertUnit(FOOT, METER, myAcftPt->myMission.Steps.at(i).endAltitude))
-                     *  pow(convertUnit(KNOTS, METERPERSECOND, myAcftPt->myMission.Steps.at(i).endTAS), 2.)
+            time += abstractFuelPlanningPt->theMissionFuel.at(i + 1).Time;
+            range += abstractFuelPlanningPt->theMissionFuel.at(i + 1).Range;
+            fuel += abstractFuelPlanningPt->theMissionFuel.at(i + 1).consumedFuel;
+            double C_L = (2. * G_FORCE * abstractFuelPlanningPt->theMissionFuel.at(i + 1).Mass)
+                  / (myAcftPt->atm.getDensity(myAcftPt->myMission.Steps.at(i).endAltitude)
+                     *  pow(myAcftPt->myMission.Steps.at(i).endTAS, 2.)
                      * myAcftPt->S_Wing);
             /*(1)*/ csv << i + 1 << "; ";
-            /*(1)*/ csv << convertUnit(MINUTE, HOUR, time) << "; ";
-            /*(3)*/ csv << convertUnit(METER, NAUTICALMILE, range) << "; ";
+            /*(1)*/ csv << time << "; ";
+            /*(3)*/ csv << range << "; ";
             /*(4)*/ csv << myAcftPt->myMission.Steps.at(i).endAltitude << "; ";
             /*(5)*/ csv << myAcftPt->myMission.Steps.at(i).endTAS  << "; ";
             /*(6)*/ csv << myAcftPt->myMission.Steps.at(i).endCAS  << "; ";
             /*(7)*/ csv << myAcftPt->myMission.Steps.at(i).endMach  << "; ";
-            /*(8)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).Mass << "; ";
-            /*(9)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).consumedFuel << "; ";
+            /*(8)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(i + 1).Mass << "; ";
+            /*(9)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(i + 1).consumedFuel << "; ";
             /*(10)*/ csv << fuel << "; ";
-            /*(11)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).Thrust << "; ";
-            /*(12)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).fuelFlow << "; ";
-            /*(13)*/ csv << theFactoryPt->abstractFuelPlanningPt->theMissionFuel.at(i + 1).ROC << "; ";
+            /*(11)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(i + 1).Thrust << "; ";
+            /*(12)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(i + 1).fuelFlow << "; ";
+            /*(13)*/ csv << abstractFuelPlanningPt->theMissionFuel.at(i + 1).ROC << "; ";
             /*(14)*/ csv << C_L << std::endl;
         }
         csv.close();
@@ -387,32 +572,32 @@ std::ofstream csv;
 
 void performance_assessment_output::generatePlotDataPayloadRange() {
 std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_payloadRange.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_payloadRange.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_payloadRange.csv could not be opened!" << std::endl;
         exit(1);
     } else {
-        csv << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_missionFuel.csv" << std::endl;
+        csv << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_missionFuel.csv" << std::endl;
         // Adjust data structure:
-        csv << "# (1) Range [NM]; (2) Payload [kg]; (3) Fuel [kg]; (4) TOM [kg]; (5) OME [kg]" << std::endl;
-        if (theFactoryPt->mySettingsPt->mySwitches.doFuelPlanning == true) {
-            for (unsigned int i(0); i <= theFactoryPt->abstractFuelPlanningPt->myPayloadRange.size() - 1; i++) {
-                csv << convertUnit(KILO, METER, NAUTICALMILE, theFactoryPt->abstractFuelPlanningPt->myPayloadRange.at(i).Range) << "; ";
-                csv << theFactoryPt->abstractFuelPlanningPt->myPayloadRange.at(i).Payload << "; ";
-                // csv << myPerfPt->theFuelPlanning.myPayloadRange.at(i).Fuel << "; ";
-                // csv << myPerfPt->theFuelPlanning.myPayloadRange.at(i).TOM << "; ";
+        csv << "# (1) Range [m]; (2) Payload [kg]; (3) Fuel [kg]; (4) TOM [kg]; (5) OME [kg]" << std::endl;
+        if (mySettingsPt->mySwitches.doFuelPlanning == true) {
+            for (unsigned int i(0); i <= abstractFuelPlanningPt->myPayloadRange.size() - 1; i++) {
+                csv << abstractFuelPlanningPt->myPayloadRange.at(i).Range << "; ";
+                csv << abstractFuelPlanningPt->myPayloadRange.at(i).Payload << "; ";
+                // csv << myPerfPt->abstractFuelPlanning.myPayloadRange.at(i).Fuel << "; ";
+                // csv << myPerfPt->abstractFuelPlanning.myPayloadRange.at(i).TOM << "; ";
                 // csv << myAcftPt->OME << "; ";
                 csv << std::endl;
             }
         } else {
-            for (unsigned int i(0); i <= theFactoryPt->abstractPayloadRangePt->Range.size() - 1; i++) {
-                csv << convertUnit(KILO, METER, NAUTICALMILE, theFactoryPt->abstractPayloadRangePt->Range.at(i)) << "; ";
-                csv << theFactoryPt->abstractPayloadRangePt->Payload.at(i) << "; ";
-                csv << theFactoryPt->abstractPayloadRangePt->Fuel.at(i) << "; ";
-                csv << theFactoryPt->abstractPayloadRangePt->TOM.at(i) << "; ";
-                // csv << myPerfPt->theFuelPlanning.myPayloadRange.at(i).Fuel << "; ";
-                // csv << myPerfPt->theFuelPlanning.myPayloadRange.at(i).TOM << "; ";
+            for (unsigned int i(0); i <= abstractPayloadRangePt->Range.size() - 1; i++) {
+                csv << abstractPayloadRangePt->Range.at(i) << "; ";
+                csv << abstractPayloadRangePt->Payload.at(i) << "; ";
+                csv << abstractPayloadRangePt->Fuel.at(i) << "; ";
+                csv << abstractPayloadRangePt->TOM.at(i) << "; ";
+                // csv << myPerfPt->abstractFuelPlanning.myPayloadRange.at(i).Fuel << "; ";
+                // csv << myPerfPt->abstractFuelPlanning.myPayloadRange.at(i).TOM << "; ";
                 // csv << myAcftPt->OME << "; ";
                 csv << std::endl;
             }
@@ -420,7 +605,7 @@ std::ofstream csv;
         csv << std::endl;
         csv << std::endl;
         csv << "# Design Point " << std::endl;
-        csv << convertUnit(KILO, METER, NAUTICALMILE, myAcftPt->designRange) << "; ";
+        csv << myAcftPt->designRange << "; ";
         csv << myAcftPt->designPayload << "; ";
         // csv << "N/A" << "; ";
         // csv << myAcftPt->MTOM << "; ";
@@ -429,38 +614,37 @@ std::ofstream csv;
         csv << std::endl;
         csv << std::endl;
         csv << "# Mission Point" << std::endl;
-        csv << convertUnit(KILO, METER, NAUTICALMILE, myAcftPt->myMission.missionRange) << "; ";
+        csv << myAcftPt->myMission.missionRange << "; ";
         csv << myAcftPt->myMission.missionPayload << "; ";
-        // csv << myPerfPt->theFuelPlanning.myFuel.tripFuel << "; ";
+        // csv << myPerfPt->abstractFuelPlanning.myFuel.tripFuel << "; ";
         // csv << myAcftPt->MTOM << "; ";
         // csv << myAcftPt->OME << "; ";
         csv.close();
     }
-
 }
 
 void performance_assessment_output::generateEnginePerformanceData() {
-    for (unsigned int i(0); i <= theFactoryPt->abstractEnginePerformancePt->theRatingEngine.size() - 1; i++) {
+    for (unsigned int i(0); i <= abstractEnginePerformancePt->theRatingEngine.size() - 1; i++) {
         std::ofstream csv;
-        string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_EnginePerformance_" +
-            theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).Rating + ".csv");
+        string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_EnginePerformance_" +
+            abstractEnginePerformancePt->theRatingEngine.at(i).Rating + ".csv");
         csv.open(csvDataFile.c_str());
         if (!csv) {
-            myRuntimeInfo->err << string(theProgramName) + "_EnginePerformance" + theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).Rating
+            myRuntimeInfo->err << string(theProgramName) + "_EnginePerformance" + abstractEnginePerformancePt->theRatingEngine.at(i).Rating
                 + ".csv could not be opened!" << std::endl;
             exit(1);
         } else {
-            csv << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_EnginePerformance" +
-                theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).Rating + ".csv" << std::endl;
-            csv << "# Rating: " + theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).Rating << std::endl;
+            csv << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_EnginePerformance" +
+                abstractEnginePerformancePt->theRatingEngine.at(i).Rating + ".csv" << std::endl;
+            csv << "# Rating: " + abstractEnginePerformancePt->theRatingEngine.at(i).Rating << std::endl;
             /* Adjust data structure: */
-            csv << "# (1) Mach; (2) Altitude [ft]; (3) Thrust per Engine [kN]; (4) SFC [mg/Ns]" << std::endl;
-            for (unsigned int j(0); j <= theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.size() - 1; j++) {
-                for (unsigned int n(0); n <= theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Mach.size() - 1; n++) {
-                    csv << theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Mach.at(n) << "; ";
-                    csv << (1. / 0.3048)*theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Altitude << "; ";
-                    csv << theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Thrust.at(n) << "; ";
-                    csv << 1000.*theFactoryPt->abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).SFC.at(n);
+            csv << "# (1) Mach; (2) Altitude [m]; (3) Thrust per Engine [N]; (4) SFC [g/Ns]" << std::endl;
+            for (unsigned int j(0); j <= abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.size() - 1; j++) {
+                for (unsigned int n(0); n <= abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Mach.size() - 1; n++) {
+                    csv << abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Mach.at(n) << "; ";
+                    csv << abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Altitude << "; ";
+                    csv << abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).Thrust.at(n) << "; ";
+                    csv << abstractEnginePerformancePt->theRatingEngine.at(i).theParameter.at(j).SFC.at(n);
                     csv << std::endl;
                 }
                 csv << std::endl;
@@ -472,21 +656,21 @@ void performance_assessment_output::generateEnginePerformanceData() {
 }
 void performance_assessment_output::generateCeilingPlotData() {
     std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Ceiling.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Ceiling.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_Ceiling.csv could not be opened!" << std::endl;
         exit(1);
     } else {
-        csv << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Ceiling.csv" << std::endl;
+        csv << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_Ceiling.csv" << std::endl;
         // Adjust data structure:
-        csv << "# (1) Mach; (2) Gross Mass [kg]; (3) Service Ceiling [ft]; (4) Max Ceiling [ft] ; (5) OEI max Ceiling [ft]; (6) Initial Cruise Altitude [ft]" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractCeilingPerformancePt->theCeiling.size() - 1; i++) {
-            csv << theFactoryPt->abstractCeilingPerformancePt->theCeiling.at(i).Mach << "; ";
-            csv << theFactoryPt->abstractCeilingPerformancePt->theCeiling.at(i).Mass << "; ";
-            csv << theFactoryPt->abstractCeilingPerformancePt->theCeiling.at(i).serviceCeiling * 3.2808 << "; ";
-            csv << theFactoryPt->abstractCeilingPerformancePt->theCeiling.at(i).maxCeiling * 3.2808 << "; ";
-            csv << theFactoryPt->abstractCeilingPerformancePt->theCeiling.at(i).maxCeilingOEI * 3.2808 << "; ";
+        csv << "# (1) Mach; (2) Gross Mass [kg]; (3) Service Ceiling [m]; (4) Max Ceiling [m] ; (5) OEI max Ceiling [m]; (6) Initial Cruise Altitude [m]" << std::endl;
+        for (unsigned int i(0); i <= abstractCeilingPerformancePt->theCeiling.size() - 1; i++) {
+            csv << abstractCeilingPerformancePt->theCeiling.at(i).Mach << "; ";
+            csv << abstractCeilingPerformancePt->theCeiling.at(i).Mass << "; ";
+            csv << abstractCeilingPerformancePt->theCeiling.at(i).serviceCeiling << "; ";
+            csv << abstractCeilingPerformancePt->theCeiling.at(i).maxCeiling << "; ";
+            csv << abstractCeilingPerformancePt->theCeiling.at(i).maxCeilingOEI << "; ";
             csv << myAcftPt->hInitialCruise << std::endl;
         }
         csv.close();
@@ -494,7 +678,7 @@ void performance_assessment_output::generateCeilingPlotData() {
 }
 void performance_assessment_output::generateFlightEnvelopeData() {
     std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_FlightEnvelope.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_FlightEnvelope.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_FlightEnvelope.csv could not be opened!" << std::endl;
@@ -502,69 +686,69 @@ void performance_assessment_output::generateFlightEnvelopeData() {
     } else {
         csv << "# " + string(theProgramName) + "_FlightEnvelope.csv" << std::endl;
         // Adjust data structure:
-        csv << "# (1) Altitude [ft]; (2) TAS [kts]; (3) Gross Mass [kg]" <<std::endl;
+        csv << "# (1) Altitude [m]; (2) TAS [m/s]; (3) Gross Mass [kg]" <<std::endl;
         csv << "# Stall Limit" <<std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.size() - 1; i++) {
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.at(i).height / 0.3048  << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.at(i).speed / (1.852 / 3.6) << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        for (unsigned int i(0); i <= abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.size() - 1; i++) {
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.at(i).height  << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.at(i).speed << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
             csv <<std::endl;
         }
         csv << std::endl;
         csv << std::endl;
         csv << "# VMO Limit" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.size() - 1; i++) {
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.at(i).height / 0.3048  << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.at(i).speed / (1.852 / 3.6) << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        for (unsigned int i(0); i <= abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.size() - 1; i++) {
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.at(i).height << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vMO.at(i).speed << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
             csv <<std::endl;
         }
         csv << std::endl;
         csv << std::endl;
         csv << "# MMO Limit" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.size() - 1; i++) {
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.at(i).height / 0.3048  << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.at(i).speed / (1.852 / 3.6) << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        for (unsigned int i(0); i <= abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.size() - 1; i++) {
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.at(i).height << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MMO.at(i).speed << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
             csv << std::endl;
         }
         csv <<std::endl;
         csv <<std::endl;
         csv << "# VDive Limit" <<std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.size() - 1; i++) {
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.at(i).height / 0.3048  << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.at(i).speed / (1.852 / 3.6) << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        for (unsigned int i(0); i <= abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.size() - 1; i++) {
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.at(i).height  << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vDive.at(i).speed << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
             csv <<std::endl;
         }
         csv <<std::endl;
         csv <<std::endl;
         csv << "# MDive Limit" <<std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.size() - 1; i++) {
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.at(i).height / 0.3048  << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.at(i).speed / (1.852 / 3.6) << "; ";
-            csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        for (unsigned int i(0); i <= abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.size() - 1; i++) {
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.at(i).height << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.at(i).speed << "; ";
+            csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
             csv <<std::endl;
         }
         csv <<std::endl;
         csv <<std::endl;
         csv << "#Altitude Limit" <<std::endl;
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.back().height / 0.3048  << "; ";
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.back().speed / (1.852 / 3.6) << "; ";
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.back().height  << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().vStall.back().speed << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
         csv <<std::endl;
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.back().height / 0.3048  << "; ";
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.back().speed / (1.852 / 3.6) << "; ";
-        csv << theFactoryPt->abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.back().height << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().MDive.back().speed << "; ";
+        csv << abstractFlightEnvelopesPt->myFlightEnvelope.back().grossMass << "; ";
         csv.close();
     }
 }
 void performance_assessment_output::generateSARPlotData() {
     std::ofstream csv;
-    for (unsigned int i(0); i < theFactoryPt->abstractSARPerformancePt->theSAR.size(); i++) {
+    for (unsigned int i(0); i < abstractSARPerformancePt->theSAR.size(); i++) {
         std::stringstream Number;
         Number << i;
-        string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_SAR_Mass" + Number.str() + ".csv");
+        string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_SAR_Mass" + Number.str() + ".csv");
         csv.open(csvDataFile.c_str());
         if (!csv) {
             myRuntimeInfo->err << csvDataFile + " could not be opened!" <<std::endl;
@@ -572,14 +756,14 @@ void performance_assessment_output::generateSARPlotData() {
         } else {
             csv << "# " + csvDataFile <<std::endl;
             // Adjust data structure:
-            csv << "# (1) Mach; (2) Gross Mass [kg]; (3) Altitude [ft]; (4) SAR [km/kg]" <<std::endl;
-            for (unsigned int j(0); j < theFactoryPt->abstractSARPerformancePt->theSAR.at(i).tabSAR.size(); j++) {
-                //csv << "# " << floor(myPerfPt->theSAR.at(i).Mass/1000)*1000 << " kg, " << floor(3.2808 * myPerfPt->theSAR.at(i).tabSAR.at(j).Altitude/100)*100<<std::endl;
-                for (unsigned int n(0); n < theFactoryPt->abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Mach.size(); n++) {
-                    csv << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Mach.at(n) << "; ";
-                    csv << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).Mass << "; ";
-                    csv << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Altitude / 0.3048 << "; ";
-                    csv << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).SAR.at(n) / 1000. <<std::endl;
+            csv << "# (1) Mach; (2) Gross Mass [kg]; (3) Altitude [m]; (4) SAR [m/kg]" <<std::endl;
+            for (unsigned int j(0); j < abstractSARPerformancePt->theSAR.at(i).tabSAR.size(); j++) {
+                // csv << "# " << floor(myPerfPt->theSAR.at(i).Mass/1000)*1000 << " kg, " << floor(3.2808 * myPerfPt->theSAR.at(i).tabSAR.at(j).Altitude/100)*100<<std::endl;
+                for (unsigned int n(0); n < abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Mach.size(); n++) {
+                    csv << abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Mach.at(n) << "; ";
+                    csv << abstractSARPerformancePt->theSAR.at(i).Mass << "; ";
+                    csv << abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).Altitude << "; ";
+                    csv << abstractSARPerformancePt->theSAR.at(i).tabSAR.at(j).SAR.at(n) <<std::endl;
                 }
                 csv <<std::endl;
                 csv <<std::endl;
@@ -591,7 +775,7 @@ void performance_assessment_output::generateSARPlotData() {
 void performance_assessment_output::generateBestSARAltPlotData() {
 // TODO(franz#1#): kathi (18.11.2013): Plot seltsam -> reparieren
     std::ofstream plot;
-    string plotDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_bestSAR.csv");
+    string plotDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_bestSAR.csv");
     plot.open(plotDataFile.c_str());
     if (!plot) {
         myRuntimeInfo->err << string(theProgramName) + "_bestSAR.csv could not be opened!" << std::endl;
@@ -599,39 +783,39 @@ void performance_assessment_output::generateBestSARAltPlotData() {
     } else {
         plot << "# " + string(theProgramName) + "_bestSAR.csv" << std::endl;
         // Adjust data structure:
-        plot << "# (1) Mach; (2) Gross Mass [kg]; (3) Opt. Altitude [ft]; (4) Opt. SAR [km/kg]" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractSARPerformancePt->theSAR.size() - 1; i++) {
-            plot << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).bestSARMach << "; ";
-            plot << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).Mass << "; ";
-            plot << 3.2808 * theFactoryPt->abstractSARPerformancePt->theSAR.at(i).bestSARAlt << "; ";
-            plot << theFactoryPt->abstractSARPerformancePt->theSAR.at(i).bestSAR / 1000. << std::endl;
+        plot << "# (1) Mach; (2) Gross Mass [kg]; (3) Opt. Altitude [m]; (4) Opt. SAR [m/kg]" << std::endl;
+        for (unsigned int i(0); i <= abstractSARPerformancePt->theSAR.size() - 1; i++) {
+            plot << abstractSARPerformancePt->theSAR.at(i).bestSARMach << "; ";
+            plot << abstractSARPerformancePt->theSAR.at(i).Mass << "; ";
+            plot << 3.2808 * abstractSARPerformancePt->theSAR.at(i).bestSARAlt << "; ";
+            plot << abstractSARPerformancePt->theSAR.at(i).bestSAR << std::endl;
         }
         plot.close();
     }
 }
 void performance_assessment_output::generateTOFLPlotData() {
 std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_TOFL.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_TOFL.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_TOFL.csv could not be opened!" << std::endl;
         exit(1);
     } else {
         csv << "# " + string(theProgramName) + "_TOFL.csv" << std::endl;
-        csv << "# (1) Altitude [ft]; (2) Gross Mass [kg]; (3) TODR_AEO [m]" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.size() - 1; i++) {
-            for (unsigned int j(0); j <= theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.size() - 1; j++) {
-                csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(i).elevation * 1. / 0.3048 << "; ";
-                csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.at(j).grossMass << "; ";
-                csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.at(j).TODR_AEO << std::endl;
+        csv << "# (1) Altitude [m]; (2) Gross Mass [kg]; (3) TODR_AEO [m]" << std::endl;
+        for (unsigned int i(0); i <= abstractTakeOffPerformancePt->myTOFLField.size() - 1; i++) {
+            for (unsigned int j(0); j <= abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.size() - 1; j++) {
+                csv << abstractTakeOffPerformancePt->myTOFLField.at(i).elevation * 1. / 0.3048 << "; ";
+                csv << abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.at(j).grossMass << "; ";
+                csv << abstractTakeOffPerformancePt->myTOFLField.at(i).myTOFL.at(j).TODR_AEO << std::endl;
             }
             csv << std::endl;
             csv << std::endl;
         }
         // display TOFL
-        csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(0).elevation * 1. / 0.3048 << "; ";
-        csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().grossMass << "; ";
-        csv << theFactoryPt->abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().TODR_AEO << std::endl;
+        csv << abstractTakeOffPerformancePt->myTOFLField.at(0).elevation << "; ";
+        csv << abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().grossMass << "; ";
+        csv << abstractTakeOffPerformancePt->myTOFLField.at(0).myTOFL.back().TODR_AEO << std::endl;
         csv << std::endl;
         csv << std::endl;
         // Req TOFL
@@ -643,48 +827,48 @@ std::ofstream csv;
 }
 void performance_assessment_output::generateBLFLPlotData() {
     std::ofstream csv;
-    string csvDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_BLFL.csv");
+    string csvDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_BLFL.csv");
     csv.open(csvDataFile.c_str());
     if (!csv) {
         myRuntimeInfo->err << string(theProgramName) + "_BLFL.csv could not be opened!" << std::endl;
         exit(1);
     } else {
         csv << "# " + string(theProgramName) + "_BLFL.csv" << std::endl;
-        csv << "# (1) Altitude [ft]; (2) Gross Mass [kg]; (3) TODR_AEO [m]; (4) TODR_OEI [m]; (5) ASDR_OEI [m]; (6) v1 [m/s]" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->abstractTakeOffPerformancePt->myBLFL.vEF.size() - 1; i++) {
+        csv << "# (1) Altitude [m]; (2) Gross Mass [kg]; (3) TODR_AEO [m]; (4) TODR_OEI [m]; (5) ASDR_OEI [m]; (6) v1 [m/s]" << std::endl;
+        for (unsigned int i(0); i <= abstractTakeOffPerformancePt->myBLFL.vEF.size() - 1; i++) {
             csv << "0.0" << "; ";
-            csv << theFactoryPt->abstractTakeOffPerformancePt->myBLFL.grossMass << "; ";
-            csv << theFactoryPt->abstractTakeOffPerformancePt->myBLFL.TODR_AEO << "; ";
-            csv << theFactoryPt->abstractTakeOffPerformancePt->myBLFL.TODR_OEI.at(i) << "; ";
-            csv << theFactoryPt->abstractTakeOffPerformancePt->myBLFL.ASDR_OEI.at(i) << "; ";
-            csv << theFactoryPt->abstractTakeOffPerformancePt->myBLFL.vEF.at(i) << std::endl;
+            csv << abstractTakeOffPerformancePt->myBLFL.grossMass << "; ";
+            csv << abstractTakeOffPerformancePt->myBLFL.TODR_AEO << "; ";
+            csv << abstractTakeOffPerformancePt->myBLFL.TODR_OEI.at(i) << "; ";
+            csv << abstractTakeOffPerformancePt->myBLFL.ASDR_OEI.at(i) << "; ";
+            csv << abstractTakeOffPerformancePt->myBLFL.vEF.at(i) << std::endl;
         }
         csv.close();
     }
 }
 void performance_assessment_output::generateLDNPlotData() {
     std::ofstream plot;
-    string plotDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_LDN.csv");
+    string plotDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_LDN.csv");
     plot.open(plotDataFile.c_str());
     if (!plot) {
         myRuntimeInfo->err << string(theProgramName) + "_LDN.csv could not be opened!" << std::endl;
         exit(1);
     } else {
-        plot << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_LDN.csv" << std::endl;
-        plot << "# (1) Altitude [ft]; (2) Gross Mass [kg]; (3) ALD_AEO [m]" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->theLandingPerformance->myLDNField.size() - 1; i++) {
-            for (unsigned int j(0); j <= theFactoryPt->theLandingPerformance->myLDNField.at(i).myLDN.size() - 1; j++) {
-                plot << theFactoryPt->theLandingPerformance->myLDNField.at(i).elevation * 1. / 0.3048 << "; ";
-                plot << theFactoryPt->theLandingPerformance->myLDNField.at(i).myLDN.at(j).grossMass << "; ";
-                plot << theFactoryPt->theLandingPerformance->myLDNField.at(i).myLDN.at(j).ALD_AEO << std::endl;
+        plot << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_LDN.csv" << std::endl;
+        plot << "# (1) Altitude [m]; (2) Gross Mass [kg]; (3) ALD_AEO [m]" << std::endl;
+        for (unsigned int i(0); i <= abstractLandingPerformancePt->myLDNField.size() - 1; i++) {
+            for (unsigned int j(0); j <= abstractLandingPerformancePt->myLDNField.at(i).myLDN.size() - 1; j++) {
+                plot << abstractLandingPerformancePt->myLDNField.at(i).elevation << "; ";
+                plot << abstractLandingPerformancePt->myLDNField.at(i).myLDN.at(j).grossMass << "; ";
+                plot << abstractLandingPerformancePt->myLDNField.at(i).myLDN.at(j).ALD_AEO << std::endl;
             }
             plot << std::endl;
             plot << std::endl;
         }
         // display TOFL
-        plot << theFactoryPt->theLandingPerformance->myLDNField.at(0).elevation * 1. / 0.3048 << "; ";
-        plot << theFactoryPt->theLandingPerformance->myLDNField.at(0).myLDN.back().grossMass << "; ";
-        plot << theFactoryPt->theLandingPerformance->myLDNField.at(0).myLDN.back().ALD_AEO << std::endl;
+        plot << abstractLandingPerformancePt->myLDNField.at(0).elevation << "; ";
+        plot << abstractLandingPerformancePt->myLDNField.at(0).myLDN.back().grossMass << "; ";
+        plot << abstractLandingPerformancePt->myLDNField.at(0).myLDN.back().ALD_AEO << std::endl;
         plot << std::endl;
         plot << std::endl;
         // Req TOFL
@@ -696,39 +880,74 @@ void performance_assessment_output::generateLDNPlotData() {
 }
 void performance_assessment_output::generateVnPlotData() {
     std::ofstream plot;
-    string plotDataFile(theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_VnDiagram.csv");
+    string plotDataFile(mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_VnDiagram.csv");
     plot.open(plotDataFile.c_str());
     if (!plot) {
         myRuntimeInfo->err << string(theProgramName) + "_VnDiagram.csv could not be opened!" << std::endl;
         getchar();
         exit(1);
     } else {
-        plot << "# " + theFactoryPt->mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_VnDiagram.csv" << std::endl;
-        plot << "# (1) v [kts]; (2) max n (pos.) [-]; (3) min n (neg.) [-]" << std::endl;
+        plot << "# " + mySettingsPt->rtIO->getCsvFilesDirTool() + theProgramName + "_VnDiagram.csv" << std::endl;
+        plot << "# (1) v [m]; (2) max n (pos.) [-]; (3) min n (neg.) [-]" << std::endl;
         plot << "#Clean configuration" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->theVnDiagram->myCleanDiagram.size() - 1; i++) {
-            plot << theFactoryPt->theVnDiagram->myCleanDiagram.at(i).speed << "; ";
-            plot << theFactoryPt->theVnDiagram->myCleanDiagram.at(i).n_upperBound << "; ";
-            plot << theFactoryPt->theVnDiagram->myCleanDiagram.at(i).n_lowerBound << std::endl;
+        for (unsigned int i(0); i <= abstractVnDiagramPt->myCleanDiagram.size() - 1; i++) {
+            plot << abstractVnDiagramPt->myCleanDiagram.at(i).speed << "; ";
+            plot << abstractVnDiagramPt->myCleanDiagram.at(i).n_upperBound << "; ";
+            plot << abstractVnDiagramPt->myCleanDiagram.at(i).n_lowerBound << std::endl;
         }
         plot << std::endl;
         plot << std::endl;
         plot << "#Takeoff configuration" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->theVnDiagram->myCleanDiagram.size() - 1; i++) {
-            plot << theFactoryPt->theVnDiagram->myTakeoffDiagram.at(i).speed << "; ";
-            plot << theFactoryPt->theVnDiagram->myTakeoffDiagram.at(i).n_upperBound << "; ";
-            plot << theFactoryPt->theVnDiagram->myTakeoffDiagram.at(i).n_lowerBound << std::endl;
+        for (unsigned int i(0); i <= abstractVnDiagramPt->myCleanDiagram.size() - 1; i++) {
+            plot << abstractVnDiagramPt->myTakeoffDiagram.at(i).speed << "; ";
+            plot << abstractVnDiagramPt->myTakeoffDiagram.at(i).n_upperBound << "; ";
+            plot << abstractVnDiagramPt->myTakeoffDiagram.at(i).n_lowerBound << std::endl;
         }
         plot << std::endl;
         plot << std::endl;
         plot << "#Landing configuration" << std::endl;
-        for (unsigned int i(0); i <= theFactoryPt->theVnDiagram->myCleanDiagram.size() - 1; i++) {
-            plot << theFactoryPt->theVnDiagram->myLandingDiagram.at(i).speed << "; ";
-            plot << theFactoryPt->theVnDiagram->myLandingDiagram.at(i).n_upperBound << "; ";
-            plot << theFactoryPt->theVnDiagram->myLandingDiagram.at(i).n_lowerBound << std::endl;
+        for (unsigned int i(0); i <= abstractVnDiagramPt->myCleanDiagram.size() - 1; i++) {
+            plot << abstractVnDiagramPt->myLandingDiagram.at(i).speed << "; ";
+            plot << abstractVnDiagramPt->myLandingDiagram.at(i).n_upperBound << "; ";
+            plot << abstractVnDiagramPt->myLandingDiagram.at(i).n_lowerBound << std::endl;
         }
         plot.close();
     }
+}
+
 
+void performance_assessment_output::generatePlots() {
 
+// generate_plot_mission();
+// generate_plot_payload_range();
+// generate_plot_engine_performance_plot_script();
+// generate_plot_flight_envelope();
+// generate_plot_SAR();
+// generate_plot_takeoff_field_length();
+// generate_plot_balanced_field_length();
+// generate_plot_landing_performance();
+// generate_plot_Vn();
+
+}
+
+void performance_assessment_output::generate_plot_mission() {
+    matplot::figure_handle fig = matplot::figure(true);
+    matplot::axes_handle ax = fig->current_axes();
+    // (...)
 }
+
+void performance_assessment_output::generate_plot_payload_range() {
+    matplot::figure_handle fig = matplot::figure(true);
+    matplot::axes_handle ax = fig->current_axes();
+    // Payload-range diagram
+    matplot::plot(abstractPayloadRangePt->Range, abstractPayloadRangePt->Payload);
+    matplot::title("Payload Range Diagram ");
+    ax->xlabel("Range [m]");
+    ax->ylabel("Payload [kg]");
+    // Design point
+    matplot::hold(matplot::on);
+    // matplot::plot()
+    // (...)
+    std::string plot_file_path = rtIO->getPlotDir() + "/" + std::string(TOOL_NAME) + "_payload_range.svg";
+    matplot::save(plot_file_path);
+}
\ No newline at end of file
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_output.h b/performance_assessment/src/taw/defaultMethods/performance_assessment_output.h
index 6a00b2ad8b59af3c2748d362f7cd13528d51c95f..6455818e396ce5d098b12c66053c879ec785a860 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_output.h
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_output.h
@@ -19,21 +19,49 @@
 
 #include <moduleBasics/report.h>
 #include <moduleBasics/module.h>
+#include <matplot/matplot.h>
+#include <moduleBasics/plot.h>
 
 #include <string>
 #include <memory>
 
+#include "../../toolinfo.h"
+
 namespace taw {
 class performance_assessment_factory;
 }
 
 class performance_assessment_output {
  public:
-    performance_assessment_output(std::shared_ptr<taw::performance_assessment_factory> aFactoryPt, std::shared_ptr<aircraft> anAcftPt);
+    performance_assessment_output(
+        std::shared_ptr<abstractFuelPlanning> abstractFuelPlanningPt,
+        std::shared_ptr<abstractOptimizeMissionProfile> abstractOptimizeMissionProfilePt,
+        std::shared_ptr<abstractPayloadRange> abstractPayloadRangePt,
+        std::shared_ptr<abstractEnginePerformance> abstractEnginePerformancePt,
+        std::shared_ptr<abstractCeilingPerformance> abstractCeilingPerformancePt,
+        std::shared_ptr<abstractFlightEnvelopes> abstractFlightEnvelopesPt,
+        std::shared_ptr<abstractSARPerformance> abstractSARPerformancePt,
+        std::shared_ptr<abstractTakeOffPerformance> abstractTakeOffPerformancePt,
+        std::shared_ptr<abstractLandingPerformance> abstractLandingPerformancePt,
+        std::shared_ptr<abstractVnDiagram> abstractVnDiagramPt,
+        std::shared_ptr<aircraft> anAcftPt);
     ~performance_assessment_output();
 
-    std::shared_ptr<taw::performance_assessment_factory> theFactoryPt;
-    std::shared_ptr<aircraft> myAcftPt;
+    const std::shared_ptr<aircraft> myAcftPt;
+    const std::shared_ptr<performance_assessment_settings> mySettingsPt;
+    const std::shared_ptr<RuntimeIO>& rtIO;
+
+    std::shared_ptr<abstractFuelPlanning> abstractFuelPlanningPt;
+    std::shared_ptr<abstractOptimizeMissionProfile> abstractOptimizeMissionProfilePt;
+    std::shared_ptr<abstractPayloadRange> abstractPayloadRangePt;
+    std::shared_ptr<abstractEnginePerformance> abstractEnginePerformancePt;
+    std::shared_ptr<abstractCeilingPerformance> abstractCeilingPerformancePt;
+    std::shared_ptr<abstractFlightEnvelopes> abstractFlightEnvelopesPt;
+    std::shared_ptr<abstractSARPerformance> abstractSARPerformancePt;
+    std::shared_ptr<abstractTakeOffPerformance> abstractTakeOffPerformancePt;
+    std::shared_ptr<abstractLandingPerformance> abstractLandingPerformancePt;
+    std::shared_ptr<abstractVnDiagram> abstractVnDiagramPt;
+
     Report theReport;
     std::string theProgramName;
 
@@ -57,30 +85,30 @@ class performance_assessment_output {
     */
     void generatePlotDataMission();
 
-    /** \brief Generate Plots scripts
+    /** \brief Generate all relevant Plots
     * \return void
     */
-    void generatePlotScripts();
+    void generatePlots();
 
-    /** \brief Set the settings for the mission data plot
+    /** \brief Generate mission data plot
     */
-    void generatePlotScriptDataMission();
+    void generate_plot_mission();
 
     /** \brief Generate the payload-range diagram
     */
     void generatePlotDataPayloadRange();
 
-    /** \brief Set the settings for the payload-range diagram
+    /** \brief Generate payload-range diagram
     */
-    void generatePlotScriptPayloadRange();
+    void generate_plot_payload_range();
 
     /** \brief Generate the plot of the engine performance
     */
     void generateEnginePerformanceData();
 
-    /** \brief Set the settings for the engine performance plot
-    */
-    void generateEnginePerformancePlotScript();
+    // /** \brief Set the settings for the engine performance plot
+    // */
+    // void generateEnginePerformancePlotScript();
 
     /** \brief Generate the plot of the aircraft ceiling
     */
@@ -90,9 +118,9 @@ class performance_assessment_output {
     */
     void generateFlightEnvelopeData();
 
-    /** \brief Set the settings of the flight envelope plot
-    */
-    void generateFlightEnvelopePlotScript();
+    // /** \brief Set the settings of the flight envelope plot
+    // */
+    // void generateFlightEnvelopePlotScript();
 
     /** \brief Generate the specific air range plot
     */
@@ -102,45 +130,45 @@ class performance_assessment_output {
     */
     void generateBestSARAltPlotData();
 
-    /** \brief Set the settings for the specific air range plot
-    */
-    void generateSARPlotScript();
+    // /** \brief Set the settings for the specific air range plot
+    // */
+    // void generateSARPlotScript();
 
-    /** \brief Set the settings for the optimum specific air range plot
-    */
-    void generateBestSARPlotScript();
+    // /** \brief Set the settings for the optimum specific air range plot
+    // */
+    // void generateBestSARPlotScript();
 
     /** \brief Generate the plot of the take-off field length
     */
     void generateTOFLPlotData();
 
-    /** \brief Set the settings for the take-off field length plot
-    */
-    void generateTOFLPlotScript();
+    // /** \brief Set the settings for the take-off field length plot
+    // */
+    // void generateTOFLPlotScript();
 
     /** \brief Generate the plot of the balanced field length
     */
     void generateBLFLPlotData();
 
-    /** \brief Set the settings of the balanced field length plot
-    */
-    void generateBLFLPlotScript();
+    // /** \brief Set the settings of the balanced field length plot
+    // */
+    // void generateBLFLPlotScript();
 
     /** \brief Generate the plot for the landing field length
     */
     void generateLDNPlotData();
 
-    /** \brief Set the settings of the landing field length plot
-    */
-    void generateLDNPlotScript();
+    // /** \brief Set the settings of the landing field length plot
+    // */
+    // void generateLDNPlotScript();
 
     /** \brief Generate the V-n diagram
     */
     void generateVnPlotData();
 
-    /** \brief Set the settings of the V-n diagram
-    */
-    void generateVnPlotScript();
+    // /** \brief Set the settings of the V-n diagram
+    // */
+    // void generateVnPlotScript();
 };
 
 
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.cpp b/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.cpp
index ad45e2fe90efa784084de9ae67d2fb6d720fc032..1c4d728e2b1cdfb507fa8698baf0675087f666ab 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.cpp
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.cpp
@@ -48,31 +48,25 @@ performance_assessment_settings::performance_assessment_settings(const std::shar
         enginePerformance.Rating.push_back(tempRating);
     }
     /* Switch for Performance Checks */
-    mySwitches.doPayloadRange = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/payload_range_diagram/switch");
-    mySwitches.doEnginePerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/engine_performance/switch");
-    mySwitches.doFlightEnvelopePerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/flight_envelope_performance/switch");
-    mySwitches.overwriteInitialValues = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/flight_envelope_performance/overwrite_initial_values");
-    mySwitches.doClimbPerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/climb_performance/switch");
-    mySwitches.doTOPerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/to_performance/switch");
+    mySwitches.doPayloadRange = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/payload_range_diagram/switch"));
+    mySwitches.doEnginePerformance = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/engine_performance/switch"));
+    mySwitches.doFlightEnvelopePerformance = static_cast<bool>(rtIO->moduleConfig.at(
+        "/module_configuration_file/program_settings/performance_checks/flight_envelope_performance/switch"));
+    mySwitches.overwriteInitialValues = static_cast<bool>(rtIO->moduleConfig.at(
+        "/module_configuration_file/program_settings/performance_checks/flight_envelope_performance/overwrite_initial_values"));
+    mySwitches.doClimbPerformance = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/climb_performance/switch"));
+    mySwitches.doTOPerformance = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/takeoff_performance/switch"));
     if (mySwitches.doTOPerformance) {
-        mySwitches.doBLFLPerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/to_performance/calculate_blfl_performance");
+        mySwitches.doBLFLPerformance = static_cast<bool>(rtIO->moduleConfig.at(
+            "/module_configuration_file/program_settings/performance_checks/takeoff_performance/calculate_blfl_performance"));
     } else {
         mySwitches.doBLFLPerformance       = false;
     }
-    mySwitches.doLandingPerformance = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/landing_performance/switch");
-    mySwitches.doVnDiagram = rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/vn_diagram/switch");
-    mySwitches.doFuelPlanning = rtIO->moduleConfig.at("/module_configuration_file/program_settings/fuel_planning/switch");
+    mySwitches.doLandingPerformance = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/landing_performance/switch"));
+    mySwitches.doVnDiagram = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/performance_checks/vn_diagram/switch"));
+    mySwitches.doFuelPlanning = static_cast<bool>(rtIO->moduleConfig.at("/module_configuration_file/program_settings/fuel_planning/switch"));
     /* Fuel Planning */
     myFuelPlan.contingencyFuel = EndnodeReadOnly<double>("/module_configuration_file/program_settings/fuel_planning/contingency_fuel").read(rtIO->moduleConfig).value();
-    
-    /* Area 51 */
-    node& polarXML = aixml::openDocument(rtIO->getIODir() + "/aeroData/" + rtIO->acxml.at("/aircraft_exchange_file/analysis/aerodynamics/polar/polar_file/value"));
-    std::string missionxmlPath = rtIO->acxml.at("/aircraft_exchange_file/requirements_and_specifications/mission_files/design_mission_file/value");
-    std::string missionString = rtIO->getIODir() + "/missionData/" + rtIO->acxml.at(
-        "/aircraft_exchange_file/requirements_and_specifications/mission_files/design_mission_file/value");
-    node& missionXMLnode = aixml::openDocument(missionString);
-    // std::string aaa = static_cast<std::string>(rtIO->acxml.at("/aircraft_exchange_file/requirements_and_specifications/mission_files/study_mission_file/value"));
-    // node& missionXMLtest = aixml::openDocument(aaa);
 }
 
 void performance_assessment_settings::checkForValidity(double Value, double lowerBound, double upperBound, const string &Text) {
@@ -102,4 +96,4 @@ void performance_assessment_settings::checkForValidity(double Value, double lowe
 }
 
 performance_assessment_settings::~performance_assessment_settings() {
-}
\ No newline at end of file
+}
diff --git a/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.h b/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.h
index c3d8f0c2a45086ec056a9da8046974d91a533c5e..0e96d27e563c62d0ac77ac952865800d888fe123 100644
--- a/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.h
+++ b/performance_assessment/src/taw/defaultMethods/performance_assessment_settings.h
@@ -21,7 +21,6 @@
 #include <vector>
 #include <string>
 #include <memory>
-#include <standardFiles/settings.h>
 
 using std::vector;
 using std::string;
diff --git a/performance_assessment/src/taw/defaultMethods/takeOffPerformance/low_fidelity/takeOffPerformance.cpp b/performance_assessment/src/taw/defaultMethods/takeOffPerformance/low_fidelity/takeOffPerformance.cpp
index f57d6b470807ac91b00e84a561751ec9579aaf2f..8ecbb2b8318e2ea86004da3b98d7fdec184e9b8b 100644
--- a/performance_assessment/src/taw/defaultMethods/takeOffPerformance/low_fidelity/takeOffPerformance.cpp
+++ b/performance_assessment/src/taw/defaultMethods/takeOffPerformance/low_fidelity/takeOffPerformance.cpp
@@ -49,9 +49,9 @@ void takeOffPerformance::doTakeOffPerformance(double theRunwaySlope, double theG
     windSpeed = theHeadWind;
     myRuntimeInfo->out << "      ... Calculation of TOFL_AEO" << endl;
     /* Calculation of TOFL performance as a function of mass and height */
-    for (double elevation(0.0); elevation <= 12000.; elevation += 2000.) {
+    for (double elevation(0.0); elevation <= convertUnit(FOOT, METER, 12000.); convertUnit(FOOT, METER, elevation += 2000.)) {
         myTOFLField.push_back(dataElevationTOFL());
-        myTOFLField.back().elevation = convertUnit(FOOT, METER, elevation);
+        myTOFLField.back().elevation = elevation;
         for (int i(0); i <= 10; i++) {
             myTOFLField.back().myTOFL.push_back(dataTOFL());
             myTOFLField.back().myTOFL.back().grossMass = theAcftPt->OME + static_cast<double>(i) / 10. * (theAcftPt->MTOM - theAcftPt->OME);
@@ -69,7 +69,7 @@ void takeOffPerformance::doTakeOffPerformance(double theRunwaySlope, double theG
 void takeOffPerformance::calcTODR_AEO(double acMass, double Altitude) {
     tempTODR = 0.0;
     tempTime = 0.0;
-    calcGroundRun(theAcftPt->MTOM, 0.0, 0., theAcftPt->vLOF(acMass, Altitude) - windSpeed, &tempTODR, &tempTime, false); // Ground run until V_LOF
+    calcGroundRun(theAcftPt->MTOM, 0.0, 0., theAcftPt->vLOF(acMass, Altitude) - windSpeed, &tempTODR, &tempTime, false);  // Ground run until V_LOF
     calcDistanceToScreenHeight(acMass, Altitude, &tempTODR, &tempTime, false);  // Climb until screen height: 35 ft
     tempTODR = 1.15 * tempTODR;
 }
@@ -153,20 +153,19 @@ void takeOffPerformance::calcGroundRun(double mass, double alt, double V0, doubl
 
 double takeOffPerformance::calcAccelerationGroundRoll(double mass, double alt, double Velocity, bool OEI) {
     double Mach = Velocity / theAcftPt->atm.getSpeedOfSound(alt);
-    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_takeoff, alt, Mach, theAcftPt->atm, 1.0, "TO", theAcftPt->myMission.bleedOffTO,
-        theAcftPt->myMission.shaftOffTO);
+    theAcftPt->myEngines.calculate_N1_with_penalties(theAcftPt->myEnergyProviders.energyCarrierID_takeoff, alt, Mach, theAcftPt->atm, 1.0, "takeoff",
+        theAcftPt->myMission.bleedOffTO, theAcftPt->myMission.shaftOffTO);
     double tempDrag(0.0);
     double tempLift(0.0);
     double tempThrust(theAcftPt->myEngines.get_thrust_aircraft(theAcftPt->myEnergyProviders.energyCarrierID_takeoff));
-    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "TakeOff", theAcftPt->atm);
+    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "takeoff", theAcftPt->atm);
     tempLift = theAcftPt->aero.CLgroundRoll * theAcftPt->S_Wing
                * 0.5 * theAcftPt->atm.getDensity(alt) * pow(Velocity, 2);
     if (OEI == true) {
         tempThrust = tempThrust * static_cast<double>(theAcftPt->numberEngines - 1) / static_cast<double>(theAcftPt->numberEngines);
-        tempDrag = tempDrag + theAcftPt->calcWindMillingDrag(Mach, alt);
+        tempDrag = tempDrag + theAcftPt->calcWindMillingDrag(0, 0, Mach, alt);
     }
-    return 1.0 / mass * (convertUnit(KILO, NEWTON, NEWTON, tempThrust)
-                           - mass * G_FORCE * (runwayFriction + sin(runwaySlopeAngle))
+    return 1.0 / mass * ( tempThrust - mass * G_FORCE * (runwayFriction + sin(runwaySlopeAngle))
                            - (tempDrag - runwayFriction * tempLift));
 }
 
@@ -175,9 +174,8 @@ double takeOffPerformance::calcDeAccelerationGroundRoll(double mass, double alt,
     double tempThrust(0.0);
     double tempLift(0.0);
     double tempDrag(0.0);
-    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "TakeOff", theAcftPt->atm);
-    return 1.0 / mass * (convertUnit(KILO, NEWTON, NEWTON, tempThrust)
-                           - mass * G_FORCE * (brakingFriction + sin(runwaySlopeAngle))
+    tempDrag = theAcftPt->aero.getCLDrag(Mach, alt, theAcftPt->aero.CLgroundRoll, "takeoff", theAcftPt->atm);
+    return 1.0 / mass * (tempThrust - mass * G_FORCE * (brakingFriction + sin(runwaySlopeAngle))
                            - (tempDrag - brakingFriction * tempLift));
 }
 
@@ -191,12 +189,12 @@ void takeOffPerformance::calcDistanceToScreenHeight(double mass, double alt, dou
         if (OEI == true) {
             fACC = (tempTAS / G_FORCE) * ((theAcftPt->v2(mass, alt + convertUnit(FOOT, METER, 35.)) - theAcftPt->vLOF(mass, alt)) / convertUnit(FOOT, METER, 35.));
             tempROC = theAcftPt->ROC(mass, tempAlt, tempMach, fACC,
-                                     "TakeOff", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
+                                     "takeoff", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
         } else {
             fACC = (tempTAS / G_FORCE) * ((theAcftPt->v2(mass, alt + convertUnit(FOOT, METER, 35.)) + convertUnit(KNOTS, METERPERSECOND, 10.) -
                                            theAcftPt->vLOF(mass, alt)) / convertUnit(FOOT, METER, 35.));
             tempROC = theAcftPt->ROC(mass, tempAlt, tempMach, fACC,
-                                     "TakeOff", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, false, theAcftPt->aero);
+                                     "takeoff", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, false, theAcftPt->aero);
         }
         if (tempROC <= 0.) {
             myRuntimeInfo->err << "No climbing ability to reach Screen Height!" << endl;
@@ -212,7 +210,7 @@ void takeOffPerformance::calcDistanceToScreenHeight(double mass, double alt, dou
 bool takeOffPerformance::checkForTOFLReq() {
     bool Check(false);
     if (myTOFLField.at(0).myTOFL.back().TODR_AEO > theAcftPt->myReqs.TOFL) {
-        myRuntimeInfo->out << "The requirement regarding TOFL cannot be maintained.!" << endl;
+        myRuntimeInfo->out << "The required TOFL cannot be maintained!" << endl;
         myRuntimeInfo->out << "TOFL_req        = " << theAcftPt->myReqs.TOFL << " m" << endl;
         myRuntimeInfo->out << "TOFL_calculated = " << myTOFLField.at(0).myTOFL.back().TODR_AEO << " m" << endl;
         Check = false;
@@ -232,7 +230,7 @@ bool takeOffPerformance::checkForSecondSegment() {
         double tempTAS = theAcftPt->v2(theAcftPt->MTOM, tempAlt.at(i));
         double tempMach = tempTAS / theAcftPt->atm.getSpeedOfSound(tempAlt.at(i));
         double tempROC = theAcftPt->ROC(theAcftPt->MTOM, tempAlt.at(i), tempMach, 0.0,
-                                        "Climb", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
+                                        "climb", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
         if (tempClimbGradient > tempROC / tempTAS * 100.) {
             tempClimbGradient = tempROC / tempTAS * 100.;
         }
@@ -266,7 +264,7 @@ bool takeOffPerformance::checkForFinalSegment() {
         //               * fabs(theAcftPt->v2(theAcftPt->MTOM, tempAlt.at(i))-theAcftPt->vFTO(theAcftPt->MTOM, tempAlt.at(i)))/(1100.*0.3048);
         double tempMach = tempTAS / theAcftPt->atm.getSpeedOfSound(tempAlt.at(i));
         double tempROC = theAcftPt->ROC(theAcftPt->MTOM, tempAlt.at(i), tempMach, 0.0,
-                                        "Climb", "TO", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
+                                        "climb", "takeoff", theAcftPt->myMission.bleedOffTO,  theAcftPt->myMission.shaftOffTO, true, theAcftPt->aero);
         if (tempClimbGradient > tempROC / tempTAS * 100.) {
             tempClimbGradient = 100. * tempROC / tempTAS;
         }