diff --git a/Apps/Liquefied/LiquefiedApp.cpp b/Apps/Liquefied/LiquefiedApp.cpp index 619c376..abbbac5 100644 --- a/Apps/Liquefied/LiquefiedApp.cpp +++ b/Apps/Liquefied/LiquefiedApp.cpp @@ -78,16 +78,25 @@ namespace Liq void LiquefiedApp::VisualizeSmoke() const { + glm::vec3 color{0.0f}; + for(Engine::uint32 x = 1; x < Engine::LiquiefiedParams::SIMULATION_WIDTH-1; x++) { for(Engine::uint32 y = 1; y < Engine::LiquiefiedParams::SIMULATION_HEIGHT-1; y++) { const float val = _fluidSimulator->GetDensity(x, y); - glm::vec3 color = {val, val, val}; - if(Engine::LiquiefiedParams::scientificColorScheme) + if(Engine::LiquiefiedParams::visualizationChoice == Engine::Visualization::Greyscale) + { + color = {val, val, val}; + } + else if(Engine::LiquiefiedParams::visualizationChoice == Engine::Visualization::BlackBody) { - color = Engine::Utility::GetScienticColor(val, 0.0f, 1.0f); + color = Engine::Utility::GetColor_BlackBody(val); + } + else if(Engine::LiquiefiedParams::visualizationChoice == Engine::Visualization::ParaView) + { + color = Engine::Utility::GetColor_ParaView(val); } _gridRenderer->Set(x, y, color); @@ -167,7 +176,7 @@ namespace Liq { Engine::PROFILE_SCOPE("Visualize grid"); - if(Engine::LiquiefiedParams::visualizeSmoke) + if(Engine::LiquiefiedParams::visualizationChoice != Engine::Visualization::Nothing) { VisualizeSmoke(); _gridRenderer->UpdateGpuStorage(); @@ -202,12 +211,6 @@ namespace Liq else if(glfwGetKey(Engine::Window::GetWindow(), GLFW_KEY_SPACE) == GLFW_PRESS) Engine::LiquiefiedParams::pauseSimulation = !Engine::LiquiefiedParams::pauseSimulation; - else if(glfwGetKey(Engine::Window::GetWindow(), GLFW_KEY_S) == GLFW_PRESS) - Engine::LiquiefiedParams::visualizeSmoke = !Engine::LiquiefiedParams::visualizeSmoke; - - else if(glfwGetKey(Engine::Window::GetWindow(), GLFW_KEY_C) == GLFW_PRESS) - Engine::LiquiefiedParams::scientificColorScheme = !Engine::LiquiefiedParams::scientificColorScheme; - else if(glfwGetKey(Engine::Window::GetWindow(), GLFW_KEY_R) == GLFW_PRESS) Engine::LiquiefiedParams::resetSimulation = true; diff --git a/Apps/Liquefied/LiquefiedInterface.cpp b/Apps/Liquefied/LiquefiedInterface.cpp index 324523b..4b0743f 100644 --- a/Apps/Liquefied/LiquefiedInterface.cpp +++ b/Apps/Liquefied/LiquefiedInterface.cpp @@ -35,24 +35,48 @@ namespace Liq ImGui::Text("%.3fms - %s", entry.second, entry.first); } ImGui::Separator(); - - // --- Simulation settings - ImGui::NewLine(); - ImGui::Separator(); - CenterText("Simulation settings"); - ImGui::Separator(); - ImGui::NewLine(); - ImGui::RadioButton("Forward Euler", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::ForwardEuler); - ImGui::RadioButton("Backward Euler", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::BackwardEuler); - ImGui::RadioButton("Semi Lagrangian", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::SemiLagrangian); - ImGui::NewLine(); - ImGui::Text("Turbine power: "); - ImGui::SameLine(); - ImGui::PushItemWidth(150.0f); - Input_u32("##Input1", &Engine::LiquiefiedParams::turbinePower, 100, 1000, ImGuiInputTextFlags_CharsDecimal); ImGui::NewLine(); ImGui::Separator(); + // --- Simulation settings + if(ImGui::BeginTabBar("##Tabs", ImGuiTabBarFlags_None)) + { + ImGui::NewLine(); + + if(ImGui::BeginTabItem("Integrator")) + { + ImGui::NewLine(); + ImGui::RadioButton("Forward Euler", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::ForwardEuler); + ImGui::RadioButton("Modified Forward Euler", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::ModifiedForwardEuler); + ImGui::RadioButton("Runge Kutta 2", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::RungeKutta2); + ImGui::RadioButton("Semi Lagrangian", (int*)&Engine::LiquiefiedParams::integratorChoice, Engine::Integrator::SemiLagrangian); + ImGui::EndTabItem(); + } + + if(ImGui::BeginTabItem("Visualization")) + { + ImGui::NewLine(); + ImGui::RadioButton("No visualization", (int*)&Engine::LiquiefiedParams::visualizationChoice, Engine::Visualization::Nothing); + ImGui::RadioButton("Greyscale", (int*)&Engine::LiquiefiedParams::visualizationChoice, Engine::Visualization::Greyscale); + ImGui::RadioButton("BlackBody", (int*)&Engine::LiquiefiedParams::visualizationChoice, Engine::Visualization::BlackBody); + ImGui::RadioButton("ParaView", (int*)&Engine::LiquiefiedParams::visualizationChoice, Engine::Visualization::ParaView); + ImGui::EndTabItem(); + } + + if(ImGui::BeginTabItem("Turbine")) + { + ImGui::NewLine(); + ImGui::Text("Turbine power: "); + ImGui::SameLine(); + ImGui::PushItemWidth(150.0f); + Input_u32("##Input1", &Engine::LiquiefiedParams::turbinePower, 10, 100, ImGuiInputTextFlags_CharsDecimal); + ImGui::EndTabItem(); + } + + ImGui::NewLine(); + ImGui::Separator(); + ImGui::EndTabBar(); + } // --- Numerical value monitoring if(Engine::LiquiefiedParams::activateDebugging) { @@ -82,11 +106,30 @@ namespace Liq ImGui::NewLine(); ImGui::Separator(); } - } ImGui::End(); } + void LiquefiedInterface::AddVerticalBarDivider(float xpos) const + { + ImGui::SetCursorPosX(xpos); + ImGui::SetCursorPosY(3.0f); + ImGui::Text("|"); + ImGui::SetCursorPosX(xpos); + ImGui::SetCursorPosY(16.0f); + ImGui::Text("|"); + ImGui::SetCursorPosX(xpos); + ImGui::SetCursorPosY(29.0f); + ImGui::Text("|"); + ImGui::SetCursorPosX(xpos); + ImGui::SetCursorPosY(42.0f); + ImGui::Text("|"); + ImGui::SetCursorPosX(xpos); + ImGui::SetCursorPosY(55.0f); + ImGui::Text("|"); + } + + void LiquefiedInterface::AddBufferBar() const { ImGui::SetNextWindowBgAlpha(_windowAlphaValue); @@ -97,33 +140,22 @@ namespace Liq { ImGui::SetCursorPosX(10.0f); ImGui::SetCursorPosY(10.0f); - ImGui::Checkbox("Wireframe Rendering (W) |", &Engine::UIParams::wireframeRendering); + ImGui::Checkbox("Wireframe Rendering (W)", &Engine::UIParams::wireframeRendering); ImGui::SetCursorPosY(45.0f); ImGui::SetCursorPosX(10.0f); - ImGui::Checkbox("Pause Simulation (SPACE) |", &Engine::LiquiefiedParams::pauseSimulation); + ImGui::Checkbox("Pause Simulation (SPACE)", &Engine::LiquiefiedParams::pauseSimulation); + AddVerticalBarDivider(255.0f); ImGui::SetCursorPosY(10.0f); ImGui::SetCursorPosX(275.0f); + ImGui::Checkbox("Activate Debugging (A)", &Engine::LiquiefiedParams::activateDebugging); + ImGui::SetCursorPosY(45.0f); + ImGui::SetCursorPosX(275.0f); if(ImGui::Button("Reset Simulation (R)")) { Engine::LiquiefiedParams::resetSimulation = true; } - ImGui::SameLine(); - ImGui::Text("|"); - ImGui::SetCursorPosY(45.0f); - ImGui::SetCursorPosX(275.0f); - ImGui::Text(" |"); - - ImGui::SetCursorPosY(10.0f); - ImGui::SetCursorPosX(485.0f); - ImGui::Checkbox("Visualize Smoke (S) |", &Engine::LiquiefiedParams::visualizeSmoke); - ImGui::SetCursorPosY(45.0f); - ImGui::SetCursorPosX(485.0f); - ImGui::Checkbox("Scientific Colors (C) |", &Engine::LiquiefiedParams::scientificColorScheme); - - ImGui::SetCursorPosY(10.0f); - ImGui::SetCursorPosX(725.0f); - ImGui::Checkbox("Activate Debugging (A) |", &Engine::LiquiefiedParams::activateDebugging); + AddVerticalBarDivider(500.0f); } ImGui::End(); } diff --git a/Apps/Liquefied/LiquefiedInterface.hpp b/Apps/Liquefied/LiquefiedInterface.hpp index 3c093f2..10a29da 100644 --- a/Apps/Liquefied/LiquefiedInterface.hpp +++ b/Apps/Liquefied/LiquefiedInterface.hpp @@ -16,6 +16,7 @@ namespace Liq ImVec2 _debugWindowSize = ImVec2(_debugWindowWidth,(float)Engine::WindowParams::HEIGHT); void AddSideBar() const; + void AddVerticalBarDivider(float xpos) const; void AddBufferBar() const; public: diff --git a/Engine/Application/GlobalParams.hpp b/Engine/Application/GlobalParams.hpp index 8a02db4..d5b40a6 100644 --- a/Engine/Application/GlobalParams.hpp +++ b/Engine/Application/GlobalParams.hpp @@ -154,25 +154,33 @@ namespace Engine enum Integrator { - ForwardEuler = 0, - BackwardEuler = 1, - SemiLagrangian = 2 + ForwardEuler = 0, + ModifiedForwardEuler = 1, + RungeKutta2 = 2, + SemiLagrangian = 3, + }; + + enum Visualization + { + Nothing = 0, + Greyscale = 1, + BlackBody = 2, + ParaView = 3 }; struct LiquiefiedParams { - inline static constexpr uint32 SIMULATION_WIDTH = 150; - inline static constexpr uint32 SIMULATION_HEIGHT = 100; - inline static constexpr uint32 LIQUID_NUM_CELLS = SIMULATION_WIDTH * SIMULATION_HEIGHT; - inline static constexpr uint32 GAUSS_SEIDEL_ITERATIONS = 500; - inline static constexpr float GAUSS_SEIDEL_OVERRELAXATION = 1.9f; - inline static uint32 turbinePower = 2; - inline static bool visualizeSmoke = true; - inline static bool scientificColorScheme = false; - inline static bool pauseSimulation = true; - inline static bool resetSimulation = false; - inline static bool activateDebugging = false; - inline static Integrator integratorChoice = Integrator::ForwardEuler; + inline static constexpr uint32 SIMULATION_WIDTH = 150; + inline static constexpr uint32 SIMULATION_HEIGHT = 100; + inline static constexpr uint32 LIQUID_NUM_CELLS = SIMULATION_WIDTH * SIMULATION_HEIGHT; + inline static constexpr uint32 GAUSS_SEIDEL_ITERATIONS = 20; + inline static constexpr float GAUSS_SEIDEL_OVERRELAXATION = 1.9f; + inline static uint32 turbinePower = 50; + inline static bool pauseSimulation = true; + inline static bool resetSimulation = false; + inline static bool activateDebugging = false; + inline static Integrator integratorChoice = Integrator::SemiLagrangian; + inline static Visualization visualizationChoice = Visualization::Greyscale; }; struct LiquefiedDebug diff --git a/Engine/Core/ColorLUT.hpp b/Engine/Core/ColorLUT.hpp new file mode 100644 index 0000000..ab5094c --- /dev/null +++ b/Engine/Core/ColorLUT.hpp @@ -0,0 +1,2073 @@ +#pragma once + +#include "Types.hpp" + +namespace Engine +{ + class ColorLUT + { + friend class Utility; + + public: + ColorLUT() = delete; + + private: + inline static constexpr uint32 COLOR_TABLE_SIZE = 1024; + + inline static constexpr ColorEntry_t BlackBody[COLOR_TABLE_SIZE] = + { + {0.0, 0.0, 0.0, 0.0}, + {0.0009775171065493646, 0.0032501544983122225, 0.000935673862010805, 0.0005242151764927713}, + {0.0019550342130987292, 0.00650030899662447, 0.001871347724021608, 0.0010484303529854897}, + {0.002932551319648094, 0.009750463494936504, 0.0028070215860324095, 0.0015726455294782127}, + {0.0039100684261974585, 0.01300061799324873, 0.003742695448043215, 0.002096860705970984}, + {0.004887585532746823, 0.01625077249156095, 0.0046783693100540215, 0.002621075882463755}, + {0.005865102639296188, 0.0195009269898732, 0.005614043172064823, 0.003145291058956473}, + {0.006842619745845552, 0.02275108148818528, 0.006549717034075672, 0.0036695062354492433}, + {0.007820136852394917, 0.02600123598649746, 0.00748539089608643, 0.004193721411941968}, + {0.00879765395894428, 0.029251390484809684, 0.008421064758097235, 0.004717936588434738}, + {0.009775171065493646, 0.03250154498312193, 0.00935673862010804, 0.005242151764927457}, + {0.010752688172043012, 0.03575169948143415, 0.010292412482118847, 0.005766366941420228}, + {0.011730205278592375, 0.03900185397974623, 0.011228086344129693, 0.0062905821179129965}, + {0.012707722385141739, 0.04219922709880349, 0.01216376020614045, 0.006814797294405723}, + {0.013685239491691105, 0.045247395069716194, 0.013099434068151257, 0.0073390124708984416}, + {0.01466275659824047, 0.04817103151749475, 0.014035107930162057, 0.007863227647391214}, + {0.015640273704789834, 0.05098304852703669, 0.01497078179217291, 0.008387442823883982}, + {0.016617790811339198, 0.0536943071746643, 0.01590645565418371, 0.008911658000376702}, + {0.01759530791788856, 0.05631404342243503, 0.01684212951619447, 0.009435873176869426}, + {0.01857282502443793, 0.05885018705308597, 0.017777803378205316, 0.009960088353362243}, + {0.019550342130987292, 0.061309604678174305, 0.018713477240216124, 0.010484303529854964}, + {0.020527859237536656, 0.06369828775731723, 0.01964915110222697, 0.011008518706347782}, + {0.021505376344086023, 0.06602150007711027, 0.020584824964237775, 0.011532733882840498}, + {0.022482893450635387, 0.0682838948621014, 0.021520498826248537, 0.012056949059333227}, + {0.02346041055718475, 0.07048960880939875, 0.02245617268825934, 0.012581164235825996}, + {0.024437927663734114, 0.07264233835887596, 0.023391846550270184, 0.013105379412318716}, + {0.025415444770283478, 0.074745402126007, 0.024327520412280992, 0.01362959458881148}, + {0.026392961876832845, 0.076801792439574, 0.025263194274291807, 0.014153809765304257}, + {0.02737047898338221, 0.07881421821578583, 0.026198868136302546, 0.014678024941796984}, + {0.028347996089931573, 0.08078514088041025, 0.0271345419983134, 0.015202240118289698}, + {0.02932551319648094, 0.08271680466538467, 0.028070215860324214, 0.015726455294782466}, + {0.030303030303030304, 0.08461126231776858, 0.029005889722334997, 0.016250670471275243}, + {0.03128054740957967, 0.08647039704032547, 0.02994156358434582, 0.01677488564776796}, + {0.03225806451612903, 0.08829594131583143, 0.030877237446356613, 0.017299100824260685}, + {0.033235581622678395, 0.0900894931381418, 0.03181291130836742, 0.017823316000753448}, + {0.03421309872922776, 0.09185253007254823, 0.03274858517037822, 0.01834753117724622}, + {0.03519061583577712, 0.09358642148908011, 0.033684259032389016, 0.01887174635373894}, + {0.03616813294232649, 0.09529243925001449, 0.03461993289439984, 0.01939596153023171}, + {0.03714565004887586, 0.09697176708317232, 0.03555560675641063, 0.019920176706724434}, + {0.03812316715542522, 0.0986255088327376, 0.03649128061842144, 0.020444391883217203}, + {0.039100684261974585, 0.10025469574718862, 0.037426954480432234, 0.02096860705970992}, + {0.04007820136852395, 0.10186029293784199, 0.03836262834244302, 0.021492822236202698}, + {0.04105571847507331, 0.10344320512021013, 0.039298302204453864, 0.02201703741269542}, + {0.042033235581622676, 0.10500428173290038, 0.04023397606646467, 0.022541252589188196}, + {0.043010752688172046, 0.10654432151436868, 0.04115389946783143, 0.023065467765680914}, + {0.04398826979472141, 0.10806407660589959, 0.04205848328060131, 0.023589682942173684}, + {0.044965786901270774, 0.10956425623924129, 0.042951415451139986, 0.024113898118666453}, + {0.04594330400782014, 0.11104553005900858, 0.0438330945631945, 0.024638113295159126}, + {0.0469208211143695, 0.11250853112299239, 0.04470389742341833, 0.02516232847165189}, + {0.047898338220918865, 0.11395385861762578, 0.045564180677662595, 0.02568654364814467}, + {0.04887585532746823, 0.1153820803208842, 0.04641428227693593, 0.026210758824637446}, + {0.04985337243401759, 0.11679373484066752, 0.04725452280972673, 0.02673497400113021}, + {0.050830889540566956, 0.11818933365311163, 0.048085206715240754, 0.02725918917762288}, + {0.05180840664711633, 0.11956936296219811, 0.04890662339027232, 0.027783404354115655}, + {0.05278592375366569, 0.12093428539939008, 0.049719048200855785, 0.028307619530608463}, + {0.053763440860215055, 0.12228454157975008, 0.050522743408493255, 0.028831834707101194}, + {0.05474095796676442, 0.12362055152903667, 0.05131795901958681, 0.029356049883593957}, + {0.05571847507331378, 0.12494271599457984, 0.05210493356569278, 0.02988026506008663}, + {0.056695992179863146, 0.1262514176512644, 0.0528838948213445, 0.03040448023657945}, + {0.05767350928641251, 0.12754702221267059, 0.05365506046542085, 0.03092869541307217}, + {0.05865102639296188, 0.12882987945630517, 0.05441863869138199, 0.03145291058956493}, + {0.059628543499511244, 0.13010032417088074, 0.05517482877110482, 0.031977125766057664}, + {0.06060606060606061, 0.13136154334834071, 0.05592204907151021, 0.032501468643899474}, + {0.06158357771260997, 0.13263288133103093, 0.056648707032181715, 0.03302679902682194}, + {0.06256109481915934, 0.1339159892297319, 0.05735412333653931, 0.03355320629944304}, + {0.0635386119257087, 0.13521062838121678, 0.058038758889518406, 0.0340806962540775}, + {0.06451612903225806, 0.13651656453318783, 0.058703045701813374, 0.03460927468304043}, + {0.06549364613880743, 0.13783356786289627, 0.0593473888846403, 0.035138947378646535}, + {0.06647116324535679, 0.13916141298637466, 0.059972168457068396, 0.03566972013321093}, + {0.06744868035190615, 0.14049987895897986, 0.06057774098629818, 0.03620159873904845}, + {0.06842619745845552, 0.14184874926791619, 0.06116444107867281, 0.03673458898847412}, + {0.06940371456500488, 0.14320781181737863, 0.06173258273697279, 0.03726869667380269}, + {0.07038123167155425, 0.14457685890693095, 0.062282460597634225, 0.03780392758734918}, + {0.07135874877810362, 0.14595568720369997, 0.06281435105987887, 0.038340287521428554}, + {0.07233626588465299, 0.14734409770894033, 0.06332851331731706, 0.03887778226835569}, + {0.07331378299120235, 0.1487418957194957, 0.06382519030134806, 0.039416417620445475}, + {0.07429130009775171, 0.1501488907846528, 0.06430460954460565, 0.03995619937001291}, + {0.07526881720430108, 0.15156489665885564, 0.0647669839717602, 0.04049629658190677}, + {0.07624633431085044, 0.15298973125072265, 0.06521251262416647, 0.04102685958152357}, + {0.0772238514173998, 0.1544232165687779, 0.06564138132412917, 0.04155447594235167}, + {0.07820136852394917, 0.15586517866428787, 0.06605376328392532, 0.042079209497860946}, + {0.07917888563049853, 0.15731544757156382, 0.06644981966416605, 0.04260112211813514}, + {0.0801564027370479, 0.15877405251988697, 0.0668291764721563, 0.04312035088156998}, + {0.08113391984359726, 0.16023679686376371, 0.06720283977982625, 0.04363535825082925}, + {0.08211143695014662, 0.16170194264946378, 0.06757538680609515, 0.04414556392473947}, + {0.08308895405669599, 0.16316946742002963, 0.06794682023150661, 0.04465105991811052}, + {0.08406647116324535, 0.16463934923656745, 0.06831714268693348, 0.04515193514895221}, + {0.08504398826979472, 0.16611156666243615, 0.06868635675444315, 0.045648275580172544}, + {0.08602150537634409, 0.16758609874799107, 0.06905446496814091, 0.04614016435307328}, + {0.08699902248289346, 0.1690629250158634, 0.06942146981499167, 0.046627681913216444}, + {0.08797653958944282, 0.17054202544675318, 0.06978737373562094, 0.04711090612918468}, + {0.08895405669599218, 0.1720233804657172, 0.07015217912509594, 0.04758991240472018}, + {0.08993157380254155, 0.1735069709289315, 0.07051588833368652, 0.04806477378468423}, + {0.09090909090909091, 0.17499277811091288, 0.0708785036676082, 0.04853556105525044}, + {0.09188660801564028, 0.17648078369217815, 0.07124002738974528, 0.04900234283870621}, + {0.09286412512218964, 0.17797096974732937, 0.0716004617203573, 0.04946518568321558}, + {0.093841642228739, 0.17946331873354449, 0.07195980883776742, 0.04992415414786195}, + {0.09481915933528837, 0.18095781347946063, 0.07231807087903439, 0.05037931088327389}, + {0.09579667644183773, 0.18245443717443463, 0.0726752499406074, 0.05083071670810666}, + {0.0967741935483871, 0.18395317335816666, 0.07303134807896594, 0.05127843068163931}, + {0.09775171065493646, 0.18545400591067304, 0.0733863673112429, 0.051722510172722246}, + {0.09872922776148582, 0.18695691904259562, 0.07374030961583414, 0.05216301092529917}, + {0.09970674486803519, 0.1884618972858349, 0.07409317693299211, 0.05259998712070634}, + {0.10068426197458455, 0.18996892548449568, 0.0744449711654056, 0.05303349143694131}, + {0.10166177908113391, 0.19147798878613168, 0.07479569417876639, 0.05346357510507866}, + {0.10263929618768329, 0.1929890726332806, 0.07514534780232085, 0.05389028796299839}, + {0.10361681329423265, 0.1945021627552773, 0.07549393382941003, 0.0543136785065813}, + {0.10459433040078202, 0.19601724516033514, 0.0758414540179965, 0.054733793938515234}, + {0.10557184750733138, 0.19753430612788625, 0.07618791009117773, 0.05515068021484661}, + {0.10654936461388075, 0.19905333220117044, 0.07653330373768913, 0.05556438208940357}, + {0.10752688172043011, 0.20057431018006439, 0.07687763661239408, 0.05597494315620687}, + {0.10850439882697947, 0.20209722711414252, 0.0772209103367631, 0.056382405889979996}, + {0.10948191593352884, 0.20362207029596013, 0.07756312649934141, 0.05678681168485956}, + {0.1104594330400782, 0.2051488272545518, 0.07790428665620627, 0.05718820089140445}, + {0.11143695014662756, 0.20667748574913747, 0.07824439233141292, 0.057586612851991785}, + {0.11241446725317693, 0.2082080337630272, 0.07858344501743147, 0.057982085934686574}, + {0.11339198435972629, 0.20974045949772024, 0.07892144617557201, 0.05837465756566259}, + {0.11436950146627566, 0.21127475136718832, 0.07925839723640157, 0.058764364260251396}, + {0.11534701857282502, 0.21281089799233888, 0.07959429960015091, 0.059151241652687016}, + {0.11632453567937438, 0.21434888819565207, 0.07992915463711167, 0.059535324524615026}, + {0.11730205278592376, 0.21588871099598234, 0.08026296368802521, 0.05991664683242565}, + {0.11827956989247312, 0.21743035560352353, 0.08059572806446169, 0.06029524173347146}, + {0.11925708699902249, 0.21897381141492767, 0.08092744904919194, 0.0606711416112232}, + {0.12023460410557185, 0.22051906800857435, 0.08125812789654915, 0.06104437809941609}, + {0.12121212121212122, 0.22206611513998453, 0.08158776583278401, 0.06141498210523568}, + {0.12218963831867058, 0.22361494273737448, 0.0819163640564107, 0.06178298383158939}, + {0.12316715542521994, 0.22516554089734386, 0.08224392373854594, 0.062148412798506865}, + {0.1241446725317693, 0.2267178998806953, 0.08257044602323985, 0.0625112978637109}, + {0.12512218963831867, 0.22827201010837805, 0.0828959320277996, 0.06287166724239701}, + {0.12609970674486803, 0.22982786215755546, 0.08322038284310568, 0.06322954852625898}, + {0.1270772238514174, 0.23138544675778677, 0.08354379953392166, 0.06358496870179534}, + {0.12805474095796676, 0.23294475478732563, 0.08386618313919611, 0.06393795416792813}, + {0.12903225806451613, 0.23450577726952576, 0.08418753467235865, 0.06428853075296728}, + {0.1300097751710655, 0.23606850536935353, 0.08450785512160885, 0.0646367237309482}, + {0.13098729227761485, 0.23763293039000238, 0.08482714545019904, 0.06498255783737147}, + {0.13196480938416422, 0.23919904376960688, 0.0851454065967105, 0.0653260572843703}, + {0.13294232649071358, 0.2407668370780517, 0.08546263947532395, 0.06566724577533226}, + {0.13391984359726294, 0.24233630201387302, 0.08577884497608376, 0.06600614651899714}, + {0.1348973607038123, 0.24390743040125046, 0.08609402396515592, 0.0663427822430549}, + {0.13587487781036167, 0.2454802141870835, 0.08640817728508135, 0.06667717520726518}, + {0.13685239491691104, 0.24705464543815342, 0.08672130575502268, 0.06700934721611726}, + {0.1378299120234604, 0.2486307163383646, 0.08703341017100544, 0.06733931963105205}, + {0.13880742913000976, 0.2502084191860654, 0.08734449130615526, 0.06766711338226242}, + {0.13978494623655913, 0.2517877463914435, 0.08765454991092744, 0.06799274898009033}, + {0.1407624633431085, 0.2533686904739957, 0.08796358671333424, 0.06831624652603832}, + {0.14173998044965788, 0.2549512440600674, 0.08827160241916462, 0.06863762572340859}, + {0.14271749755620725, 0.25653539988046126, 0.08857859771220092, 0.06895690588758746}, + {0.1436950146627566, 0.2581211507681131, 0.08888457325442939, 0.06927410595598824}, + {0.14467253176930597, 0.2597084896558301, 0.08918952968624716, 0.06958924449766615}, + {0.14565004887585534, 0.2612974095740933, 0.08949346762666385, 0.06990233972261867}, + {0.1466275659824047, 0.26288790364891895, 0.0897963876734987, 0.07021340949078378}, + {0.14760508308895406, 0.2644799650997793, 0.0900982904035737, 0.07052247132074763}, + {0.14858260019550343, 0.2660735872375789, 0.09039917637290229, 0.07082954239817313}, + {0.1495601173020528, 0.26766876346268675, 0.09069904611687343, 0.07113463958396027}, + {0.15053763440860216, 0.2692654872630206, 0.09099790015043224, 0.07143777942214882}, + {0.15151515151515152, 0.2708637522121832, 0.09129573896825582, 0.07173897814757191}, + {0.15249266862170088, 0.2724635519676481, 0.09159256304492519, 0.07203825169327202}, + {0.15347018572825025, 0.27406488026899395, 0.09188837283509421, 0.0723356156976862}, + {0.1544477028347996, 0.2756677309361856, 0.09218316877365401, 0.07263108551161102}, + {0.15542521994134897, 0.2772720978678999, 0.09247695127589292, 0.07292467620495321}, + {0.15640273704789834, 0.278877975039897, 0.09276972073765438, 0.07321640257327694}, + {0.1573802541544477, 0.28048535650343237, 0.09306147753548993, 0.07350627914415173}, + {0.15835777126099707, 0.28209423638371206, 0.09335222202680935, 0.07379432018331139}, + {0.15933528836754643, 0.2837046088783863, 0.09364195455002683, 0.07408053970062814}, + {0.1603128054740958, 0.28531646825608337, 0.09393067542470412, 0.07436495145591077}, + {0.16129032258064516, 0.2869298088549806, 0.09421838495169027, 0.07464756896453142}, + {0.16226783968719452, 0.2885446250814119, 0.09450508341325825, 0.07492840550288835}, + {0.16324535679374388, 0.290160911408511, 0.0947907710732378, 0.07520747411370951}, + {0.16422287390029325, 0.29177866237488903, 0.0950754481771455, 0.07548478761120264}, + {0.1652003910068426, 0.2933978725833459, 0.09535911495231206, 0.07576035858605859}, + {0.16617790811339198, 0.2950185366996136, 0.09564177160800622, 0.07603419941031023}, + {0.16715542521994134, 0.2966406494511315, 0.09592341833555473, 0.07630632224205447}, + {0.1681329423264907, 0.2982642056258513, 0.09620405530846182, 0.07657673903004097}, + {0.16911045943304007, 0.2998892000710735, 0.09648368268252322, 0.07684546151813224}, + {0.17008797653958943, 0.3015156276923104, 0.09676230059593893, 0.07711250124963856}, + {0.1710654936461388, 0.3031434834521793, 0.09703990916942232, 0.07737786957153392}, + {0.17204301075268819, 0.30477276236932094, 0.09731650850630691, 0.07764157763855489}, + {0.17302052785923755, 0.30640345951734604, 0.09759209869265112, 0.07790363641718773}, + {0.1739980449657869, 0.3080355700238064, 0.09786667979733854, 0.07816405668954646}, + {0.17497556207233628, 0.30966908906919105, 0.09814025187217729, 0.07842284905714578}, + {0.17595307917888564, 0.3113040118859472, 0.09841281495199666, 0.07868002394457302}, + {0.176930596285435, 0.3129403337575243, 0.0986843690547399, 0.07893559160306066}, + {0.17790811339198437, 0.3145780500174409, 0.09895491418155605, 0.0791895621139646}, + {0.17888563049853373, 0.3162171560483736, 0.09922445031688834, 0.0794419453921493}, + {0.1798631476050831, 0.3178576472812685, 0.0994929774285612, 0.0796927511892846}, + {0.18084066471163246, 0.3194995191944728, 0.09976049546786347, 0.07994198909705574}, + {0.18181818181818182, 0.3211427595131068, 0.10002700661821606, 0.08018973783410499}, + {0.1827956989247312, 0.3227871611551817, 0.10029256946279622, 0.080437813945136}, + {0.18377321603128055, 0.3244327604213453, 0.10055717276518841, 0.08068588256018863}, + {0.18475073313782991, 0.32607955575289194, 0.10082081614883379, 0.08093394383286162}, + {0.18572825024437928, 0.32772754558277817, 0.10108349922566254, 0.08118199791577682}, + {0.18670576735092864, 0.32937672833598053, 0.10134522159610207, 0.081430044960586}, + {0.187683284457478, 0.33102710242984545, 0.10160598284908431, 0.08167808511798019}, + {0.18866080156402737, 0.3326786662744275, 0.10186578256205217, 0.08192611853769668}, + {0.18963831867057673, 0.33433141827281837, 0.10212462030096486, 0.08217414536852716}, + {0.1906158357771261, 0.3359853568214672, 0.10238249562030208, 0.08242216575832526}, + {0.19159335288367546, 0.337640480310491, 0.10263940806306882, 0.08267017985401445}, + {0.19257086999022482, 0.33929678712397693, 0.10289535716079778, 0.08291818780159557}, + {0.1935483870967742, 0.34095427564027536, 0.10315034243355184, 0.08316618974615428}, + {0.19452590420332355, 0.342612944232285, 0.10340436338992412, 0.08341418583186808}, + {0.19550342130987292, 0.34427279126773025, 0.10365741952704069, 0.08366217620201455}, + {0.19648093841642228, 0.34593381510942994, 0.10390951033055815, 0.08391016099897777}, + {0.19745845552297164, 0.34759601411555924, 0.10416063527466368, 0.084158140364256}, + {0.198435972629521, 0.3492593866399037, 0.10441079382207236, 0.08440611443846857}, + {0.19941348973607037, 0.3509239310321063, 0.10465998542402455, 0.08465408336136301}, + {0.20039100684261973, 0.3525896456379076, 0.10490820952028251, 0.0849020472718219}, + {0.2013685239491691, 0.35425652879937913, 0.10515546553912547, 0.0851500063078702}, + {0.20234604105571846, 0.35592457885514955, 0.10540175289734416, 0.0853979606066814}, + {0.20332355816226783, 0.35759379414062553, 0.10564707100023524, 0.08564591030458477}, + {0.20430107526881722, 0.3592641729882055, 0.10589141924159437, 0.08589385553707207}, + {0.20527859237536658, 0.3609357137274878, 0.10613479700370759, 0.08614179643880379}, + {0.20625610948191594, 0.36260841468547295, 0.10637720365734349, 0.08638973314361614}, + {0.2072336265884653, 0.36428227418676, 0.10661863856174389, 0.0866376657845272}, + {0.20821114369501467, 0.3659572905537378, 0.10685910106461305, 0.0868855944937438}, + {0.20918866080156404, 0.36763346210677006, 0.10709859050210663, 0.08713351940266723}, + {0.2101661779081134, 0.36931078716437565, 0.10733710619882042, 0.08738144064190004}, + {0.21114369501466276, 0.3709892640434045, 0.1075746474677772, 0.08762935834125216}, + {0.21212121212121213, 0.3726688910592071, 0.10781121361041351, 0.08787727262974712}, + {0.2130987292277615, 0.37434966652580054, 0.10804680391656465, 0.08812518363562793}, + {0.21407624633431085, 0.37603158875602877, 0.10828141766445043, 0.08837309148636341}, + {0.21505376344086022, 0.3777146560617191, 0.10851505412065893, 0.08862099630865403}, + {0.21603128054740958, 0.3793988667538343, 0.10874771254012977, 0.08886889822843802}, + {0.21700879765395895, 0.38108421914261925, 0.10897939216613575, 0.08911679737089684}, + {0.2179863147605083, 0.38277071153774483, 0.10921009223026565, 0.0893646938604615}, + {0.21896383186705767, 0.38445834224844727, 0.10943981195240418, 0.08961258782081791}, + {0.21994134897360704, 0.3861471095836629, 0.10966855054071267, 0.08986047937491307}, + {0.2209188660801564, 0.38783701185216013, 0.10989630719160678, 0.09010836864496}, + {0.22189638318670576, 0.38952804736266644, 0.11012308108973637, 0.09035625575244413}, + {0.22287390029325513, 0.3912202144239934, 0.1103488714079622, 0.09060414081812823}, + {0.2238514173998045, 0.3929135113451556, 0.11057367730733272, 0.09085202396205833}, + {0.22482893450635386, 0.3946079364354893, 0.11079749793705976, 0.09109990530356865}, + {0.22580645161290322, 0.3963034880047647, 0.11102033243449339, 0.09134778496128748}, + {0.22678396871945258, 0.3980001643632974, 0.11124217992509666, 0.09159566305314226}, + {0.22776148582600195, 0.3996979638220548, 0.11146303952241837, 0.0918435396963651}, + {0.2287390029325513, 0.4013968846927605, 0.11168291032806532, 0.0920914150074974}, + {0.22971652003910067, 0.40309692528799573, 0.11190179143167472, 0.09233928910239589}, + {0.23069403714565004, 0.4047980839212968, 0.11211968191088442, 0.09258716209623705}, + {0.2316715542521994, 0.40650035890725056, 0.11233658083130313, 0.09283503410352248}, + {0.23264907135874877, 0.4082037485615876, 0.11255248724647879, 0.09308290523808405}, + {0.23362658846529813, 0.40990825120127083, 0.11276740019786805, 0.09333077561308833}, + {0.23460410557184752, 0.4116138651445839, 0.11298131871480252, 0.09357864534104249}, + {0.23558162267839688, 0.4133205887112145, 0.11319424181445584, 0.09382651453379817}, + {0.23655913978494625, 0.4150284202223384, 0.11340616850180896, 0.09407438330255707}, + {0.2375366568914956, 0.4167373580006965, 0.11361709776961595, 0.09432225175787531}, + {0.23851417399804498, 0.4184474003706744, 0.1138270285983661, 0.09457012000966838}, + {0.23949169110459434, 0.4201585456583765, 0.11403595995624888, 0.09481798816721584}, + {0.2404692082111437, 0.42187079219169815, 0.11424389079911443, 0.09506585633916573}, + {0.24144672531769307, 0.4235841383003975, 0.11445082007043642, 0.09531372463353971}, + {0.24242424242424243, 0.425298582316163, 0.11465674670127149, 0.09556159315773721}, + {0.2434017595307918, 0.42701412257268, 0.11486166961021815, 0.0958094620185399}, + {0.24437927663734116, 0.4287307574056954, 0.1150655877033773, 0.09605733132211666}, + {0.24535679374389052, 0.4304484851530795, 0.1152684998743084, 0.09630520117402763}, + {0.24633431085043989, 0.43216730415488686, 0.11547040500398631, 0.09655307167922866}, + {0.24731182795698925, 0.43388721275341513, 0.11567130196075773, 0.09680094294207586}, + {0.2482893450635386, 0.43560820929326083, 0.11587118960029599, 0.09704881506632959}, + {0.24926686217008798, 0.43733029212137564, 0.11607006676555542, 0.09729668815515924}, + {0.25024437927663734, 0.439053459587119, 0.11626793228672394, 0.09754456231114736}, + {0.2512218963831867, 0.4407777100423093, 0.11646478498117507, 0.0977924376362932}, + {0.25219941348973607, 0.44250304184127515, 0.11666062365342042, 0.09804031423201776}, + {0.25317693059628543, 0.44422945334090275, 0.11685544709505788, 0.09828819219916768}, + {0.2541544477028348, 0.4459569429006827, 0.1170492540847238, 0.09853607163801897}, + {0.25513196480938416, 0.4476855088827561, 0.11724204338803915, 0.09878395264828155}, + {0.2561094819159335, 0.44941514965195745, 0.11743381375755682, 0.09903183532910281}, + {0.2570869990224829, 0.45114586357585823, 0.11762456393271015, 0.09927971977907221}, + {0.25806451612903225, 0.45287764902480626, 0.11781429263975676, 0.09952760609622455}, + {0.2590420332355816, 0.4546105043719674, 0.11800299859172314, 0.0997754943780444}, + {0.260019550342131, 0.45634442799336233, 0.11819068048834896, 0.1000233847214696}, + {0.26099706744868034, 0.45807941826790394, 0.1183773370160289, 0.10027127722289556}, + {0.2619745845552297, 0.45981547357743363, 0.11856296684775466, 0.10051917197817858}, + {0.26295210166177907, 0.4615525923067553, 0.11874756864305419, 0.10076706908263988}, + {0.26392961876832843, 0.4632907728436691, 0.11893114104793329, 0.10101496863106943}, + {0.2649071358748778, 0.46503001357900337, 0.11911368269481257, 0.10126287071772946}, + {0.26588465298142716, 0.4667703129066458, 0.11929519220246476, 0.10151077543635828}, + {0.2668621700879765, 0.4685116692235736, 0.11947566817595179, 0.1017586828801739}, + {0.2678396871945259, 0.47025408092988147, 0.11965510920655975, 0.1020065931418773}, + {0.26881720430107525, 0.47199754642881103, 0.11983351387173297, 0.10225450631365687}, + {0.2697947214076246, 0.47374206412677605, 0.12001088073500771, 0.10250242248719105}, + {0.270772238514174, 0.4754876324333894, 0.12018720834594332, 0.10275034175365227}, + {0.27174975562072334, 0.47723424976148715, 0.12036249524005418, 0.10299826420371033}, + {0.2727272727272727, 0.4789819145271526, 0.12053673993873884, 0.10324618992753601}, + {0.27370478983382207, 0.4807306251497398, 0.12070994094920945, 0.10349411901480454}, + {0.27468230694037143, 0.4824803800518949, 0.12088209676441894, 0.1037420515546986}, + {0.2756598240469208, 0.4842311776595776, 0.1210532058629874, 0.10398998763591188}, + {0.27663734115347016, 0.48598301640208214, 0.12122326670912806, 0.10423792734665291}, + {0.2776148582600195, 0.4877358947120551, 0.121392277752571, 0.1044858707746475}, + {0.2785923753665689, 0.48948981102551586, 0.12156023742848646, 0.10473381800714257}, + {0.27956989247311825, 0.49124476378187437, 0.12172714415740607, 0.10498176913090951}, + {0.2805474095796676, 0.493000751423947, 0.12189299634514453, 0.10522972423224689}, + {0.281524926686217, 0.49475777239797397, 0.12205779238271902, 0.1054776833969843}, + {0.2825024437927664, 0.49651582515363485, 0.12222153064626592, 0.10572564671048487}, + {0.28347996089931576, 0.49827490814406333, 0.12238420949696027, 0.10597361425764873}, + {0.2844574780058651, 0.5000350198258615, 0.12254582728092955, 0.1062215861229164}, + {0.2854349951124145, 0.5017961586591134, 0.12270638232916953, 0.10646956239027128}, + {0.28641251221896386, 0.5035583231073983, 0.12286587295745682, 0.1067175431432432}, + {0.2873900293255132, 0.5053215116378026, 0.12302429746626117, 0.10696552846491128}, + {0.2883675464320626, 0.5070857227209317, 0.12318165414065643, 0.10721351843790677}, + {0.28934506353861195, 0.5088509548309205, 0.12333794125022973, 0.10746151314441663}, + {0.2903225806451613, 0.5106172064454445, 0.12349315704898994, 0.10770951266618545}, + {0.2913000977517107, 0.5123844760457301, 0.12364729977527358, 0.10795751708451964}, + {0.29227761485826004, 0.5141527621165621, 0.12380036765165178, 0.10820552648028925}, + {0.2932551319648094, 0.5159220631462946, 0.12395235888483286, 0.1084535409339315}, + {0.29423264907135877, 0.5176923776268576, 0.12410327166556637, 0.10870156052545349}, + {0.29521016617790813, 0.519463704053766, 0.12425310416854352, 0.10894958533443497}, + {0.2961876832844575, 0.5212360409261253, 0.12440185455229749, 0.10919761544003112}, + {0.29716520039100686, 0.5230093867466399, 0.12454952095910155, 0.10944565092097541}, + {0.2981427174975562, 0.5247837400216181, 0.12469610151486765, 0.10969369185558242}, + {0.2991202346041056, 0.5265590992609789, 0.12484159432903955, 0.10994173832175066}, + {0.30009775171065495, 0.5283354629782561, 0.12498599749448952, 0.11018979039696503}, + {0.3010752688172043, 0.5301128296906037, 0.1251293090874089, 0.11043784815829963}, + {0.3020527859237537, 0.5318911979188011, 0.12527152716720122, 0.11068591168242026}, + {0.30303030303030304, 0.5336705661872558, 0.12541264977637015, 0.11093398104558785}, + {0.3040078201368524, 0.5354509330240078, 0.12555267494040945, 0.11118205632365999}, + {0.30498533724340177, 0.5372322969607323, 0.12569160066768717, 0.11143013759209436}, + {0.30596285434995113, 0.5390146565327427, 0.1258294249493332, 0.11167822492595075}, + {0.3069403714565005, 0.5407980102789934, 0.12596614575912057, 0.11192631839989428}, + {0.30791788856304986, 0.5425823567420816, 0.1261017610533489, 0.11217441808819742}, + {0.3088954056695992, 0.5443676944682482, 0.12623626877072364, 0.1124225240647426}, + {0.3098729227761486, 0.5461540220073803, 0.12636966683223427, 0.11267063640302458}, + {0.31085043988269795, 0.5479413379130114, 0.12650195314103255, 0.11291875517615382}, + {0.3118279569892473, 0.5497296407423226, 0.12663312558230588, 0.1131668804568576}, + {0.3128054740957967, 0.5515189290561426, 0.12676318202315182, 0.1134150123174835}, + {0.31378299120234604, 0.5533092014189478, 0.12689212031245012, 0.11366315083000131}, + {0.3147605083088954, 0.5551004563988616, 0.12701993828073185, 0.11391129606600575}, + {0.31573802541544477, 0.5568926925676553, 0.12714663374004756, 0.11415944809671871}, + {0.31671554252199413, 0.5586859085007451, 0.12727220448383414, 0.11440760699299132}, + {0.3176930596285435, 0.5604801027771924, 0.12739664828677846, 0.11465577282530676}, + {0.31867057673509286, 0.562275273979702, 0.12751996290468212, 0.11490394566378265}, + {0.3196480938416422, 0.56407142069462, 0.12764214607431945, 0.11515212557817278}, + {0.3206256109481916, 0.5658685415119331, 0.12776319551329807, 0.11540031263787004}, + {0.32160312805474095, 0.5676666350252646, 0.1278831089199164, 0.11564850691190812}, + {0.3225806451612903, 0.5694656998318731, 0.12800188397301654, 0.11589670846896435}, + {0.3235581622678397, 0.57126573453265, 0.12811951833184007, 0.11614491737736135}, + {0.32453567937438904, 0.573066737732115, 0.1282360096358769, 0.11639313370506998}, + {0.3255131964809384, 0.5748687080384152, 0.12835135550471502, 0.1166413575197105}, + {0.32649071358748777, 0.5766716440633206, 0.12846555353788736, 0.11688958888855616}, + {0.32746823069403713, 0.5784755444222193, 0.12857860131471743, 0.11713782787853375}, + {0.3284457478005865, 0.5802804077341163, 0.12869049639416164, 0.11738607455622721}, + {0.32942326490713586, 0.582086232621627, 0.12880123631464863, 0.11763432898787879}, + {0.3304007820136852, 0.5838930177109748, 0.12891081859391934, 0.11788259123939165}, + {0.3313782991202346, 0.5857007616319855, 0.1290192407288645, 0.11813086137633183}, + {0.33235581622678395, 0.5875094630180838, 0.12912650019535413, 0.1183791394639302}, + {0.3333333333333333, 0.5893191205062877, 0.1292325944480741, 0.11862742556708483}, + {0.3343108504398827, 0.5911297327372038, 0.12933752092035283, 0.11887571975036293}, + {0.33528836754643204, 0.5929412983550224, 0.12944127702398942, 0.11912402207800246}, + {0.3362658846529814, 0.5947538160075116, 0.12954386014907884, 0.11937233261391497}, + {0.33724340175953077, 0.5965672843460137, 0.12964526766383228, 0.11962065142168704}, + {0.33822091886608013, 0.5983817020254366, 0.12974549691440002, 0.11986897856458209}, + {0.3391984359726295, 0.6001970677042512, 0.1298445452246866, 0.12011731410554305}, + {0.34017595307917886, 0.6020133800444831, 0.12994240989616643, 0.12036565810719363}, + {0.3411534701857282, 0.6038306377117081, 0.130039088207698, 0.12061401063184082}, + {0.3421309872922776, 0.6056488393750454, 0.13013457741533027, 0.12086237174147643}, + {0.34310850439882695, 0.6074679837071515, 0.13022887475211398, 0.12111074149777898}, + {0.34408602150537637, 0.6092880693842142, 0.13032197742790153, 0.1213591199621161}, + {0.34506353861192574, 0.6111090950859444, 0.13041388262915474, 0.12160750719554561}, + {0.3460410557184751, 0.6129310594955717, 0.1305045875187385, 0.1218559032588184}, + {0.34701857282502446, 0.6147539612998357, 0.13059408923572158, 0.12210430821237916}, + {0.3479960899315738, 0.6165777991889814, 0.13068238489516684, 0.12235272211636952}, + {0.3489736070381232, 0.6184025718567487, 0.1307694715879245, 0.12260114503062824}, + {0.34995112414467255, 0.6202282780003691, 0.13085534638041935, 0.12284957701469487}, + {0.3509286412512219, 0.6220549163205553, 0.13094000631443484, 0.12309801812780993}, + {0.3519061583577713, 0.6238824855214963, 0.13102344840689584, 0.12334646842891772}, + {0.35288367546432065, 0.625710984310849, 0.13110566964964793, 0.12359492797666785}, + {0.35386119257087, 0.6275404113997299, 0.1311866670092323, 0.12384339682941667}, + {0.3548387096774194, 0.6293707655027088, 0.13126643742665997, 0.12409187504522928}, + {0.35581622678396874, 0.6312020453378004, 0.13134497781717908, 0.1243403626818815}, + {0.3567937438905181, 0.6330342496264567, 0.1314222850700442, 0.12458885979686113}, + {0.35777126099706746, 0.6348673770935597, 0.13149835604827698, 0.12483736644737009}, + {0.3587487781036168, 0.6367014264674116, 0.13157318758842712, 0.12508588269032553}, + {0.3597262952101662, 0.6385363964797297, 0.1316467765003284, 0.1253344085823622}, + {0.36070381231671556, 0.6403722858656358, 0.13171911956685284, 0.12558294417983382}, + {0.3616813294232649, 0.6422090933636491, 0.13179021354365764, 0.12583148953881443}, + {0.3626588465298143, 0.644046817715678, 0.1318600551589338, 0.12608004471510062}, + {0.36363636363636365, 0.6458854576670116, 0.13192864111314734, 0.1263286097642127}, + {0.364613880742913, 0.6477250119663113, 0.13199596807877825, 0.12657718474139645}, + {0.3655913978494624, 0.6495654793656032, 0.13206203270005462, 0.12682576970162523}, + {0.36656891495601174, 0.6514068586202676, 0.1321268315926865, 0.12707436469960037}, + {0.3675464320625611, 0.6532491484890336, 0.13219036134358944, 0.1273229697897543}, + {0.36852394916911047, 0.6550923477339669, 0.13225261851061273, 0.12757158502625052}, + {0.36950146627565983, 0.6569364551204641, 0.13231359962225422, 0.12782021046298667}, + {0.3704789833822092, 0.6587814694172434, 0.13237330117737958, 0.12806884615359515}, + {0.37145650048875856, 0.6606273893963338, 0.13243171964493208, 0.12831749215144475}, + {0.3724340175953079, 0.6624742138330695, 0.13248885146364048, 0.12856614850964249}, + {0.3734115347018573, 0.6643219415060785, 0.13254469304172223, 0.1288148152810348}, + {0.37438905180840665, 0.6661705711972749, 0.13259924075658172, 0.12906349251820956}, + {0.375366568914956, 0.6680201016918508, 0.13265249095450485, 0.12931218027349697}, + {0.3763440860215054, 0.6698705317782649, 0.13270443995035058, 0.12956087859897125}, + {0.37732160312805474, 0.6717218602482365, 0.1327550840272347, 0.12980958754645247}, + {0.3782991202346041, 0.6735740858967338, 0.13280441943621143, 0.1300583071675072}, + {0.37927663734115347, 0.675427207521967, 0.13285244239594984, 0.13030703751345102}, + {0.38025415444770283, 0.6772812239253778, 0.13289914909240524, 0.13055577863534917}, + {0.3812316715542522, 0.6791361339116309, 0.13294453567848655, 0.13080453058401814}, + {0.38220918866080156, 0.6809919362886047, 0.1329885982737172, 0.13105329341002755}, + {0.3831867057673509, 0.6828486298673827, 0.13303133296389227, 0.1313020671637006}, + {0.3841642228739003, 0.6847062134622433, 0.13307273580073106, 0.13155085189511667}, + {0.38514173998044965, 0.6865646858906514, 0.13311280280152266, 0.1317996476541118}, + {0.386119257086999, 0.6884240459732492, 0.13315152994876725, 0.13204845449028044}, + {0.3870967741935484, 0.6902842925338462, 0.1331889131898141, 0.13229727245297676}, + {0.38807429130009774, 0.6921454243994102, 0.13322494843648888, 0.13254610159131594}, + {0.3890518084066471, 0.6940074404000591, 0.13325963156472245, 0.13279494195417565}, + {0.39002932551319647, 0.69587033936905, 0.13329295841416686, 0.13304379359019766}, + {0.39100684261974583, 0.6977341201427706, 0.13332492478781074, 0.13329265654778816}, + {0.3919843597262952, 0.6988548607633116, 0.1349272762962978, 0.13316456299992466}, + {0.39296187683284456, 0.6998299780538122, 0.1368222799794533, 0.13296109873469233}, + {0.3939393939393939, 0.7008050384839002, 0.13870155449492128, 0.13275591463387465}, + {0.3949169110459433, 0.7017800423251407, 0.14056565489148024, 0.13254899995765163}, + {0.39589442815249265, 0.7027549898481418, 0.1424151072985914, 0.13234034383990925}, + {0.396871945259042, 0.7037298813225598, 0.14425041094756352, 0.13212993528608036}, + {0.3978494623655914, 0.7047047170171032, 0.14607204001628088, 0.13191776317093631}, + {0.39882697947214074, 0.7056794971995384, 0.14788044531586764, 0.13170381623633196}, + {0.3998044965786901, 0.7066542221366919, 0.14967605583545712, 0.13148808308889806}, + {0.40078201368523947, 0.7076288920944568, 0.1514592801593096, 0.1312705521976848}, + {0.40175953079178883, 0.7086035073377958, 0.1532305077688783, 0.1310512118917498}, + {0.4027370478983382, 0.7095780681307462, 0.15499011024098092, 0.13083005035769477}, + {0.40371456500488756, 0.710552574736424, 0.15673844235197654, 0.13060705563714234}, + {0.4046920821114369, 0.7115270274170279, 0.15847584309676493, 0.1303822156241597}, + {0.4056695992179863, 0.7125014264338436, 0.16020263663045478, 0.13015551806261952}, + {0.40664711632453565, 0.7134757720472491, 0.16191913313972395, 0.12992695054350312}, + {0.40762463343108507, 0.7144500645167168, 0.16362562965014607, 0.1296965005021385}, + {0.40860215053763443, 0.7154243041008195, 0.1653224107751105, 0.12946415521537652}, + {0.4095796676441838, 0.7163984910572337, 0.16700974941139088, 0.12922990179869948}, + {0.41055718475073316, 0.7173726256427436, 0.16868790738591039, 0.12899372720326155}, + {0.4115347018572825, 0.7183467081132467, 0.17035713605780362, 0.1287556182128611}, + {0.4125122189638319, 0.7193207387237552, 0.1720176768794665, 0.12851556144083864}, + {0.41348973607038125, 0.7202947177284017, 0.17366976191994932, 0.12827354332690272}, + {0.4144672531769306, 0.7212686453804439, 0.17531361435370432, 0.12802955013387765}, + {0.41544477028348, 0.722242521932267, 0.1769494489174522, 0.12778356794437482}, + {0.41642228739002934, 0.7232163476353884, 0.17857747233764162, 0.12753558265738069}, + {0.4173998044965787, 0.7241901227404619, 0.18019788373077955, 0.12728557998476422}, + {0.41837732160312807, 0.7251638474972811, 0.18181087497868975, 0.12703354544769588}, + {0.41935483870967744, 0.7261375221547841, 0.18341663108058545, 0.1267794643729801}, + {0.4203323558162268, 0.7271111469610556, 0.18501533048366697, 0.12652332188929583}, + {0.42130987292277616, 0.7280847221633339, 0.18660714539382076, 0.12626510292334356}, + {0.4222873900293255, 0.7290582480080108, 0.18819224206784882, 0.12600479219589497}, + {0.4232649071358749, 0.7300317247406393, 0.18977078108855147, 0.12574237421774417}, + {0.42424242424242425, 0.7310051526059337, 0.19134291762386366, 0.12547783328555395}, + {0.4252199413489736, 0.7319785318477767, 0.19290880167115712, 0.12521115347759867}, + {0.426197458455523, 0.7329518627092211, 0.19446857828772332, 0.12494231864939528}, + {0.42717497556207235, 0.7339251454324939, 0.19602238780837966, 0.12467131242922291}, + {0.4281524926686217, 0.7348983802590006, 0.19757036605105738, 0.12439811821352609}, + {0.4291300097751711, 0.7358715674293284, 0.1991126445111669, 0.12412271916219611}, + {0.43010752688172044, 0.7368447071832493, 0.20064935054548166, 0.12384509819373096}, + {0.4310850439882698, 0.7378177997597252, 0.20218060754620926, 0.12356523798026497}, + {0.43206256109481916, 0.73879084539691, 0.20370653510588732, 0.12328312094246735}, + {0.43304007820136853, 0.7397638443321546, 0.20522724917367785, 0.12299872924430402}, + {0.4340175953079179, 0.7407367968020094, 0.20674286220360116, 0.12271204478765813}, + {0.43499511241446726, 0.7417097030422284, 0.20825348329520943, 0.12242304920680497}, + {0.4359726295210166, 0.7426825632877717, 0.2097592183271601, 0.12213172386273616}, + {0.436950146627566, 0.7436553777728115, 0.2112601700841199, 0.12183804983732899}, + {0.43792766373411535, 0.7446281467307325, 0.21275643837739983, 0.12154200792735323}, + {0.4389051808406647, 0.7456008703941377, 0.21424812015969458, 0.1212435786383137}, + {0.4398826979472141, 0.7465735489948506, 0.21573530963426762, 0.12094274217811846}, + {0.44086021505376344, 0.7475461827639197, 0.21721809835890943, 0.12063947845057132}, + {0.4418377321603128, 0.74851877193162, 0.2186965753449679, 0.12033376704867815}, + {0.44281524926686217, 0.7494913167274592, 0.22017082715172648, 0.12002558724776469}, + {0.44379276637341153, 0.7504638173801783, 0.221640937976404, 0.11971491799839479}, + {0.4447702834799609, 0.7514362741177573, 0.2231069897400061, 0.1194017379190874}, + {0.44574780058651026, 0.7524086871674164, 0.22456906216926975, 0.1190860252888187}, + {0.4467253176930596, 0.7533810567556214, 0.22602723287490573, 0.1187677580393087}, + {0.447702834799609, 0.7543533831080853, 0.22748157742634678, 0.11844691374707852}, + {0.44868035190615835, 0.7553256664497726, 0.22893216942318106, 0.11812346962527354}, + {0.4496578690127077, 0.756297907004902, 0.23037908056345918, 0.11779740251524293}, + {0.4506353861192571, 0.7572701049969499, 0.23182238070902422, 0.11746868887786699}, + {0.45161290322580644, 0.7582422606486541, 0.23326213794803174, 0.11713730478462148}, + {0.4525904203323558, 0.7592143741820162, 0.23469841865480456, 0.11680322590837167}, + {0.45356793743890517, 0.7601864458183051, 0.23613128754714935, 0.11646642751388347}, + {0.45454545454545453, 0.7611584757780601, 0.23756080774127813, 0.11612688444804334}, + {0.4555229716520039, 0.7621304642810943, 0.2389870408044394, 0.11578457112977336}, + {0.45650048875855326, 0.7631024115464979, 0.24041004680538952, 0.1154394615396325}, + {0.4574780058651026, 0.7640743177926409, 0.24182988436279795, 0.11509152920909005}, + {0.458455522971652, 0.7650461832371761, 0.24324661069169523, 0.11474074720945929}, + {0.45943304007820135, 0.7660180080970427, 0.2446602816480561, 0.1143870881404774}, + {0.4604105571847507, 0.7669897925884692, 0.24607095177160843, 0.1140305241185205}, + {0.4613880742913001, 0.7679615369269758, 0.24747867432695325, 0.11367102676443366}, + {0.46236559139784944, 0.768933241327379, 0.2488835013430732, 0.11330856719096821}, + {0.4633431085043988, 0.7699049060037924, 0.2502854836513096, 0.11294311598980297}, + {0.46432062561094817, 0.770876531169632, 0.2516846709218762, 0.11257464321813865}, + {0.46529814271749753, 0.771848117037618, 0.25308111169897973, 0.1122031183848434}, + {0.4662756598240469, 0.7728196638197775, 0.25447485343460613, 0.11182851043613498}, + {0.46725317693059626, 0.7737911717274483, 0.2558659425210427, 0.11145078774077771}, + {0.4682306940371456, 0.7747626409712807, 0.25725442432218204, 0.11106991807477407}, + {0.46920821114369504, 0.7757340717612415, 0.25864034320367174, 0.11068586860553264}, + {0.4701857282502444, 0.7767054643066172, 0.2600237425619529, 0.11029860587548596}, + {0.47116324535679377, 0.7776768188160156, 0.26140466485224706, 0.10990809578513855}, + {0.47214076246334313, 0.7786481354973692, 0.2627831516155244, 0.10951430357551817}, + {0.4731182795698925, 0.7796194145579385, 0.26415924350450987, 0.10911719381000531}, + {0.47409579667644186, 0.7805906562043146, 0.26553298030875905, 0.1087167303555159}, + {0.4750733137829912, 0.7815618606424211, 0.2669044009788535, 0.1083128763630033}, + {0.4760508308895406, 0.7825330280775191, 0.26827354364973754, 0.10790559424725599}, + {0.47702834799608995, 0.783504158714208, 0.2696404456632537, 0.10749484566595505}, + {0.4780058651026393, 0.7844752527564288, 0.2710051435898894, 0.10708059149795898}, + {0.4789833822091887, 0.785446310407467, 0.27236767324978517, 0.10666279182078284}, + {0.47996089931573804, 0.7864173318699565, 0.27372806973301905, 0.10624140588723138}, + {0.4809384164222874, 0.7873883173458791, 0.2750863674192131, 0.10581639210114954}, + {0.48191593352883677, 0.7883592670365717, 0.27644259999647297, 0.10538770799224947}, + {0.48289345063538613, 0.7893301811427247, 0.27779680047970184, 0.10495531018996815}, + {0.4838709677419355, 0.7903010598643883, 0.279149001228305, 0.1045191543963129}, + {0.48484848484848486, 0.7912719034009719, 0.2804992339633118, 0.10407919535764376}, + {0.4858260019550342, 0.7922427119512496, 0.2818475297839385, 0.10363538683534348}, + {0.4868035190615836, 0.7932134857133625, 0.28319391918361525, 0.10318768157531949}, + {0.48778103616813295, 0.7941842248848177, 0.2845384320654929, 0.10273603127628111}, + {0.4887585532746823, 0.7951549296624957, 0.2858810977574575, 0.10228038655673316}, + {0.4897360703812317, 0.7961256002426511, 0.2872219450266637, 0.10182069692061815}, + {0.49071358748778104, 0.7970962368209149, 0.28856100209361135, 0.10135691072154235}, + {0.4916911045943304, 0.7980668395922973, 0.2898982966457805, 0.10088897512551237}, + {0.49266862170087977, 0.7990374087511897, 0.2912338558508374, 0.10041683607210491}, + {0.49364613880742914, 0.8000079444913687, 0.2925677063694375, 0.09994043823399137}, + {0.4946236559139785, 0.8009784470059974, 0.2938998743676307, 0.09945972497472805}, + {0.49560117302052786, 0.801948916487628, 0.2952303855288859, 0.09897463830472136}, + {0.4965786901270772, 0.8029193531282053, 0.296559265065754, 0.09848511883527358}, + {0.4975562072336266, 0.8038897571190684, 0.2978865377311758, 0.09799110573059996}, + {0.49853372434017595, 0.8048601286509528, 0.2992122278294526, 0.09749253665771418}, + {0.4995112414467253, 0.8058304679139945, 0.3005363592268872, 0.0969893477340587}, + {0.5004887585532747, 0.80680077509773, 0.301858955362113, 0.09648147347275937}, + {0.501466275659824, 0.8077710503911012, 0.30318003925611536, 0.09596884672536837}, + {0.5024437927663734, 0.8087412939824561, 0.30449963352196185, 0.0954513986219562}, + {0.5034213098729228, 0.809711506059552, 0.30581776037424885, 0.0949290585083987}, + {0.5043988269794721, 0.8106816868095587, 0.3071344416382743, 0.09440175388069902}, + {0.5053763440860215, 0.8116518364190588, 0.30844969875894857, 0.0938694103161701}, + {0.5063538611925709, 0.8126219550740517, 0.3097635528094489, 0.09333195140129286}, + {0.5073313782991202, 0.813592042959956, 0.3110760244996284, 0.09278929865605376}, + {0.5083088954056696, 0.8145621002616107, 0.3123871341841876, 0.09224137145454572}, + {0.509286412512219, 0.8155321271632787, 0.3136969018706179, 0.0916880869416101}, + {0.5102639296187683, 0.8165021238486487, 0.31500534722692114, 0.09112935994527052}, + {0.5112414467253177, 0.8174720905008377, 0.3163124895891173, 0.09056510288470018}, + {0.512218963831867, 0.8184420273023926, 0.31761834796854227, 0.0899952256734389}, + {0.5131964809384164, 0.8194119344352939, 0.31892294105894814, 0.08941963561756022}, + {0.5141739980449658, 0.8203818120809561, 0.3202262872434099, 0.08883823730845913}, + {0.5151515151515151, 0.8213516604202321, 0.32152840460104043, 0.08825093250991306}, + {0.5161290322580645, 0.8223214796334137, 0.3228293109135298, 0.08765762003903635}, + {0.5171065493646139, 0.8232912699002346, 0.3241290236715066, 0.08705819564072007}, + {0.5180840664711632, 0.8242610313998731, 0.32542756008073015, 0.0864525518551193}, + {0.5190615835777126, 0.8252307643109533, 0.3267249370681169, 0.08584057787770899}, + {0.520039100684262, 0.826200468811548, 0.32802117128761216, 0.08522215941139522}, + {0.5210166177908113, 0.8271701450791805, 0.329316279125901, 0.084597178510124}, + {0.5219941348973607, 0.828139793290828, 0.33061027670797705, 0.0839655134133839}, + {0.52297165200391, 0.8291094136229213, 0.3319031799025618, 0.08332703837094499}, + {0.5239491691104594, 0.8300790062513504, 0.33319500432738713, 0.08268162345712607}, + {0.5249266862170088, 0.831048571351463, 0.3344857653543393, 0.08202913437381099}, + {0.5259042033235581, 0.8320181090980701, 0.3357754781144763, 0.08136943224137627}, + {0.5268817204301075, 0.8329876196654442, 0.33706415750291036, 0.0807023733766073}, + {0.5278592375366569, 0.8339571032273261, 0.33835181818357474, 0.08002780905660814}, + {0.5288367546432062, 0.8349265599569232, 0.3396384745938658, 0.07934558526760269}, + {0.5298142717497556, 0.8358959900269137, 0.3409241409491701, 0.07865554243743961}, + {0.530791788856305, 0.8368653936094478, 0.34220883124727963, 0.07795751515048585}, + {0.5317693059628543, 0.8378347708761502, 0.34349255927269806, 0.07725133184347652}, + {0.5327468230694037, 0.8388041219981209, 0.3447753386008376, 0.07653681448074406}, + {0.533724340175953, 0.8397734471459406, 0.346057182602118, 0.07581377820709917}, + {0.5347018572825024, 0.8407427464896683, 0.3473381044459613, 0.07508203097644972}, + {0.5356793743890518, 0.8417120201988468, 0.3486181171046928, 0.0743413731540683}, + {0.5366568914956011, 0.8426812684425031, 0.3498972333573458, 0.07359159709017782}, + {0.5376344086021505, 0.8436504913891515, 0.351175465793375, 0.07283248666230419}, + {0.5386119257086999, 0.8446196892067939, 0.3524528268162833, 0.07206381678355017}, + {0.5395894428152492, 0.8455888620629232, 0.3537293286471591, 0.07128535287364446}, + {0.5405669599217986, 0.8465580101245254, 0.35500498332813263, 0.07049685028927527}, + {0.541544477028348, 0.8475271335580811, 0.35627980272574966, 0.069698053709813}, + {0.5425219941348973, 0.8484962325295669, 0.3575537985342656, 0.06888869647408874}, + {0.5434995112414467, 0.8494653072044588, 0.35882698227886417, 0.06806849986338809}, + {0.544477028347996, 0.8504343577477324, 0.36009936531880016, 0.06723717232523901}, + {0.5454545454545454, 0.8514033843238665, 0.36137095885047044, 0.06639440863192428}, + {0.5464320625610948, 0.8523723870968446, 0.3626417739104128, 0.06553988896689467}, + {0.5474095796676441, 0.8533413662301554, 0.3639118213782378, 0.06467327793140085}, + {0.5483870967741935, 0.8543103218867967, 0.3651811119794939, 0.06379422346268854}, + {0.5493646138807429, 0.855279254229277, 0.366449656288466, 0.06290235565394994}, + {0.5503421309872922, 0.8562481634196151, 0.367717464730912, 0.061997285464938}, + {0.5513196480938416, 0.8572170496193464, 0.3689845475867374, 0.061078603310627345}, + {0.552297165200391, 0.858185912989519, 0.3702509149926112, 0.06014587751355408}, + {0.5532746823069403, 0.8591547536907013, 0.3715165769445217, 0.059198652603431774}, + {0.5542521994134897, 0.8601235718829802, 0.37278154330027713, 0.05823644744525271}, + {0.555229716520039, 0.8610923677259641, 0.37404582378194956, 0.057258753174298675}, + {0.5562072336265884, 0.8620611413787846, 0.37530942797826794, 0.05626503091321213}, + {0.5571847507331378, 0.863029893000099, 0.37657236534695526, 0.055254709242405796}, + {0.5581622678396871, 0.8639986227480908, 0.37783464521701854, 0.05422718139052805}, + {0.5591397849462365, 0.8649673307804722, 0.37909627679098495, 0.05318180210625823}, + {0.5601173020527859, 0.8659360172544868, 0.38035726914709334, 0.05211788416623634}, + {0.5610948191593352, 0.86690468232691, 0.3816176312414377, 0.05103469446616}, + {0.5620723362658846, 0.867873326154051, 0.3828773719100633, 0.049931449632748044}, + {0.563049853372434, 0.8688419488917561, 0.3841364998710202, 0.048807311082985354}, + {0.5640273704789834, 0.8698105506954081, 0.3853950237263721, 0.047661379443332756}, + {0.5650048875855328, 0.8707791317199294, 0.3866529519641623, 0.046492688224866595}, + {0.5659824046920822, 0.8717476921197845, 0.38791029296034, 0.04530019662973043}, + {0.5669599217986315, 0.8727162320489796, 0.3891670549806453, 0.044082781338921774}, + {0.5679374389051809, 0.8736847516610671, 0.390423246182454, 0.042839227099893344}, + {0.5689149560117303, 0.8746532511091446, 0.3916788746165855, 0.04156821589303306}, + {0.5698924731182796, 0.8756217305458586, 0.392933948229074, 0.04026548787471253}, + {0.570869990224829, 0.8765901901234051, 0.39418847486289926, 0.03892918430392298}, + {0.5718475073313783, 0.8775586299935312, 0.3954424622596887, 0.037587765359815214}, + {0.5728250244379277, 0.8785270503075383, 0.39669591806137733, 0.03624122326718056}, + {0.5738025415444771, 0.8794954512162821, 0.3979488498118392, 0.034889550250812355}, + {0.5747800586510264, 0.8804638328701759, 0.3992012649584836, 0.033532738535501316}, + {0.5757575757575758, 0.8814321954191894, 0.4004531708538192, 0.032170780346039964}, + {0.5767350928641252, 0.882400539012854, 0.40170457475698795, 0.03080366790721894}, + {0.5777126099706745, 0.8833688638002625, 0.40295548383526664, 0.029431393443832003}, + {0.5786901270772239, 0.8843371699300695, 0.40420590516554034, 0.028053949180669707}, + {0.5796676441837733, 0.8853054575504966, 0.4054558457357441, 0.02667132734252439}, + {0.5806451612903226, 0.886273726809331, 0.4067053124462795, 0.025283520154188208}, + {0.581622678396872, 0.8872419778539279, 0.4079543121113999, 0.023890519840452422}, + {0.5826001955034213, 0.8882102108312123, 0.40920285146057184, 0.022492318626109734}, + {0.5835777126099707, 0.8891784258876814, 0.41045093713980657, 0.02108890873595167}, + {0.5845552297165201, 0.8901466231694041, 0.4116985757129691, 0.019680282394769766}, + {0.5855327468230694, 0.8904197533705684, 0.41347944240853945, 0.02007674931895378}, + {0.5865102639296188, 0.8906542572412509, 0.4152854669855053, 0.020575349322876166}, + {0.5874877810361682, 0.8908876524775177, 0.41708778840606225, 0.021078553206009563}, + {0.5884652981427175, 0.891119937779212, 0.4188864595725875, 0.021586374620863793}, + {0.5894428152492669, 0.8913511118427283, 0.4206815323619508, 0.02209882721994932}, + {0.5904203323558163, 0.8915811733609962, 0.4224730576520612, 0.022615924655776415}, + {0.5913978494623656, 0.8918101210234596, 0.4242610853475566, 0.023137680580854733}, + {0.592375366568915, 0.8920379535160613, 0.42604566440465685, 0.02366410864769446}, + {0.5933528836754643, 0.8922646695212239, 0.42782684285522327, 0.024195222508805875}, + {0.5943304007820137, 0.8924902677178315, 0.4296046678300475, 0.024731035816699345}, + {0.5953079178885631, 0.8927147467812131, 0.4313791855814043, 0.025271562223884343}, + {0.5962854349951124, 0.8929381053831218, 0.4331504415048944, 0.025816815382870607}, + {0.5972629521016618, 0.893160342191719, 0.4349184801606039, 0.026366808946169665}, + {0.5982404692082112, 0.8933814558715545, 0.4366833452936087, 0.0269215565662901}, + {0.5992179863147605, 0.8936014450835482, 0.43844507985384357, 0.027481071895742816}, + {0.6001955034213099, 0.8938203084849731, 0.4402037260153633, 0.028045368587038266}, + {0.6011730205278593, 0.8940380447294339, 0.44195932519501974, 0.028614460292686283}, + {0.6021505376344086, 0.8942546524668508, 0.4437119180705698, 0.029188360665195978}, + {0.603128054740958, 0.8944701303434396, 0.44546154459824244, 0.029767083357078165}, + {0.6041055718475073, 0.8946844770016934, 0.4472082440297786, 0.030350642020842946}, + {0.6050830889540567, 0.8948976910803632, 0.4489520549289671, 0.030939050309000956}, + {0.6060606060606061, 0.8951097712144388, 0.45069301518769184, 0.031532321874061575}, + {0.6070381231671554, 0.8953207160351303, 0.45243116204150874, 0.032130470368535086}, + {0.6080156402737048, 0.8955305241698481, 0.4541665320847685, 0.0327335094449314}, + {0.6089931573802542, 0.8957391942421853, 0.455899161285303, 0.033341452755761426}, + {0.6099706744868035, 0.895946724871896, 0.4576290849986881, 0.03395431395353455}, + {0.6109481915933529, 0.8961531146748776, 0.45935633798209624, 0.03457210669076033}, + {0.6119257086999023, 0.8963583622631508, 0.4610809544077609, 0.035194844619949574}, + {0.6129032258064516, 0.8965624662448404, 0.46280296787605407, 0.03582254139361248}, + {0.613880742913001, 0.8967654252241544, 0.46452241142820166, 0.0364552106642587}, + {0.6148582600195504, 0.8969672378013662, 0.46623931755863973, 0.03709286608439948}, + {0.6158357771260997, 0.8971679025727924, 0.4679537182270302, 0.03773552130654351}, + {0.6168132942326491, 0.8973674181307747, 0.46966564486994494, 0.03838318998320141}, + {0.6177908113391984, 0.8975657830636595, 0.47137512841222756, 0.03903588576688346}, + {0.6187683284457478, 0.8977629959557768, 0.47308219927804657, 0.03969362231009895}, + {0.6197458455522972, 0.8979590553874215, 0.4747868874016488, 0.04035641326535897}, + {0.6207233626588465, 0.8981539599348316, 0.4764892222378217, 0.04101227965800799}, + {0.6217008797653959, 0.8983477081701692, 0.4781892327720763, 0.04166538999302213}, + {0.6226783968719453, 0.8985402986614984, 0.4798869475305582, 0.042317256209674185}, + {0.6236559139784946, 0.8987317299727668, 0.48158239458969493, 0.042967909620377366}, + {0.624633431085044, 0.8989220006637826, 0.4832756015855911, 0.043617380566900586}, + {0.6256109481915934, 0.8991111092901952, 0.4849665957231735, 0.044265698459685816}, + {0.6265884652981427, 0.8992990544034741, 0.48665540378510247, 0.044912891815197274}, + {0.6275659824046921, 0.8994858345508876, 0.4883420521404482, 0.04555898829140504}, + {0.6285434995112414, 0.8996714482754825, 0.49002656675314454, 0.04620401472152887}, + {0.6295210166177908, 0.8998558941160616, 0.4917089731902278, 0.046847997146133906}, + {0.6304985337243402, 0.9000391706071634, 0.4933892966298605, 0.04749096084367722}, + {0.6314760508308895, 0.9002212762790408, 0.4950675618691576, 0.048132930359597516}, + {0.6324535679374389, 0.900402209657639, 0.496743793331811, 0.04877392953402764}, + {0.6334310850439883, 0.9005819692645746, 0.49841801507552314, 0.04941398152820554}, + {0.6344086021505376, 0.9007605536171134, 0.5000902507992562, 0.05005310884966362}, + {0.635386119257087, 0.9009379612281484, 0.5017605238503007, 0.05069133337625515}, + {0.6363636363636364, 0.901114190606179, 0.503428857231168, 0.051328676379090464}, + {0.6373411534701857, 0.901289240255288, 0.5050952736063159, 0.0519651585444355}, + {0.6383186705767351, 0.9014631086751196, 0.5067597953087073, 0.05260079999462979}, + {0.6392961876832844, 0.9016357943608578, 0.5084224443462101, 0.05323562030808155}, + {0.6402737047898338, 0.9018072958032027, 0.5100832424078434, 0.053869638538378735}, + {0.6412512218963832, 0.9019776114883507, 0.5117422108698698, 0.05450287323257436}, + {0.6422287390029325, 0.9021467398979687, 0.513399370801747, 0.05513534244867676}, + {0.6432062561094819, 0.9023146795091732, 0.5150547429719318, 0.05576706377239627}, + {0.6441837732160313, 0.9024814287945089, 0.5167083478535495, 0.0563980543331792}, + {0.6451612903225806, 0.9026469862219221, 0.5183602056299298, 0.05702833081956742}, + {0.64613880742913, 0.9028113502547417, 0.5200103362000104, 0.05765790949391932}, + {0.6471163245356794, 0.9029745193516528, 0.5216587591836167, 0.05828680620652186}, + {0.6480938416422287, 0.9031364919666761, 0.5233054939266172, 0.05891503640912172}, + {0.6490713587487781, 0.9032972665491432, 0.5249505595059583, 0.0595426151679097}, + {0.6500488758553274, 0.9034568415436718, 0.5265939747345874, 0.06016955717597781}, + {0.6510263929618768, 0.9036152153901463, 0.5282357581662578, 0.06079587676528241}, + {0.6520039100684262, 0.9037723865236895, 0.529875928100228, 0.06142158791812836}, + {0.6529814271749755, 0.9039283533746412, 0.5315145025858526, 0.06204670427820231}, + {0.6539589442815249, 0.9040831143685343, 0.5331514994270684, 0.06267123916117875}, + {0.6549364613880743, 0.9042366679260689, 0.5347869361867824, 0.06329520556490803}, + {0.6559139784946236, 0.9043890124630914, 0.5364208301911584, 0.06391861617922046}, + {0.656891495601173, 0.9045401463905665, 0.5380531985338106, 0.06454148339534968}, + {0.6578690127077224, 0.9046900681145549, 0.5396840580799033, 0.06516381931500331}, + {0.6588465298142717, 0.9048387760361887, 0.5413134254701583, 0.06578563575909233}, + {0.6598240469208211, 0.9049862685516463, 0.5429413171247776, 0.0664069442761327}, + {0.6608015640273704, 0.9051325440521262, 0.5445677492472779, 0.0670277561503366}, + {0.6617790811339198, 0.9052776009238257, 0.5461927378282417, 0.06764808240941123}, + {0.6627565982404692, 0.9054214375479112, 0.5478162986489883, 0.06826793383206492}, + {0.6637341153470185, 0.9055640523004977, 0.5494384472851647, 0.06888732095524913}, + {0.6647116324535679, 0.9057054435526183, 0.5510591991102582, 0.06950625408113223}, + {0.6656891495601173, 0.9058456096702031, 0.5526785692990378, 0.07012474328383447}, + {0.6666666666666666, 0.9059845490140521, 0.5542965728309169, 0.07074279841591524}, + {0.667644183773216, 0.906122259939808, 0.55591322449325, 0.07136042911463536}, + {0.6686217008797654, 0.9062587407979334, 0.557528538884555, 0.0719776448080037}, + {0.6695992179863147, 0.9063939899336807, 0.559142530417671, 0.07259445472060758}, + {0.6705767350928641, 0.9065280056870691, 0.5607552133228505, 0.07321086787924821}, + {0.6715542521994134, 0.9066607863928581, 0.562366601650784, 0.07382689311838112}, + {0.6725317693059628, 0.9067923303805188, 0.563976709275564, 0.07444253908536952}, + {0.6735092864125122, 0.9069226359742093, 0.5655855498975889, 0.07505781424556418}, + {0.6744868035190615, 0.9070517014927479, 0.5671931370464034, 0.07567272688720986}, + {0.6754643206256109, 0.9071795252495849, 0.5687994840834858, 0.07628728512619093}, + {0.6764418377321603, 0.9073061055527762, 0.5704046042049734, 0.07690149691061687}, + {0.6774193548387096, 0.9074314407049573, 0.5720085104443371, 0.07751537002526032}, + {0.678396871945259, 0.9075555290033129, 0.5736112156749983, 0.07812891209584844}, + {0.6793743890518084, 0.9076783687395542, 0.5752127326128951, 0.07874213059321511}, + {0.6803519061583577, 0.9077999581998851, 0.5768130738189969, 0.0793550328373182}, + {0.6813294232649071, 0.9079202956649807, 0.5784122517017679, 0.07996762600113125}, + {0.6823069403714564, 0.9080393794099542, 0.5800102785195831, 0.08057991711440876}, + {0.6832844574780058, 0.9081572077043313, 0.5816071663830954, 0.0811919130673332}, + {0.6842619745845552, 0.9082737788120235, 0.5832029272575553, 0.08180362061404839}, + {0.6852394916911045, 0.9083890909912947, 0.5847975729650865, 0.08241504637607744}, + {0.6862170087976539, 0.9085031424947383, 0.586391115186917, 0.08302619684564427}, + {0.6871945259042033, 0.9086159315692441, 0.5879835654655665, 0.08363707838888304}, + {0.6881720430107527, 0.9087274564559716, 0.5895749352069896, 0.08424769724895478}, + {0.6891495601173021, 0.9088377153903204, 0.5911652356826798, 0.0848580595490662}, + {0.6901270772238515, 0.9089467066019008, 0.5927544780317331, 0.0854681712953993}, + {0.6911045943304008, 0.9090544283145054, 0.5943426732628704, 0.08607803837995201}, + {0.6920821114369502, 0.9091608787460773, 0.5959298322564228, 0.08668766658329241}, + {0.6930596285434996, 0.9092660561086832, 0.5975159657662774, 0.08729706157723235}, + {0.6940371456500489, 0.9093699586084802, 0.5991010844217881, 0.08790622892742192}, + {0.6950146627565983, 0.9094725844456891, 0.60068519872965, 0.0885151740958681}, + {0.6959921798631477, 0.9095739318145623, 0.6022683190757377, 0.08912390244337792}, + {0.696969696969697, 0.9096739989033528, 0.6038504557269093, 0.08973241923193281}, + {0.6979472140762464, 0.9097727838942855, 0.6054316188327781, 0.090340729626992}, + {0.6989247311827957, 0.9098702849635244, 0.6070118184274487, 0.09094883869973189}, + {0.6999022482893451, 0.9099665002811429, 0.6085910644312256, 0.09155675142922079}, + {0.7008797653958945, 0.9100614280110926, 0.6101693666522838, 0.09216447270453126}, + {0.7018572825024438, 0.9101550663111715, 0.6117467347883158, 0.09277200732679242}, + {0.7028347996089932, 0.9102474133329921, 0.6133231784281427, 0.09337936001118671}, + {0.7038123167155426, 0.9103384672219516, 0.6148987070532986, 0.09398653538888788}, + {0.7047898338220919, 0.9104282261171965, 0.6164733300395868, 0.09459353800894829}, + {0.7057673509286413, 0.9105166881515951, 0.6180470566586063, 0.09520037234013021}, + {0.7067448680351907, 0.9106038514517015, 0.6196198960792509, 0.09580704277269134}, + {0.70772238514174, 0.910689714137725, 0.621191857369184, 0.09641355362011814}, + {0.7086999022482894, 0.9107742743234961, 0.6227629494962813, 0.09701990912081201}, + {0.7096774193548387, 0.9108575301164354, 0.6243331813300556, 0.09762611343973215}, + {0.7106549364613881, 0.9109394796175194, 0.6259025616430486, 0.0982321706699929}, + {0.7116324535679375, 0.9110201209212475, 0.6274710991122041, 0.09883808483441814}, + {0.7126099706744868, 0.9110994521156083, 0.6290388023202134, 0.09944385988705434}, + {0.7135874877810362, 0.9111774712820466, 0.6306056797568376, 0.10004949971464244}, + {0.7145650048875856, 0.9112541764954288, 0.6321717398202091, 0.10065500813805539}, + {0.7155425219941349, 0.91132956582401, 0.6337369908181072, 0.10126038891369218}, + {0.7165200391006843, 0.9114036373293986, 0.6353014409692131, 0.10186564573483894}, + {0.7174975562072337, 0.9114763890665216, 0.636865098404344, 0.1024707822329943}, + {0.718475073313783, 0.9115478190835921, 0.6384279711676637, 0.10307580197915928}, + {0.7194525904203324, 0.9116179254220715, 0.6399900672178751, 0.10368070848509647}, + {0.7204301075268817, 0.9116867061166365, 0.6415513944293895, 0.10428550520455368}, + {0.7214076246334311, 0.9117541591951428, 0.6431119605934784, 0.10489019553445988}, + {0.7223851417399805, 0.9118202826785907, 0.6446717734194043, 0.10549478281608848}, + {0.7233626588465298, 0.9118850745810876, 0.6462308405355313, 0.10609927033619185}, + {0.7243401759530792, 0.9119485329098136, 0.647789169490421, 0.10670366132810885}, + {0.7253176930596286, 0.9120106556649838, 0.6493467677539052, 0.10730795897284279}, + {0.7262952101661779, 0.9120714408398146, 0.6509036427181427, 0.10791216640011386}, + {0.7272727272727273, 0.9121308864204845, 0.6524598016986599, 0.10851628668938487}, + {0.7282502443792767, 0.9121889903860962, 0.6540152519353706, 0.1091203228708611}, + {0.729227761485826, 0.9122457507086442, 0.6555700005935822, 0.10972427792646941}, + {0.7302052785923754, 0.9123011653529731, 0.6571240547649839, 0.11032815479080846}, + {0.7311827956989247, 0.9123552322767424, 0.6586774214686176, 0.11093195635207945}, + {0.7321603128054741, 0.9124079494303867, 0.6602301076518352, 0.11153568545299217}, + {0.7331378299120235, 0.9124593147570798, 0.6617821201912374, 0.1121393448916512}, + {0.7341153470185728, 0.9125093261926953, 0.6633334658935996, 0.11274293742242075}, + {0.7350928641251222, 0.9125579816657683, 0.6648841514967826, 0.1133464657567658}, + {0.7360703812316716, 0.9126052790974573, 0.6664341836706248, 0.11394993256407893}, + {0.7370478983382209, 0.9126512164015033, 0.6679835690178263, 0.114553340472483}, + {0.7380254154447703, 0.9126957914841924, 0.669532314074814, 0.11515669206961651}, + {0.7390029325513197, 0.9127390022443166, 0.6710804253125933, 0.11575998990340103}, + {0.739980449657869, 0.9127808465731322, 0.6726279091375879, 0.11636323648279012}, + {0.7409579667644184, 0.9128213223543203, 0.6741747718924664, 0.1169664342785029}, + {0.7419354838709677, 0.9128604274639496, 0.6757210198569522, 0.11756958572373641}, + {0.7429130009775171, 0.9128981597704304, 0.6772666592486264, 0.11817269321486668}, + {0.7438905180840665, 0.9129345171344784, 0.6788116962237107, 0.11877575911213026}, + {0.7448680351906158, 0.9129694974090719, 0.6803561368778459, 0.11937878574029206}, + {0.7458455522971652, 0.9130030984394103, 0.681899987246852, 0.11998177538929741}, + {0.7468230694037146, 0.9130353180628739, 0.6834432533074797, 0.12058473031490954}, + {0.7478005865102639, 0.9130661541089791, 0.6849859409781478, 0.12118765273933141}, + {0.7487781036168133, 0.9130956043993406, 0.6865280561196726, 0.12179054485181814}, + {0.7497556207233627, 0.9131236667476255, 0.6880696045359819, 0.12239340880926955}, + {0.750733137829912, 0.9131503389595118, 0.6896105919748222, 0.12299624673681425}, + {0.7517106549364614, 0.9131756188326462, 0.6911510241284499, 0.12359906072837912}, + {0.7526881720430108, 0.9131995041565995, 0.6926909066343178, 0.1242018528472465}, + {0.7536656891495601, 0.9132219927128246, 0.6942302450757458, 0.12480462512659951}, + {0.7546432062561095, 0.9132430822746114, 0.6957690449825853, 0.1254073795700539}, + {0.7556207233626588, 0.9132627706070431, 0.697307311831871, 0.1260101181521815}, + {0.7565982404692082, 0.9132810554669529, 0.6988450510484638, 0.1266128428190191}, + {0.7575757575757576, 0.9132979346028783, 0.700382268005684, 0.12721555548856947}, + {0.7585532746823069, 0.9133134057550153, 0.7019189680259356, 0.1278182580512879}, + {0.7595307917888563, 0.9133274666551756, 0.703455156381318, 0.12842095237056192}, + {0.7605083088954057, 0.9133401150267386, 0.7049908382942344, 0.12902364028317945}, + {0.761485826001955, 0.9133513485846081, 0.7065260189379856, 0.12962632359978693}, + {0.7624633431085044, 0.9133611650351626, 0.7080607034373567, 0.13022900410533741}, + {0.7634408602150538, 0.9133695620762123, 0.709594896869198, 0.13083168355952932}, + {0.7644183773216031, 0.913376537396951, 0.7111286042629918, 0.13143436369723846}, + {0.7653958944281525, 0.9133820886779083, 0.7126618306014162, 0.13203704622893717}, + {0.7663734115347018, 0.9133862135909031, 0.7141945808208968, 0.13263973284110814}, + {0.7673509286412512, 0.9133889097989965, 0.7157268598121523, 0.1332424251966464}, + {0.7683284457478006, 0.9133901749564404, 0.7172586724207319, 0.13384512493525624}, + {0.7693059628543499, 0.9133900067086351, 0.7187900234475443, 0.13444783367383895}, + {0.7702834799608993, 0.9133884026920742, 0.7203209176493784, 0.13505055300687166}, + {0.7712609970674487, 0.9133853605343004, 0.7218513597394195, 0.1356532845067784}, + {0.772238514173998, 0.9133808778538531, 0.7233813543877539, 0.1362560297242967}, + {0.7732160312805474, 0.9133749522602199, 0.7249109062218694, 0.13685879018883204}, + {0.7741935483870968, 0.9133675813537877, 0.7264400198271462, 0.1374615674088102}, + {0.7751710654936461, 0.9133587627257896, 0.7279686997473437, 0.13806436287201726}, + {0.7761485826001955, 0.9133484939582566, 0.7294969504850769, 0.13866717804593823}, + {0.7771260997067448, 0.9133367726239655, 0.73102477650229, 0.139270014378085}, + {0.7781036168132942, 0.913323596286387, 0.7325521822207182, 0.13987287329631823}, + {0.7790811339198436, 0.9133089624996358, 0.7340791720223483, 0.14047575620916652}, + {0.7800586510263929, 0.913292868808416, 0.7356057502498693, 0.14107866450613452}, + {0.7810361681329423, 0.9132753127479699, 0.737131921207118, 0.14168159955800744}, + {0.7820136852394917, 0.9132562918440267, 0.7386576891595172, 0.14228456271715068}, + {0.782991202346041, 0.913235803612745, 0.7401830583345095, 0.14288755531779943}, + {0.7839687194525904, 0.9132138455606629, 0.7417080329219846, 0.14349057867634854}, + {0.7849462365591398, 0.9131904151846445, 0.7432326170746982, 0.14409363409163245}, + {0.7859237536656891, 0.9131655099718208, 0.7447568149086902, 0.1446967228452006}, + {0.7869012707722385, 0.9131391273995412, 0.7462806305036904, 0.14529984620158995}, + {0.7878787878787878, 0.913111264935314, 0.7478040679035255, 0.14590300540858772}, + {0.7888563049853372, 0.9130819200367511, 0.7493271311165152, 0.1465062016974941}, + {0.7898338220918866, 0.9130510901515159, 0.7508498241158656, 0.14710943628337703}, + {0.7908113391984359, 0.9130187727172622, 0.7523721508400563, 0.1477127103653231}, + {0.7917888563049853, 0.9129849651615797, 0.7538941151932228, 0.14831602512668218}, + {0.7927663734115347, 0.9129496649019385, 0.7554157210455327, 0.14891938173531125}, + {0.793743890518084, 0.912912869345628, 0.7569369722335582, 0.14952278134380875}, + {0.7947214076246334, 0.9128745758897024, 0.7584578725606418, 0.15012622508974957}, + {0.7956989247311828, 0.9128347819209205, 0.7599784257972594, 0.15072971409591157}, + {0.7966764418377321, 0.9127934848156867, 0.7614986356813759, 0.15133324947049973}, + {0.7976539589442815, 0.9127506819399941, 0.7630185059187976, 0.15193683230736643}, + {0.7986314760508308, 0.9127063706493617, 0.7645380401835199, 0.1525404636862274}, + {0.7996089931573802, 0.9126605482887765, 0.7660572421180704, 0.15314414467287246}, + {0.8005865102639296, 0.9126132121926341, 0.7675761153338456, 0.15374787631937606}, + {0.8015640273704789, 0.9125643596846746, 0.7690946634114461, 0.15435165966429903}, + {0.8025415444770283, 0.9125139880779237, 0.7706128899010051, 0.15495549573289005}, + {0.8035190615835777, 0.9124620946746302, 0.7721307983225133, 0.1555593855372836}, + {0.804496578690127, 0.9124086767662046, 0.7736483921661406, 0.15616333007669175}, + {0.8054740957966764, 0.9123537316331545, 0.7751656748925503, 0.15676733033759507}, + {0.8064516129032258, 0.912297256545023, 0.7766826499332139, 0.15737138729392977}, + {0.8074291300097751, 0.9122392487603261, 0.7781993206907174, 0.15797550190726958}, + {0.8084066471163245, 0.9121797055264861, 0.7797156905390668, 0.15857967512700688}, + {0.8093841642228738, 0.9121186240797685, 0.7812317628239865, 0.15918390789052947}, + {0.8103616813294232, 0.9120560016452175, 0.7827475408632187, 0.15978820112339404}, + {0.8113391984359726, 0.9119918354365893, 0.7842630279468129, 0.16039255573949732}, + {0.8123167155425219, 0.9119261226562881, 0.7857782273374156, 0.16099697264124285}, + {0.8132942326490713, 0.9118588604952972, 0.7872931422705559, 0.1616014527197074}, + {0.8142717497556208, 0.9117900461331127, 0.7888077759549268, 0.1622059968548007}, + {0.8152492668621701, 0.9117196767376783, 0.7903221315726617, 0.16281060591542743}, + {0.8162267839687195, 0.9116477494653157, 0.7918362122796104, 0.16341528075964107}, + {0.8172043010752689, 0.9115742614606545, 0.7933500212056083, 0.1640200222347986}, + {0.8181818181818182, 0.9114992098565666, 0.794863561454745, 0.16462483117771318}, + {0.8191593352883676, 0.9114225917740951, 0.7963768361056266, 0.16522970841479942}, + {0.820136852394917, 0.9113444043223834, 0.7978898482116386, 0.1658346547622228}, + {0.8211143695014663, 0.9112646445986067, 0.7994026008011995, 0.16643967102603968}, + {0.8220918866080157, 0.9111833096878995, 0.8009150968780192, 0.16704475800234167}, + {0.823069403714565, 0.9111003966632847, 0.802427339421347, 0.16764991647739302}, + {0.8240469208211144, 0.9110159025856018, 0.8039393313862196, 0.1682551472277662}, + {0.8250244379276638, 0.9109298245034335, 0.805451075703707, 0.16886045102047714}, + {0.8260019550342131, 0.9108421594530329, 0.8069625752811529, 0.16946582861311713}, + {0.8269794721407625, 0.9107529044582494, 0.8084738330024133, 0.17007128075398095}, + {0.8279569892473119, 0.9106620565304555, 0.8099848517280929, 0.17067680818219677}, + {0.8289345063538612, 0.9105696126684707, 0.8114956342957769, 0.17128241162784982}, + {0.8299120234604106, 0.9104755698584864, 0.8130061835202619, 0.17188809181210601}, + {0.83088954056696, 0.9103799250739907, 0.8145165021937825, 0.1724938494473345}, + {0.8318670576735093, 0.9102826752756906, 0.8160265930862345, 0.1730996852372243}, + {0.8328445747800587, 0.9101838174114361, 0.8175364589453981, 0.1737055998769053}, + {0.833822091886608, 0.9100833484161398, 0.8190461024971554, 0.17431159405306007}, + {0.8347996089931574, 0.9099812652117035, 0.820555526445707, 0.17491766844404097}, + {0.8357771260997068, 0.9098775647069336, 0.8220647334737861, 0.17552382371997877}, + {0.8367546432062561, 0.9097722437974658, 0.8235737262428678, 0.17613006054289537}, + {0.8377321603128055, 0.909665299365682, 0.8250825073933791, 0.1767363795668094}, + {0.8387096774193549, 0.9095567282806313, 0.8265910795449044, 0.17734278143784407}, + {0.8396871945259042, 0.9094465273979482, 0.828099445296388, 0.17794926679433248}, + {0.8406647116324536, 0.9093346935597696, 0.8296076072263359, 0.17855583626692023}, + {0.841642228739003, 0.9092212235946533, 0.8311155678930141, 0.1791624904786654}, + {0.8426197458455523, 0.909106114317494, 0.8326233298346445, 0.17976923004514025}, + {0.8435972629521017, 0.908989362529439, 0.8341308955695993, 0.18037605557452946}, + {0.844574780058651, 0.9088709650178046, 0.8356382675965915, 0.18098296766772584}, + {0.8455522971652004, 0.9087509185559894, 0.8371454483948658, 0.1815899669184253}, + {0.8465298142717498, 0.9086292199033896, 0.8386524404243837, 0.18219705391322208}, + {0.8475073313782991, 0.9085058658053108, 0.8401592461260096, 0.1828042292316997}, + {0.8484848484848485, 0.908380852992882, 0.8416658679216932, 0.18341149344652244}, + {0.8494623655913979, 0.9082541781829672, 0.8431723082146496, 0.18401884712352498}, + {0.8504398826979472, 0.9081258380780763, 0.8446785693895378, 0.18462629082179854}, + {0.8514173998044966, 0.9079958293662748, 0.8461846538126374, 0.18523382509377992}, + {0.852394916911046, 0.9078641487210961, 0.8476905638320216, 0.18584145048533543}, + {0.8533724340175953, 0.9077307928014476, 0.8491963017777318, 0.1864491675358453}, + {0.8543499511241447, 0.9075957582515226, 0.8507018699619444, 0.1870569767782868}, + {0.855327468230694, 0.9074590417007039, 0.8522072706791425, 0.18766487873931528}, + {0.8563049853372434, 0.9073206397634723, 0.8537125062062798, 0.18827287393934414}, + {0.8572825024437928, 0.9071805490393152, 0.8552175788029454, 0.1888809628926237}, + {0.8582600195503421, 0.9070387661126287, 0.8567224907115271, 0.18948914610732015}, + {0.8592375366568915, 0.9068952875526223, 0.8582272441573715, 0.19009742408559094}, + {0.8602150537634409, 0.9067501099132264, 0.8597318413489426, 0.19070579732366186}, + {0.8611925708699902, 0.9066032297329897, 0.8612362844779788, 0.19131426631189852}, + {0.8621700879765396, 0.9064546435349876, 0.862740575719648, 0.19192283153488293}, + {0.863147605083089, 0.9063043478267186, 0.8642447172327019, 0.19253149347148324}, + {0.8641251221896383, 0.9061523391000076, 0.8657487111596259, 0.19314025259492643}, + {0.8651026392961877, 0.9059986138309061, 0.8672525596267906, 0.19374910937286713}, + {0.8660801564027371, 0.9058431684795888, 0.8687562647445991, 0.19435806426745716}, + {0.8670576735092864, 0.905685999490254, 0.8702598286076347, 0.19496711773541284}, + {0.8680351906158358, 0.9055271032910213, 0.871763253294804, 0.1955762702280831}, + {0.8690127077223851, 0.9053664762938255, 0.8732665408694819, 0.19618552219151503}, + {0.8699902248289345, 0.9052041148943155, 0.8747696933796526, 0.1967948740665189}, + {0.8709677419354839, 0.9050400154717475, 0.8762727128580491, 0.19740432628873072}, + {0.8719452590420332, 0.9048741743888774, 0.8777756013222935, 0.19801387928867803}, + {0.8729227761485826, 0.9047065879918583, 0.879278360775032, 0.19862353349184064}, + {0.873900293255132, 0.904537252610127, 0.8807809932040711, 0.1992332893187121}, + {0.8748778103616813, 0.9043661645563006, 0.8822835005825127, 0.19984314718485946}, + {0.8758553274682307, 0.9041933201260627, 0.8837858848688844, 0.20045310750098366}, + {0.8768328445747801, 0.9040187155980556, 0.8852881480072726, 0.2010631706729783}, + {0.8778103616813294, 0.9038423472337682, 0.8867902919274506, 0.20167333710198898}, + {0.8787878787878788, 0.9036642112774222, 0.8882923185450082, 0.20228360718446486}, + {0.8797653958944281, 0.903484303955861, 0.8897942297614772, 0.20289398131222236}, + {0.8807429130009775, 0.9033026214784331, 0.8912960274644568, 0.2035044598724951}, + {0.8817204301075269, 0.9031191600368782, 0.8927977135277386, 0.20411504324798968}, + {0.8826979472140762, 0.9029339158052115, 0.8942992898114289, 0.20472573181694192}, + {0.8836754643206256, 0.9027468849396045, 0.8958007581620694, 0.2053365259531671}, + {0.884652981427175, 0.9025580635782696, 0.8973021204127576, 0.20594742602611438}, + {0.8856304985337243, 0.9023674478413368, 0.8988033783832656, 0.20655843240091543}, + {0.8866080156402737, 0.9021750338307373, 0.9003045338801579, 0.2071695454384403}, + {0.8875855327468231, 0.9019808176300813, 0.9018055886969064, 0.20778076549534236}, + {0.8885630498533724, 0.9033772912115513, 0.9026795862955198, 0.2174561392031778}, + {0.8895405669599218, 0.9049442307818225, 0.9034829975984491, 0.22780012138392242}, + {0.8905180840664711, 0.9065002618141794, 0.904287075955984, 0.23781134811902688}, + {0.8914956011730205, 0.908045341004472, 0.9050918282548704, 0.24753017788380144}, + {0.8924731182795699, 0.9095794250137255, 0.9058972613461764, 0.2569900177167764}, + {0.8934506353861192, 0.9111024704604339, 0.9067033820454059, 0.2662188652089475}, + {0.8944281524926686, 0.9126144339129141, 0.9075101971326079, 0.2752404396436358}, + {0.895405669599218, 0.9141152718817073, 0.9083177133524896, 0.28407502817666996}, + {0.8963831867057673, 0.9156049408120345, 0.9091259374145227, 0.29274012984884507}, + {0.8973607038123167, 0.9170833970762965, 0.909934875993056, 0.30125095327755597}, + {0.8983382209188661, 0.9185505969666201, 0.9107445357274213, 0.30962080655283786}, + {0.8993157380254154, 0.9200064966874425, 0.9115549232220415, 0.3178614064498066}, + {0.9002932551319648, 0.921451052348134, 0.9123660450465357, 0.32598312638202614}, + {0.9012707722385142, 0.9228842199556575, 0.9131779077358287, 0.3339951972390281}, + {0.9022482893450635, 0.9243059554072584, 0.913990517790252, 0.3419058715575824}, + {0.9032258064516129, 0.9257162144831833, 0.9148038816756514, 0.3497225588509042}, + {0.9042033235581622, 0.9271149528394248, 0.9156180058234884, 0.357451938025992}, + {0.9051808406647116, 0.9285021260004906, 0.9164328966309451, 0.3651000514344062}, + {0.906158357771261, 0.9298776893521947, 0.9172485604610259, 0.3726723840764085}, + {0.9071358748778103, 0.9312415981344607, 0.9180650036426594, 0.3801739307104502}, + {0.9081133919843597, 0.9325938074341455, 0.9188822324707989, 0.38760925303871174}, + {0.9090909090909091, 0.9339342721778736, 0.9197002532065237, 0.39498252869502665}, + {0.9100684261974584, 0.9352629471248803, 0.920519072077139, 0.4022975934186901}, + {0.9110459433040078, 0.9365797868598603, 0.9213386952762742, 0.40955797753087586}, + {0.9120234604105572, 0.9378847457858236, 0.922159128963983, 0.4167669376211284}, + {0.9130009775171065, 0.9391777781169495, 0.9229803792668402, 0.4239274841859998}, + {0.9139784946236559, 0.9404588378714407, 0.9238024522780397, 0.4310424058302648}, + {0.9149560117302052, 0.9417278788643727, 0.9246253540574925, 0.4381142905356811}, + {0.9159335288367546, 0.942984854700536, 0.9254490906319206, 0.4451455444171957}, + {0.916911045943304, 0.9442297187672688, 0.9262736679949559, 0.4521384083175595}, + {0.9178885630498533, 0.9454624242272797, 0.9270990921072331, 0.4590949725350038}, + {0.9188660801564027, 0.9466829240114497, 0.9279253688964867, 0.46601718993255264}, + {0.9198435972629521, 0.9478911708116226, 0.9287525042576428, 0.4729068876394901}, + {0.9208211143695014, 0.9490871170733716, 0.9295805040529157, 0.4797657775240454}, + {0.9217986314760508, 0.9502707149887432, 0.9304093741118993, 0.48659546559015626}, + {0.9227761485826002, 0.9514419164889768, 0.9312391202316608, 0.4933974604293086}, + {0.9237536656891495, 0.9526006732371927, 0.9320697481768332, 0.5001731808400872}, + {0.9247311827956989, 0.9537469366210521, 0.9329012636797072, 0.5069239627126216}, + {0.9257086999022482, 0.9548806577453802, 0.9337336724403221, 0.5136510652620343}, + {0.9266862170087976, 0.9560017874247538, 0.9345669801265583, 0.5203556766839261}, + {0.927663734115347, 0.95711027617605, 0.9354011923742267, 0.5270389192954804}, + {0.9286412512218963, 0.9582060742109509, 0.9362363147871597, 0.5337018542177054}, + {0.9296187683284457, 0.9592891314284039, 0.937072352937301, 0.540345485647436}, + {0.9305962854349951, 0.9603593974070309, 0.9379093123647947, 0.5469707647617578}, + {0.9315738025415444, 0.9614168213974942, 0.9387471985780745, 0.5535785932924127}, + {0.9325513196480938, 0.962461352314799, 0.9395860170539537, 0.5601698268033073}, + {0.9335288367546432, 0.9634929387305459, 0.940425773237711, 0.5667452777004149}, + {0.9345063538611925, 0.9645115288651204, 0.9412664725431816, 0.5733057180000201}, + {0.9354838709677419, 0.9655170705798192, 0.9421081203528419, 0.5798518818783555}, + {0.9364613880742912, 0.9665095113689145, 0.9429507220178985, 0.5863844680231382}, + {0.9374389051808406, 0.9674887983516453, 0.9437942828583752, 0.592904141805291}, + {0.9384164222873901, 0.9684548782641375, 0.944638808163199, 0.5994115372871858}, + {0.9393939393939394, 0.969407697451251, 0.945484303190287, 0.6059072590820251}, + {0.9403714565004888, 0.9703472018583471, 0.9463307731666314, 0.6123918840774838}, + {0.9413489736070382, 0.9712733370229737, 0.9471782232883864, 0.6188659630353701}, + {0.9423264907135875, 0.972186048066466, 0.9480266587209539, 0.6253300220779157}, + {0.9433040078201369, 0.9730852796854631, 0.9488760845990666, 0.6317845640702291}, + {0.9442815249266863, 0.9739709761433256, 0.9497265060268753, 0.6382300699075454}, + {0.9452590420332356, 0.9748430812614634, 0.950577928078031, 0.6446669997150474}, + {0.946236559139785, 0.9757015384105655, 0.9514303557957716, 0.6510957939673268}, + {0.9472140762463344, 0.9765462905017254, 0.9522837941930046, 0.6575168745338685}, + {0.9481915933528837, 0.9773772799774624, 0.9531382482523917, 0.6639306456563742}, + {0.9491691104594331, 0.9781944488026327, 0.9539937229264305, 0.6703374948631965}, + {0.9501466275659824, 0.9789977384552292, 0.9548502231375401, 0.6767377938256987}, + {0.9511241446725318, 0.9797870899170634, 0.9557077537781434, 0.6831318991609119}, + {0.9521016617790812, 0.9805624436643253, 0.9565663197107496, 0.689520153184499}, + {0.9530791788856305, 0.981323739658024, 0.9574259257680363, 0.695902884617668}, + {0.9540566959921799, 0.9820709173342913, 0.9582865767529333, 0.7022804092513895}, + {0.9550342130987293, 0.9828039155945597, 0.9591482774387042, 0.7086530305709725}, + {0.9560117302052786, 0.9835226727956013, 0.960011032569028, 0.715021040343811}, + {0.956989247311828, 0.9842271267394237, 0.9608748468580813, 0.7213847191728778}, + {0.9579667644183774, 0.9849172146630224, 0.9617397249906198, 0.7277443370183361}, + {0.9589442815249267, 0.9855928732279825, 0.9626056716220605, 0.7341001536894446}, + {0.9599217986314761, 0.9862540385099247, 0.9634726913785606, 0.7404524193087695}, + {0.9608993157380255, 0.9869006459877924, 0.964340788857102, 0.7468013747505474}, + {0.9618768328445748, 0.9875326305329754, 0.9652099686255692, 0.7531472520549103}, + {0.9628543499511242, 0.9881499263982644, 0.9660802352228316, 0.7594902748195449}, + {0.9638318670576735, 0.9887524672066291, 0.9669515931588241, 0.7658306585702502}, + {0.9648093841642229, 0.9893401859398193, 0.9678240469146263, 0.7721686111117336}, + {0.9657869012707723, 0.9899130149267802, 0.9686976009425442, 0.7785043328599026}, + {0.9667644183773216, 0.9904708858318793, 0.9695722596661901, 0.7848380171568025}, + {0.967741935483871, 0.9910137296429339, 0.9704480274805615, 0.7911698505692775}, + {0.9687194525904204, 0.9915414766590426, 0.971324908752122, 0.7975000131723506}, + {0.9696969696969697, 0.992054056478204, 0.9722029078188806, 0.8038286788182502}, + {0.9706744868035191, 0.9925513979847277, 0.9730820289904719, 0.8101560153919407}, + {0.9716520039100685, 0.9930334293364217, 0.9739622765482349, 0.816482185053964}, + {0.9726295210166178, 0.993500077951556, 0.9748436547452918, 0.8228073444713305}, + {0.9736070381231672, 0.9939512704955947, 0.975726167806629, 0.8291316450371655}, + {0.9745845552297165, 0.9943869328676865, 0.9766098199291747, 0.8354552330797477}, + {0.9755620723362659, 0.994806990186916, 0.977494615281879, 0.8417782500615559}, + {0.9765395894428153, 0.9952113667782924, 0.9783805580057915, 0.8481008327688822}, + {0.9775171065493646, 0.9955999861584875, 0.9792676522141416, 0.854423113492543}, + {0.978494623655914, 0.9959727710213032, 0.9801559019924165, 0.8607452202001825}, + {0.9794721407624634, 0.99632964322286, 0.9810453113984391, 0.8670672767006277}, + {0.9804496578690127, 0.9966705237665102, 0.9819358844624487, 0.8733894028007327}, + {0.9814271749755621, 0.9969953327874531, 0.9828276251871771, 0.879711714455115}, + {0.9824046920821115, 0.9973039895370573, 0.9837205375479284, 0.8860343239091624}, + {0.9833822091886608, 0.9975964123668689, 0.9846146254926574, 0.892357339835674}, + {0.9843597262952102, 0.9978725187123066, 0.9855098929420464, 0.8986808674654612}, + {0.9853372434017595, 0.9981322250760306, 0.9864063437895848, 0.9050050087122314}, + {0.9863147605083089, 0.998375447010979, 0.9873039819016475, 0.9113298622920458}, + {0.9872922776148583, 0.9986020991030505, 0.988202811117571, 0.9176555238376285}, + {0.9882697947214076, 0.9988120949534435, 0.9891028352497341, 0.9239820860077923}, + {0.989247311827957, 0.9990053471606214, 0.9900040580836326, 0.9303096385922223}, + {0.9902248289345064, 0.999181767301908, 0.9909064833779601, 0.9366382686118553}, + {0.9912023460410557, 0.9993412659146944, 0.9918101148646844, 0.9429680604150663}, + {0.9921798631476051, 0.9994837524772445, 0.9927149562491254, 0.9492990957698743}, + {0.9931573802541545, 0.9996091353890976, 0.9936210112100329, 0.9556314539523575}, + {0.9941348973607038, 0.999717321951045, 0.9945282833996637, 0.9619652118314638}, + {0.9951124144672532, 0.9998082183446736, 0.9954367764438609, 0.9683004439503872}, + {0.9960899315738025, 0.9998817296114636, 0.9963464939421302, 0.9746372226046757}, + {0.9970674486803519, 0.9999377596314277, 0.997257439467716, 0.9809756179172241}, + {0.9980449657869013, 0.9999762111012723, 0.9981696165676829, 0.9873156979102987}, + {0.9990224828934506, 0.999996985512075, 0.9990830287629896, 0.9936575285747301}, + {1.0, 1.0, 1.0, 1.0} + }; + + inline static constexpr ColorEntry_t ParaView[COLOR_TABLE_SIZE] = + { + {0.0, 0.05639932216773367, 0.056399092153948, 0.4700000908789252}, + {0.0009775171065493646, 0.05846166649302168, 0.0592199701947625, 0.4718601206666147}, + {0.0019550342130987292, 0.060482446090093074, 0.06199973243851722, 0.4737211168547098}, + {0.002932551319648094, 0.06246421345957722, 0.0647418929424583, 0.47558307745774625}, + {0.0039100684261974585, 0.06440927282604264, 0.0674495599417127, 0.47744600050896174}, + {0.004887585532746823, 0.06631971211274859, 0.07012549660300946, 0.47930988405996083}, + {0.005865102639296188, 0.06819742984673122, 0.07277217069808489, 0.48117472618038987}, + {0.006842619745845552, 0.07004415793959345, 0.0753917955564399, 0.4830405249576158}, + {0.007820136852394917, 0.07186148108829632, 0.07798636408732912, 0.4849072784964151}, + {0.00879765395894428, 0.07365085338693922, 0.0805576772437965, 0.48677498491866883}, + {0.009775171065493646, 0.07541361262243818, 0.08310736799252971, 0.48864364236306274}, + {0.010752688172043012, 0.07715099263530201, 0.08563692162165726, 0.49051324898479537}, + {0.011730205278592375, 0.07886413405490558, 0.08814769304315265, 0.4923838029552929}, + {0.012707722385141739, 0.08055409366198771, 0.09064092161229256, 0.49425530246192867}, + {0.013685239491691105, 0.08222185258604758, 0.09311774388300792, 0.49612774570775015}, + {0.01466275659824047, 0.08386832350929821, 0.09557920463730424, 0.49800113091121084}, + {0.015640273704789834, 0.08549435701978444, 0.09802626646362345, 0.4998754563059086}, + {0.016617790811339198, 0.0871007472327793, 0.10045981810897431, 0.5017507201403292}, + {0.01759530791788856, 0.08868823678038326, 0.10288068178980342, 0.5036269206775953}, + {0.01857282502443793, 0.09025752125360925, 0.10528961961463856, 0.5055040561952214}, + {0.019550342130987292, 0.09180925316823327, 0.10768733924578153, 0.5073821249848727}, + {0.020527859237536656, 0.09334404551507705, 0.1100744989064209, 0.5092611253521309}, + {0.021505376344086023, 0.09486247494643793, 0.11245171182249389, 0.5111410556162636}, + {0.022482893450635387, 0.09636508464300564, 0.11481955017463968, 0.5130219141099982}, + {0.02346041055718475, 0.09785238689934367, 0.11717854862406404, 0.5149036991793023}, + {0.024437927663734114, 0.09932486546081404, 0.11952920746659085, 0.5167864091831674}, + {0.025415444770283478, 0.10078297764036054, 0.12187199546123681, 0.5186700424933964}, + {0.026392961876832845, 0.10222715623985412, 0.12420735237300937, 0.5205545974943983}, + {0.02737047898338221, 0.10365781129746146, 0.12653569126406647, 0.5224400725829833}, + {0.028347996089931573, 0.10507533167981689, 0.12885740056268408, 0.5243264661681661}, + {0.02932551319648094, 0.10648008653541155, 0.13117284593551937, 0.5262137766709698}, + {0.030303030303030304, 0.1078724266236136, 0.1334823719852908, 0.5281020025242363}, + {0.03128054740957967, 0.1092526855320052, 0.13578630379313708, 0.5299911421724398}, + {0.03225806451612903, 0.11062118079323027, 0.1380849483224675, 0.5318811940715031}, + {0.033235581622678395, 0.11197821491123372, 0.14037859569902636, 0.5337721566886192}, + {0.03421309872922776, 0.11332407630567282, 0.1426675203800862, 0.5356640285020761}, + {0.03519061583577712, 0.11465904018227316, 0.14495198222413871, 0.5375568080010836}, + {0.03616813294232649, 0.11598336933606335, 0.14723222747110568, 0.5394504936856072}, + {0.03714565004887586, 0.11729731489366457, 0.14950848964192925, 0.5413450840662005}, + {0.03812316715542522, 0.11860111700015655, 0.15178099036539427, 0.5432405776638459}, + {0.039100684261974585, 0.11989500545545376, 0.15404994013914702, 0.5451369730097939}, + {0.04007820136852395, 0.12117920030463078, 0.15631553903111495, 0.5470342686454099}, + {0.04105571847507331, 0.12245391238617145, 0.15857797732684806, 0.5489324631220202}, + {0.042033235581622676, 0.12371934384172237, 0.16083743612772283, 0.5508315550007644}, + {0.043010752688172046, 0.12497568859058575, 0.16309408790442026, 0.552731542852448}, + {0.04398826979472141, 0.12622313277185704, 0.16534809700963982, 0.5546324252573996}, + {0.044965786901270774, 0.12746185515684827, 0.16759962015360136, 0.5565342008053308}, + {0.04594330400782014, 0.12869202753418338, 0.16984880684553338, 0.5584368680951974}, + {0.0469208211143695, 0.12991381506972588, 0.17209579980402728, 0.560340425735065}, + {0.047898338220918865, 0.13112737664330754, 0.1743407353388554, 0.5622448723419771}, + {0.04887585532746823, 0.13233286516404466, 0.17658374370660387, 0.564150206541824}, + {0.04985337243401759, 0.1335304278658667, 0.17882494944224295, 0.566056426969217}, + {0.050830889540566956, 0.13472020658474712, 0.18106447166856326, 0.5679635322673617}, + {0.05180840664711633, 0.13590233801898605, 0.18330242438522562, 0.5698715210879377}, + {0.05278592375366569, 0.1370769539737827, 0.1855389167390134, 0.5717803920909764}, + {0.053763440860215055, 0.1382441815912368, 0.18777405327673496, 0.5736901439447453}, + {0.05474095796676442, 0.13940414356681208, 0.19000793418209114, 0.5756007753256299}, + {0.05571847507331378, 0.14055695835321427, 0.19224065549771416, 0.5775122849180235}, + {0.056695992179863146, 0.14170274035256433, 0.19447230933347123, 0.5794246714142135}, + {0.05767350928641251, 0.14284160009766333, 0.19670298406204234, 0.5813379335142732}, + {0.05865102639296188, 0.1439736444230934, 0.1989327645026871, 0.583252069925955}, + {0.059628543499511244, 0.14509897662683677, 0.20116173209404792, 0.5851670793645851}, + {0.06060606060606061, 0.1462176966230362, 0.20338996505675888, 0.5870829605529606}, + {0.06158357771260997, 0.14732990108648628, 0.205617538546575, 0.5889997122212488}, + {0.06256109481915934, 0.1484356835893834, 0.20784452479867044, 0.5909173331068868}, + {0.0635386119257087, 0.14953513473083183, 0.21007099326371237, 0.5928358219544855}, + {0.06451612903225806, 0.15062834225956712, 0.2122970107362595, 0.5947551775157331}, + {0.06549364613880743, 0.15171539119032224, 0.21452264147600109, 0.5966753985493025}, + {0.06647116324535679, 0.15279636391422322, 0.21674794732230374, 0.5985964838207574}, + {0.06744868035190615, 0.15387134030359179, 0.21897298780250496, 0.6005184321024634}, + {0.06842619745845552, 0.15494039781148541, 0.2211978202343563, 0.6024412421734991}, + {0.06940371456500488, 0.15600361156629278, 0.22342249982298656, 0.6043649128195687}, + {0.07038123167155425, 0.1570610544616775, 0.22564707975273535, 0.6062894428329164}, + {0.07135874877810362, 0.15811279724215152, 0.22787161127417266, 0.6082148310122427}, + {0.07233626588465299, 0.1591589085845168, 0.23009614378660526, 0.6101410761626223}, + {0.07331378299120235, 0.1601994551754296, 0.23232072491634487, 0.612068177095422}, + {0.07429130009775171, 0.16123450178529877, 0.23454540059099482, 0.6139961326282232}, + {0.07526881720430108, 0.1622641113387257, 0.2367702151099938, 0.6159249415847419}, + {0.07624633431085044, 0.16328834498168573, 0.2389952112116403, 0.6178546027947528}, + {0.0772238514173998, 0.16430726214562183, 0.241220430136802, 0.6197851150940143}, + {0.07820136852394917, 0.16532092060862916, 0.24344591168950652, 0.6217164773241945}, + {0.07917888563049853, 0.1663293765538833, 0.2456716942945908, 0.6236486883327982}, + {0.0801564027370479, 0.16733268462546017, 0.2478978150525783, 0.6255817469730954}, + {0.08113391984359726, 0.168330897981689, 0.2501243097919418, 0.6275156521040522}, + {0.08211143695014662, 0.16932406834616906, 0.25235121311889613, 0.6294504025902609}, + {0.08308895405669599, 0.17031224605657128, 0.25457855846486066, 0.6313859973018725}, + {0.08406647116324535, 0.17129548011133577, 0.2568063781317191, 0.6333224351145316}, + {0.08504398826979472, 0.17227381821438276, 0.2590347033349951, 0.6352597149093081}, + {0.08602150537634409, 0.17324730681793132, 0.2612635642450593, 0.637197835572637}, + {0.08699902248289346, 0.17421599116351727, 0.2634929900264722, 0.6391367959962515}, + {0.08797653958944282, 0.17517991532131644, 0.26572300887556066, 0.6410765950771236}, + {0.08895405669599218, 0.1761391222278356, 0.26795364805632377, 0.6430172317174022}, + {0.08993157380254155, 0.1770936537220725, 0.2701849339347532, 0.6449587048243534}, + {0.09090909090909091, 0.17804355058020302, 0.272416892011651, 0.646901013310301}, + {0.09188660801564028, 0.17898885254887853, 0.27464954695402294, 0.6488441560925705}, + {0.09286412512218964, 0.17992959837719052, 0.27688292262511865, 0.65078813209343}, + {0.093841642228739, 0.18086582584737632, 0.27911704211318733, 0.6527329402400358}, + {0.09481915933528837, 0.1817975718043138, 0.28135192775901424, 0.6546785794643764}, + {0.09579667644183773, 0.18272487218387148, 0.2835876011822985, 0.6566250487032198}, + {0.0967741935483871, 0.18364776204016361, 0.28582408330692705, 0.6585723468980588}, + {0.09775171065493646, 0.18456627557175628, 0.28806139438520373, 0.6605204729950604}, + {0.09872922776148582, 0.18548044614688167, 0.2902995540210782, 0.6624694259450129}, + {0.09970674486803519, 0.18639030632769568, 0.2925385811924288, 0.6644192047032765}, + {0.10068426197458455, 0.18729588789363102, 0.29477849427243946, 0.6663698082297329}, + {0.10166177908113391, 0.18819722186387688, 0.2970193110501179, 0.6683212354887373}, + {0.10263929618768329, 0.18909433851903382, 0.2992610487499928, 0.6702734854490693}, + {0.10361681329423265, 0.1899872674219693, 0.30150372405102915, 0.6722265570838861}, + {0.10459433040078202, 0.1908760374379209, 0.3037473531047989, 0.6741804493706764}, + {0.10557184750733138, 0.1917606767538664, 0.3059919515529403, 0.6761351612912142}, + {0.10654936461388075, 0.19264121289720376, 0.3082375345439385, 0.6780906918315138}, + {0.10752688172043011, 0.19351767275376566, 0.3104841167492585, 0.6800470399817861}, + {0.10850439882697947, 0.1943900825851927, 0.31273171237886, 0.6820042047363937}, + {0.10948191593352884, 0.1952584680457028, 0.314980335196121, 0.6839621850938099}, + {0.1104594330400782, 0.1961228541982678, 0.31722999853219735, 0.6859209800565751}, + {0.11143695014662756, 0.19698326553023693, 0.31948071529984295, 0.6878805886312562}, + {0.11241446725317693, 0.19783972596841742, 0.32173249800671244, 0.689841009828405}, + {0.11339198435972629, 0.19869225889364361, 0.32398535876817275, 0.6918022426625187}, + {0.11436950146627566, 0.19954088715484303, 0.32623930931964124, 0.6937642861519998}, + {0.11534701857282502, 0.2003856330826415, 0.3284943610284717, 0.6957271393191178}, + {0.11632453567937438, 0.20122651850249695, 0.3307505249054091, 0.6976908011899701}, + {0.11730205278592376, 0.20206356474740922, 0.33300781161562876, 0.6996552707944453}, + {0.11827956989247312, 0.20289679267019572, 0.3352662314893799, 0.7016205471661849}, + {0.11925708699902249, 0.2037262226553751, 0.3375257945322488, 0.7035866293425481}, + {0.12023460410557185, 0.20455187463065405, 0.3397865104350567, 0.7055535163645744}, + {0.12121212121212122, 0.20537376807804858, 0.3420483885834096, 0.7075212072769493}, + {0.12218963831867058, 0.2061919220446351, 0.3443114380669131, 0.709489701127969}, + {0.12316715542521994, 0.2070063551529675, 0.34657566768806436, 0.7114589969695059}, + {0.1241446725317693, 0.20781708561115386, 0.34884108597083857, 0.7134290938569751}, + {0.12512218963831867, 0.20862413122261875, 0.35110770116897594, 0.7153999908493006}, + {0.12609970674486803, 0.20942750939555377, 0.3533755212739887, 0.7173716870088838}, + {0.1270772238514174, 0.21022723715207092, 0.3556445540228923, 0.7193441814015694}, + {0.12805474095796676, 0.2110233311370766, 0.3579148069056755, 0.7213174730966145}, + {0.12903225806451613, 0.21181580762686186, 0.36018628717252055, 0.723291561166658}, + {0.1300097751710655, 0.2126046825374348, 0.3624590018407781, 0.7252664446876884}, + {0.13098729227761485, 0.21338997143259347, 0.3647329577017133, 0.7272421227390139}, + {0.13196480938416422, 0.21417168953175025, 0.3670081613270267, 0.7292185944032328}, + {0.13294232649071358, 0.21494985171752723, 0.36928461907515986, 0.7311958587662041}, + {0.13391984359726294, 0.2157244725431125, 0.37156233709739517, 0.7331739149170173}, + {0.1348973607038123, 0.21649556623940075, 0.37384132134375686, 0.7351527619479654}, + {0.13587487781036167, 0.21726314672191943, 0.3761215775687204, 0.737132398954515}, + {0.13685239491691104, 0.2180272275975485, 0.3784031113367371, 0.7391128250352796}, + {0.1378299120234604, 0.21878782217104148, 0.3806859280275835, 0.7410940392919927}, + {0.13880742913000976, 0.21954494345135556, 0.38297003284153697, 0.7430760408294792}, + {0.13978494623655913, 0.22029860415779284, 0.38525543080439, 0.7450588287556295}, + {0.1407624633431085, 0.22104881672596777, 0.38754212677230376, 0.7470424021813737}, + {0.14173998044965788, 0.22179559331359466, 0.38983012543651085, 0.7490267602206562}, + {0.14271749755620725, 0.22253894580611555, 0.39211943132786925, 0.7510119019904081}, + {0.1436950146627566, 0.22327888582215816, 0.39441004882127606, 0.7529978266105245}, + {0.14467253176930597, 0.22401542471884484, 0.3967019821399434, 0.7549845332038378}, + {0.14565004887585534, 0.2247485735969436, 0.39899523535954373, 0.7569720208960956}, + {0.1466275659824047, 0.22547834330587968, 0.4012898124122265, 0.7589602888159337}, + {0.14760508308895406, 0.22620474444859745, 0.4035857170905131, 0.7609493360948547}, + {0.14858260019550343, 0.2269277873862916, 0.4058829530510743, 0.7629391618672041}, + {0.1495601173020528, 0.22764748224300574, 0.40818152381839146, 0.7649297652701461}, + {0.15053763440860216, 0.22836383891009515, 0.41048143278830934, 0.7669211454436424}, + {0.15151515151515152, 0.22907686705057523, 0.41278268323148143, 0.7689133015304288}, + {0.15249266862170088, 0.2297865761033407, 0.41508527829671343, 0.7709062326759936}, + {0.15347018572825025, 0.23049297528727458, 0.4173892210142067, 0.7728999380285551}, + {0.1544477028347996, 0.23119607360524197, 0.419694514298706, 0.774894416739041}, + {0.15542521994134897, 0.23189587984797067, 0.4220011609525551, 0.7768896679610667}, + {0.15640273704789834, 0.23259240259783032, 0.42430916366866267, 0.7788856908509141}, + {0.1573802541544477, 0.2332856502325073, 0.4266185250333812, 0.7808824845675113}, + {0.15835777126099707, 0.23397563092857976, 0.42892924752930406, 0.7828800482724122}, + {0.15933528836754643, 0.23466235266499297, 0.43124133353797883, 0.7848783811297767}, + {0.1603128054740958, 0.23534582322644526, 0.4335547853425453, 0.78687748230635}, + {0.16129032258064516, 0.2360260502066791, 0.4358696051302966, 0.7888773509714441}, + {0.16226783968719452, 0.23670304101168738, 0.4381857949951676, 0.7908779862969174}, + {0.16324535679374388, 0.23737680286282914, 0.44050335694015186, 0.7928793874571567}, + {0.16422287390029325, 0.23804734279986522, 0.44282229287965136, 0.794881553629058}, + {0.1652003910068426, 0.23871466768391364, 0.44514260464175964, 0.7968844839920077}, + {0.16617790811339198, 0.23937878420032382, 0.44746429397048043, 0.7988881777278644}, + {0.16715542521994134, 0.24003969886147442, 0.44978736252788404, 0.800892634020941}, + {0.1681329423264907, 0.2406974180094995, 0.4521118118962048, 0.8028978520579868}, + {0.16911045943304007, 0.24135194781893987, 0.4544376435798804, 0.8049038310281702}, + {0.17008797653958943, 0.24200329429932904, 0.45676485900753355, 0.8069105701230611}, + {0.1710654936461388, 0.24265146329770276, 0.4590934595338994, 0.8089180685366129}, + {0.17204301075268819, 0.243533376338601, 0.46132807170770057, 0.8105141871252418}, + {0.17302052785923755, 0.24468688124397764, 0.46345237704459635, 0.811628879614694}, + {0.1739980449657869, 0.2458344188004064, 0.4655777361905879, 0.812743532499549}, + {0.17497556207233628, 0.24697605626676822, 0.46770415063968557, 0.8138581457125494}, + {0.17595307917888564, 0.24811185930798418, 0.46983162183286925, 0.8149727191879234}, + {0.176930596285435, 0.2492418920444181, 0.47196015115926265, 0.8160872528613691}, + {0.17790811339198437, 0.25036621709933327, 0.4740897399572756, 0.8172017466700389}, + {0.17888563049853373, 0.25148489564451687, 0.47622038951572315, 0.8183162005525281}, + {0.1798631476050831, 0.25259798744413264, 0.4783521010749134, 0.8194306144488569}, + {0.18084066471163246, 0.2537055508969059, 0.48048487582771243, 0.8205449883004599}, + {0.18181818181818182, 0.2548076430767044, 0.48261871492058134, 0.8216593220501692}, + {0.1827956989247312, 0.2559043197715936, 0.4847536194545908, 0.8227736156422032}, + {0.18377321603128055, 0.2569956355214323, 0.48688959048640884, 0.8238878690221505}, + {0.18475073313782991, 0.2580816436540778, 0.48902662902926747, 0.8250020821369581}, + {0.18572825024437928, 0.2591623963202583, 0.4911647360539056, 0.8261162549349178}, + {0.18670576735092864, 0.2602379445271771, 0.4933039124894894, 0.8272303873656518}, + {0.187683284457478, 0.2613083381708971, 0.49544415922451207, 0.8283444793801011}, + {0.18866080156402737, 0.2623736260675636, 0.49758547710767015, 0.8294585309305108}, + {0.18963831867057673, 0.26343385598351726, 0.499727866948724, 0.8305725419704193}, + {0.1906158357771261, 0.26448907466433486, 0.5018713295193324, 0.8316865124546424}, + {0.19159335288367546, 0.2655393278628584, 0.5040158655538738, 0.8328004423392655}, + {0.19257086999022482, 0.2665846603662415, 0.506161475750243, 0.8339143315816255}, + {0.1935483870967742, 0.267625116022063, 0.5083081607706341, 0.8350281801403023}, + {0.19452590420332355, 0.268660737763543, 0.5104559212423031, 0.8361419879751057}, + {0.19550342130987292, 0.2696915676338944, 0.5126047577583128, 0.8372557550470618}, + {0.19648093841642228, 0.2707176468098627, 0.5147546708782628, 0.8383694813184033}, + {0.19745845552297164, 0.2717390156244559, 0.516905661129, 0.839483166752555}, + {0.198435972629521, 0.2727557135889317, 0.5190577290053168, 0.8405968113141241}, + {0.19941348973607037, 0.27376777941404695, 0.5212108749706289, 0.8417104149688877}, + {0.20039100684261973, 0.27477525103061023, 0.5233650994576423, 0.8428239776837805}, + {0.2013685239491691, 0.2757781656093625, 0.5255204028690027, 0.843937499426885}, + {0.20234604105571846, 0.2767765595802111, 0.5276767855779307, 0.845050980167419}, + {0.20332355816226783, 0.2777704686508438, 0.5298342479288434, 0.8461644198757234}, + {0.20430107526881722, 0.27875992782474873, 0.5319927902379625, 0.8472778185232539}, + {0.20527859237536658, 0.2797449714186531, 0.5341524127939073, 0.8483911760825669}, + {0.20625610948191594, 0.28072563307942244, 0.5363131158582775, 0.8495044925273106}, + {0.2072336265884653, 0.2817019458004186, 0.5384748996662186, 0.8506177678322134}, + {0.20821114369501467, 0.2826739419373508, 0.5406377644269811, 0.8517310019730729}, + {0.20918866080156404, 0.2836416532236382, 0.5428017103244606, 0.8528441949267461}, + {0.2101661779081134, 0.284605110785294, 0.5449667375177322, 0.853957346671138}, + {0.21114369501466276, 0.2855643451553579, 0.5471328461415694, 0.8550704571851923}, + {0.21212121212121213, 0.2865193862878869, 0.5493000363069527, 0.8561835264488795}, + {0.2130987292277615, 0.2874702635715258, 0.5514683081015674, 0.8572965544431881}, + {0.21407624633431085, 0.2884170058426666, 0.5536376615902919, 0.8584095411501138}, + {0.21505376344086022, 0.28935964139821785, 0.5558080968156727, 0.8595224865526497}, + {0.21603128054740958, 0.29029819800799345, 0.5579796137983913, 0.8606353906347763}, + {0.21700879765395895, 0.2912327029267384, 0.5601522125377213, 0.8617482533814517}, + {0.2179863147605083, 0.2921631829057974, 0.5623258930119734, 0.8628610747786012}, + {0.21896383186705767, 0.2930896642044499, 0.5645006551789349, 0.8639738548131095}, + {0.21994134897360704, 0.2940121726009094, 0.5666764989762939, 0.865086593472808}, + {0.2209188660801564, 0.29493073340301285, 0.5688534243220622, 0.8661992907464695}, + {0.22189638318670576, 0.29584537145859796, 0.5710314311149826, 0.8673119466237945}, + {0.22287390029325513, 0.2967561111655895, 0.5732105192349304, 0.8684245610954056}, + {0.2238514173998045, 0.29766297648180323, 0.5753906885433071, 0.8695371341528356}, + {0.22482893450635386, 0.2985659909344609, 0.5775719388834242, 0.8706496657885194}, + {0.22580645161290322, 0.299465177629453, 0.5797542700808809, 0.8717621559957862}, + {0.22678396871945258, 0.300360559260337, 0.5819376819439308, 0.8728746047688478}, + {0.22776148582600195, 0.30125215811709066, 0.5841221742638453, 0.8739870121027923}, + {0.2287390029325513, 0.3021399960946176, 0.5863077468152658, 0.8750993779935741}, + {0.22971652003910067, 0.3030240947010289, 0.5884943993565497, 0.8762117024380054}, + {0.23069403714565004, 0.30390447506569085, 0.5906821316301102, 0.8773239854337478}, + {0.2316715542521994, 0.3047811579470629, 0.5928709433627486, 0.8784362269793035}, + {0.23264907135874877, 0.30565416374031723, 0.5950608342659784, 0.8795484270740064}, + {0.23362658846529813, 0.30652351248476195, 0.5972518040363456, 0.8806605857180154}, + {0.23460410557184752, 0.30738922387106005, 0.5994438523557387, 0.8817727029123044}, + {0.23558162267839688, 0.30825131724825827, 0.6016369788916965, 0.8828847786586542}, + {0.23655913978494625, 0.30910981163063395, 0.6038311832977065, 0.883996812959646}, + {0.2375366568914956, 0.309964725704362, 0.606026465213498, 0.8851088058186513}, + {0.23851417399804498, 0.31081607783400395, 0.608222824265331, 0.886220757239825}, + {0.23949169110459434, 0.3116638860688306, 0.6104202600662759, 0.8873326672280971}, + {0.2404692082111437, 0.3125081681489861, 0.6126187722164917, 0.888444535789166}, + {0.24144672531769307, 0.31334894151148524, 0.6148183603034938, 0.8895563629294888}, + {0.24242424242424243, 0.3141862232960635, 0.6170190239024217, 0.8906681486562747}, + {0.2434017595307918, 0.3150200303508779, 0.6192207625762972, 0.891779892977478}, + {0.24437927663734116, 0.31585037923805964, 0.6214235758762789, 0.8928915959017893}, + {0.24535679374389052, 0.31667728623913144, 0.6236274633419121, 0.8940032574386286}, + {0.24633431085043989, 0.3175007673602874, 0.6258324245013728, 0.8951148775981383}, + {0.24731182795698925, 0.31832083833753905, 0.6280384588717076, 0.8962264563911746}, + {0.2482893450635386, 0.3191375146417385, 0.6302455659590686, 0.8973379938293023}, + {0.24926686217008798, 0.3199508114834705, 0.6324537452589438, 0.8984494899247853}, + {0.25024437927663734, 0.320760743817833, 0.6346629962563816, 0.8995609446905811}, + {0.2512218963831867, 0.32156732634909196, 0.6368733184262136, 0.9006723581403332}, + {0.25219941348973607, 0.32237057353522763, 0.6390847112332703, 0.9017837302883636}, + {0.25317693059628543, 0.32317049959237126, 0.6412971741325943, 0.9028950611496669}, + {0.2541544477028348, 0.32396711849913035, 0.643510706569649, 0.9040063507399027}, + {0.25513196480938416, 0.3247604440008139, 0.645725307980522, 0.905117599075389}, + {0.2561094819159335, 0.32555048961355587, 0.6479409777921254, 0.9062288061730954}, + {0.2570869990224829, 0.3263372686283375, 0.6501577154223948, 0.9073399720506363}, + {0.25806451612903225, 0.32712079411491907, 0.6523755202804778, 0.9084510967262647}, + {0.2590420332355816, 0.3279010789256731, 0.6545943917669274, 0.9095621802188654}, + {0.260019550342131, 0.32867813569933146, 0.6568143292738832, 0.9106732225479482}, + {0.26099706744868034, 0.3294519768646446, 0.6590353321852559, 0.9117842237336418}, + {0.2619745845552297, 0.3302226146439534, 0.6612573998769041, 0.9128951837966879}, + {0.26295210166177907, 0.3309900610566778, 0.6634805317168102, 0.9140061027584335}, + {0.26392961876832843, 0.33175432792272824, 0.6657047270652501, 0.9151169806408264}, + {0.2649071358748778, 0.3325154268658324, 0.6679299852749627, 0.9162278174664072}, + {0.26588465298142716, 0.3332733693167935, 0.6701563056913143, 0.9173386132583049}, + {0.2668621700879765, 0.3340281665166675, 0.6723836876524607, 0.9184493680402295}, + {0.2678396871945259, 0.3347798295198707, 0.6746121304895049, 0.9195600818364663}, + {0.26881720430107525, 0.3355283691972155, 0.6768416335266535, 0.9206707546718705}, + {0.2697947214076246, 0.33627379623887976, 0.679072196081369, 0.9217813865718607}, + {0.270772238514174, 0.33701612115730745, 0.6813038174645203, 0.922891977562413}, + {0.27174975562072334, 0.3377553542900448, 0.6835364969805283, 0.9240025276700556}, + {0.2727272727272727, 0.3384915058025131, 0.6857702339275115, 0.9251130369218629}, + {0.27370478983382207, 0.3392245856907194, 0.6880050275974258, 0.9262235053454491}, + {0.27468230694037143, 0.3399546037839076, 0.6902408772762045, 0.9273339329689638}, + {0.2756598240469208, 0.3406815697471501, 0.6924777822438944, 0.9284443198210859}, + {0.27663734115347016, 0.34140549308388307, 0.6947157417747885, 0.9295546659310173}, + {0.2776148582600195, 0.34212638313839, 0.696954755137557, 0.9306649713284783}, + {0.2785923753665689, 0.3428442490982149, 0.6991948215953778, 0.931775236043702}, + {0.27956989247311825, 0.34355909999655143, 0.7014359404060594, 0.9328854601074281}, + {0.2805474095796676, 0.3442709447145487, 0.7036781108221687, 0.9339956435508998}, + {0.281524926686217, 0.34497979198359024, 0.7059213320911485, 0.9351057864058553}, + {0.2825024437927664, 0.34568565038751264, 0.70816560345544, 0.9362158887045251}, + {0.28347996089931576, 0.3463885283647771, 0.7104109241525971, 0.9373259504796252}, + {0.2844574780058651, 0.34708843421060087, 0.7126572934154041, 0.9384359717643536}, + {0.2854349951124145, 0.34778537607903415, 0.7149047104719857, 0.9395459525923832}, + {0.28641251221896386, 0.3484793619850008, 0.7171531745459189, 0.940655892997858}, + {0.2873900293255132, 0.3491703998062876, 0.7194026848563424, 0.9417657930153891}, + {0.2883675464320626, 0.3498584972854984, 0.7216532406180609, 0.9428756526800464}, + {0.28934506353861195, 0.35054366203196385, 0.723904841041652, 0.9439854720273574}, + {0.2903225806451613, 0.3512259015236106, 0.7261574853335667, 0.9450952510932998}, + {0.2913000977517107, 0.3519052231087906, 0.7284111726962325, 0.9462049899142985}, + {0.29227761485826004, 0.35258163400807424, 0.7306659023281502, 0.9473146885272187}, + {0.2932551319648094, 0.3532551413160053, 0.7329216734239921, 0.9484243469693628}, + {0.29423264907135877, 0.3539257520028161, 0.735178485174697, 0.9495339652784657}, + {0.29521016617790813, 0.35459347291611165, 0.7374363367675638, 0.9506435434926893}, + {0.2961876832844575, 0.3552583107825156, 0.7396952273863427, 0.9517530816506176}, + {0.29716520039100686, 0.35592027220928324, 0.7419551562113273, 0.9528625797912543}, + {0.2981427174975562, 0.3565793636858817, 0.7442161224194404, 0.9539720379540152}, + {0.2991202346041056, 0.3589870218942558, 0.7458649273975897, 0.9542176885109289}, + {0.30009775171065495, 0.36234028583288014, 0.7471743670369795, 0.9539838434976541}, + {0.3010752688172043, 0.3656634565347119, 0.7484845183792431, 0.9537495556627119}, + {0.3020527859237537, 0.36895741296216367, 0.749795379790021, 0.9535148240582271}, + {0.30303030303030304, 0.37222299432698913, 0.7511069496427738, 0.9532796477343511}, + {0.3040078201368524, 0.37546100252867914, 0.752419226318735, 0.953044025739254}, + {0.30498533724340177, 0.3786722044050737, 0.7537322082068626, 0.9528079571191143}, + {0.30596285434995113, 0.38185733381249626, 0.7550458937037917, 0.952571440918112}, + {0.3069403714565005, 0.385017093550884, 0.7563602812137883, 0.9523344761784202}, + {0.30791788856304986, 0.38815215714773516, 0.757675369148702, 0.9520970619401944}, + {0.3088954056695992, 0.39126317051329157, 0.7589911559279208, 0.9518591972415674}, + {0.3098729227761486, 0.3943507534780828, 0.7603076399783234, 0.9516208811186372}, + {0.31085043988269795, 0.39741550122285846, 0.7616248197342348, 0.9513821126054608}, + {0.3118279569892473, 0.40045798560993534, 0.7629426936373813, 0.9511428907340443}, + {0.3128054740957967, 0.40347875642411746, 0.7642612601368434, 0.9509032145343336}, + {0.31378299120234604, 0.406478342530541, 0.7655805176890136, 0.9506630830342074}, + {0.3147605083088954, 0.40945725295612767, 0.7669004647575504, 0.9504224952594665}, + {0.31573802541544477, 0.41241597790069023, 0.7682210998133335, 0.9501814502338256}, + {0.31671554252199413, 0.41535498968317724, 0.7695424213344224, 0.949939946978905}, + {0.3176930596285435, 0.41827474362805894, 0.7708644278060108, 0.9496979845142205}, + {0.31867057673509286, 0.4211756788963941, 0.7721871177203833, 0.9494555618571746}, + {0.3196480938416422, 0.42405821926572296, 0.7735104895768734, 0.9492126780230478}, + {0.3206256109481916, 0.42692277386257155, 0.7748345418818207, 0.9489693320249896}, + {0.32160312805474095, 0.4297697378510307, 0.776159273148528, 0.9487255228740087}, + {0.3225806451612903, 0.43259949308056317, 0.7774846818972193, 0.9484812495789637}, + {0.3235581622678397, 0.4354124086959494, 0.7788107666549979, 0.9482365111465546}, + {0.32453567937438904, 0.4382088417120229, 0.7801375259558053, 0.9479913065813131}, + {0.3255131964809384, 0.44098913755564734, 0.7814649583403803, 0.9477456348855927}, + {0.32649071358748777, 0.4437536305771659, 0.7827930623562158, 0.9474994950595602}, + {0.32746823069403713, 0.4465026445334062, 0.7841218365575212, 0.9472528861011854}, + {0.3284457478005865, 0.4492364930441281, 0.7854512795051798, 0.947005807006232}, + {0.32942326490713586, 0.4519554800236785, 0.7867813897667089, 0.9467582567682477}, + {0.3304007820136852, 0.45465990008947116, 0.7881121659162209, 0.9465102343785553}, + {0.3313782991202346, 0.45735003894878706, 0.7894436065343826, 0.9462617388262423}, + {0.33235581622678395, 0.46002617376527516, 0.7907757102083769, 0.9460127690981514}, + {0.3333333333333333, 0.4626885735064477, 0.7921084755318629, 0.9457633241788704}, + {0.3343108504398827, 0.4653374992733415, 0.7934419011049364, 0.945513403050723}, + {0.33528836754643204, 0.4679732046134509, 0.7947759855340938, 0.9452630046937592}, + {0.3362658846529814, 0.4705959358179615, 0.7961107274321908, 0.9450121280857436}, + {0.33724340175953077, 0.47320593220422286, 0.7974461254184065, 0.9447607722021477}, + {0.33822091886608013, 0.47580342638434553, 0.7987821781182053, 0.9445089360161385}, + {0.3391984359726295, 0.47838864452074487, 0.8001188841632976, 0.9442566184985677}, + {0.34017595307917886, 0.4809618065693942, 0.8014562421916053, 0.944003818617964}, + {0.3411534701857282, 0.4835231265114975, 0.8027942508472223, 0.9437505353405207}, + {0.3421309872922776, 0.4860728125742481, 0.80413290878038, 0.9434967676300865}, + {0.34310850439882695, 0.4886110674412902, 0.8054722146474081, 0.9432425144481545}, + {0.34408602150537637, 0.4911380884534606, 0.8068121671107008, 0.9429877747538529}, + {0.34506353861192574, 0.4936540678003594, 0.8081527648386793, 0.9427325475039332}, + {0.3460410557184751, 0.49615919270323844, 0.8094940065057563, 0.9424768316527613}, + {0.34701857282502446, 0.4986536455897029, 0.8108358907923011, 0.9422206261523056}, + {0.3479960899315738, 0.5011376042606447, 0.8121784163846032, 0.9419639299521274}, + {0.3489736070381232, 0.5036112420498422, 0.8135215819748376, 0.9417067419993692}, + {0.34995112414467255, 0.5060747279766047, 0.8148653862610311, 0.9414490612387452}, + {0.3509286412512219, 0.5085282268918292, 0.8162098279470258, 0.9411908866125305}, + {0.3519061583577713, 0.5109718996178141, 0.8175549057424459, 0.9409322170605491}, + {0.35288367546432065, 0.5134059030821437, 0.8189006183626637, 0.9406730515201639}, + {0.35386119257087, 0.5158303904459638, 0.8202469645287646, 0.9404133889262655}, + {0.3548387096774194, 0.5182455112269085, 0.8215939429675145, 0.9401532282112622}, + {0.35581622678396874, 0.520651411416965, 0.8229415524113258, 0.9398925683050674}, + {0.3567937438905181, 0.5230482335955203, 0.8242897915982244, 0.9396314081350895}, + {0.35777126099706746, 0.5254361170378292, 0.8256386592718166, 0.9393697466262209}, + {0.3587487781036168, 0.527815197819122, 0.8269881541812559, 0.9391075827008256}, + {0.3597262952101662, 0.5301856089145759, 0.8283382750812115, 0.9388449152787292}, + {0.36070381231671556, 0.532547480295332, 0.8296890207318348, 0.9385817432772072}, + {0.3616813294232649, 0.534900939020759, 0.8310403898987277, 0.9383180656109738}, + {0.3626588465298143, 0.5372461093271336, 0.8323923813529112, 0.9380538811921694}, + {0.36363636363636365, 0.5395831127129094, 0.8337449938707925, 0.9377891889303501}, + {0.364613880742913, 0.5419120680207316, 0.8350982262341348, 0.9375239877324765}, + {0.3655913978494624, 0.5442330915163444, 0.8364520772300249, 0.9372582765029005}, + {0.36656891495601174, 0.5465462969645366, 0.8378065456508433, 0.9369920541433553}, + {0.3675464320625611, 0.54885179570226, 0.8391616302942326, 0.9367253195529428}, + {0.36852394916911047, 0.5511496967090412, 0.8405173299630664, 0.9364580716281209}, + {0.36950146627565983, 0.5534401066748205, 0.8418736434654193, 0.9361903092626933}, + {0.3704789833822092, 0.5557231300653116, 0.8432305696145377, 0.9359220313477973}, + {0.37145650048875856, 0.5579988691850154, 0.8445881072288081, 0.9356532367718905}, + {0.3724340175953079, 0.5602674242379663, 0.8459462551317282, 0.9353839244207395}, + {0.3734115347018573, 0.5625288933863283, 0.8473050121518765, 0.9351140931774077}, + {0.37438905180840665, 0.5647833728069203, 0.8486643771228841, 0.9348437419222435}, + {0.375366568914956, 0.5670309567457624, 0.850024348883404, 0.9345728695328673}, + {0.3763440860215054, 0.5692717375707329, 0.8513849262770833, 0.9343014748841596}, + {0.37732160312805474, 0.5715058058224041, 0.8527461081525335, 0.9340295568482483}, + {0.3782991202346041, 0.5737332502631397, 0.8541078933633022, 0.9337571142944965}, + {0.37927663734115347, 0.5759541579245283, 0.8554702807678444, 0.9334841460894894}, + {0.38025415444770283, 0.5781686141532119, 0.8568332692294945, 0.9332106510970223}, + {0.3812316715542522, 0.5803767026551835, 0.8581968576164377, 0.9329366281780879}, + {0.38220918866080156, 0.5825785055386102, 0.8595610448016832, 0.9326620761908629}, + {0.3831867057673509, 0.5847741033552464, 0.8609258296630345, 0.9323869939906955}, + {0.3841642228739003, 0.586963575140485, 0.8622912110830647, 0.932111380430093}, + {0.38514173998044965, 0.5891469984521084, 0.8636571879490857, 0.9318352343587079}, + {0.386119257086999, 0.5913244494077886, 0.8650237591531238, 0.9315585546233252}, + {0.3870967741935484, 0.5934960027213793, 0.8663909235918918, 0.9312813400678497}, + {0.38807429130009774, 0.5956617317380568, 0.867758680166762, 0.9310035895332924}, + {0.3890518084066471, 0.5978217084683448, 0.8691270277837395, 0.9307253018577576}, + {0.39002932551319647, 0.5999760036210701, 0.8704959653534357, 0.9304464758764283}, + {0.39100684261974583, 0.6021246866352934, 0.8718654917910424, 0.9301671104215545}, + {0.3919843597262952, 0.6042678257112414, 0.8732356060163061, 0.9298872043224389}, + {0.39296187683284456, 0.606405487840296, 0.8746063069535001, 0.9296067564054226}, + {0.3939393939393939, 0.6085377388340548, 0.8759775935314019, 0.9293257654938737}, + {0.3949169110459433, 0.6106646433525184, 0.8773494646832639, 0.9290442304081705}, + {0.39589442815249265, 0.61278626493142, 0.878721919346791, 0.92876214996569}, + {0.396871945259042, 0.6149026660087337, 0.8800949564641142, 0.9284795229807934}, + {0.3978494623655914, 0.6170139079503998, 0.8814685749817651, 0.9281963482648117}, + {0.39882697947214074, 0.6191200510752772, 0.8828427738506515, 0.9279126246260325}, + {0.3998044965786901, 0.6212211546793697, 0.8842175520260327, 0.9276283508696851}, + {0.40078201368523947, 0.6233172770593404, 0.8855929084674944, 0.9273435257979262}, + {0.40175953079178883, 0.6254084755353424, 0.8869688421389242, 0.9270581482098265}, + {0.4027370478983382, 0.6274948064731903, 0.8883453520084891, 0.9267722169013559}, + {0.40371456500488756, 0.6295763253058942, 0.8897224370486086, 0.9264857306653685}, + {0.4046920821114369, 0.6316530865545794, 0.8911000962359333, 0.9261986882915897}, + {0.4056695992179863, 0.6337251438488153, 0.8924783285513184, 0.9259110885665992}, + {0.40664711632453565, 0.635792549946366, 0.8938571329798027, 0.9256229302738183}, + {0.40762463343108507, 0.6378553567523944, 0.8952365085105841, 0.9253342121934945}, + {0.40860215053763443, 0.6399136153381234, 0.8966164541369955, 0.9250449331026865}, + {0.4095796676441838, 0.6419673759589877, 0.8979969688564824, 0.924755091775249}, + {0.41055718475073316, 0.6440166880722814, 0.8993780516705802, 0.9244646869818187}, + {0.4115347018572825, 0.646061600354324, 0.9007597015848906, 0.9241737174897979}, + {0.4125122189638319, 0.6481021607171616, 0.9021419176090593, 0.9238821820633404}, + {0.41348973607038125, 0.6501384163248126, 0.9035246987567525, 0.9235900794633352}, + {0.4144672531769306, 0.6521704136090787, 0.9049080440456367, 0.9232974084473922}, + {0.41544477028348, 0.6541981982849336, 0.9062919524973534, 0.9230041677698261}, + {0.41642228739002934, 0.6562218153655038, 0.9076764231374996, 0.9227103561816405}, + {0.4173998044965787, 0.6582413091766492, 0.9090614549956046, 0.9224159724305134}, + {0.41837732160312807, 0.6602567233711649, 0.910447047105108, 0.9221210152607803}, + {0.41935483870967744, 0.6622681009426095, 0.9118331985033379, 0.9218254834134191}, + {0.4203323558162268, 0.6642754842387757, 0.9132199082314904, 0.9215293756260339}, + {0.42130987292277616, 0.666278914974811, 0.9146071753346071, 0.921232690632839}, + {0.4222873900293255, 0.6682784342460031, 0.9159949988615546, 0.9209354271646428}, + {0.4232649071358749, 0.670274082540237, 0.9173833778650026, 0.9206375839488319}, + {0.42424242424242425, 0.6722658997501364, 0.9187723114014033, 0.9203391597093542}, + {0.4252199413489736, 0.6742539251848984, 0.9201617985309704, 0.9200401531667028}, + {0.426197458455523, 0.6762381975818289, 0.9215518383176586, 0.9197405630379007}, + {0.42717497556207235, 0.6782187551175927, 0.9229424298291432, 0.9194403880364816}, + {0.4281524926686217, 0.6801956354191794, 0.9243335721367983, 0.9191396268724756}, + {0.4291300097751711, 0.6821688755746037, 0.9257252643156785, 0.9188382782523917}, + {0.43010752688172044, 0.6841385121433361, 0.9271175054444971, 0.9185363408792008}, + {0.4310850439882698, 0.6861045811664833, 0.9285102946056065, 0.9182338134523181}, + {0.43206256109481916, 0.6880671181767177, 0.9299036308849786, 0.9179306946675871}, + {0.43304007820136853, 0.6916017650106863, 0.9301944515408, 0.9159277855596277}, + {0.4340175953079179, 0.6952268191912708, 0.9304052152487212, 0.9138010154002965}, + {0.43499511241446726, 0.698827600866187, 0.9306160011730714, 0.9116737661734853}, + {0.4359726295210166, 0.7024045571352752, 0.9308268085388031, 0.9095460301251316}, + {0.436950146627566, 0.7059581221323228, 0.9310376365717908, 0.9074177994196169}, + {0.43792766373411535, 0.7094887175428994, 0.9312484844988327, 0.9052890661387095}, + {0.4389051808406647, 0.7129967530960172, 0.9314593515476469, 0.9031598222804843}, + {0.4398826979472141, 0.7164826270312021, 0.9316702369468726, 0.9010300597582327}, + {0.44086021505376344, 0.7199467265424633, 0.9318811399260684, 0.8988997703993475}, + {0.4418377321603128, 0.7233894282005356, 0.9320920597157103, 0.8967689459441955}, + {0.44281524926686217, 0.7268110983546795, 0.9323029955471924, 0.8946375780449668}, + {0.44379276637341153, 0.7302120935152264, 0.9325139466528248, 0.89250565826451}, + {0.4447702834799609, 0.7335927607179922, 0.9327249122658334, 0.8903731780751445}, + {0.44574780058651026, 0.7369534378715814, 0.9329358916203576, 0.8882401288574544}, + {0.4467253176930596, 0.7402944540885658, 0.9331468839514508, 0.8861065018990635}, + {0.447702834799609, 0.7436161300014272, 0.9333578884950786, 0.8839722883933891}, + {0.44868035190615835, 0.7469187780641225, 0.9335689044881176, 0.8818374794383741}, + {0.4496578690127077, 0.7502027028400469, 0.9337799311683543, 0.8797020660352002}, + {0.4506353861192571, 0.7534682012771494, 0.9339909677744852, 0.8775660390869764}, + {0.45161290322580644, 0.7567155629708813, 0.9342020135461144, 0.87542938939741}, + {0.4525904203323558, 0.7599450704156337, 0.9344130677237531, 0.8732921076694485}, + {0.45356793743890517, 0.763156999245269, 0.9346241295488183, 0.8711541845039067}, + {0.45454545454545453, 0.7663516184633179, 0.9348351982636326, 0.8690156103980617}, + {0.4555229716520039, 0.769529190663382, 0.9350462731114215, 0.8668763757442327}, + {0.45650048875855326, 0.7726899722402347, 0.9352573533363138, 0.864736470828328}, + {0.4574780058651026, 0.7758342135921105, 0.9354684381833399, 0.8625958858283747}, + {0.458455522971652, 0.7789621593146072, 0.9356795268984305, 0.8604546108130162}, + {0.45943304007820135, 0.7820740483866405, 0.9358906187284163, 0.8583126357399902}, + {0.4604105571847507, 0.7851701143488309, 0.9361017129210256, 0.8561699504545738}, + {0.4613880742913001, 0.788250585474699, 0.9363128087248844, 0.8540265446880079}, + {0.46236559139784944, 0.7913156849350207, 0.9365239053895151, 0.851882408055888}, + {0.4633431085043988, 0.7943656309556723, 0.936735002165334, 0.8497375300565314}, + {0.46432062561094817, 0.7974006369692737, 0.9369460983036523, 0.8475919000693134}, + {0.46529814271749753, 0.8004209117609296, 0.9371571930566733, 0.8454455073529741}, + {0.4662756598240469, 0.8034266596083421, 0.9373682856774922, 0.8432983410438959}, + {0.46725317693059626, 0.8064180804165553, 0.937579375420094, 0.8411503901543496}, + {0.4682306940371456, 0.809395369847591, 0.9377904615393532, 0.8390016435707099}, + {0.46920821114369504, 0.8123587194451941, 0.9380015432910327, 0.8368520900516384}, + {0.4701857282502444, 0.8153083167549255, 0.938212619931782, 0.834701718226234}, + {0.47116324535679377, 0.8182443454398011, 0.9384236907191358, 0.8325505165921482}, + {0.47214076246334313, 0.8211669853916834, 0.9386347549115144, 0.8303984735136708}, + {0.4731182795698925, 0.8240764128386124, 0.93884581176822, 0.8282455772197744}, + {0.47409579667644186, 0.8269728004482514, 0.9390568605494382, 0.8260918158021294}, + {0.4750733137829912, 0.8298563174276244, 0.9392679005162349, 0.8239371772130768}, + {0.4760508308895406, 0.8327271296192997, 0.9394789309305553, 0.8217816492635683}, + {0.47702834799608995, 0.8355853995941774, 0.9396899510552241, 0.8196252196210658}, + {0.4780058651026393, 0.8384312867410193, 0.9399009601539423, 0.8174678758074024}, + {0.4789833822091887, 0.841264947352871, 0.9401119574912875, 0.8153096051966037}, + {0.47996089931573804, 0.8440865347104917, 0.9403229423327116, 0.813150395012668}, + {0.4809384164222874, 0.8468961991629314, 0.9405339139445409, 0.8109902323273063}, + {0.48191593352883677, 0.8496940882053639, 0.9407448715939727, 0.8088291040576358}, + {0.48289345063538613, 0.8524803465542903, 0.9409558145490767, 0.806666996963835}, + {0.4838709677419355, 0.8552551162202264, 0.9411667420787914, 0.8045038976467505}, + {0.48484848484848486, 0.8580185365779671, 0.9413776534529243, 0.8023397925454582}, + {0.4858260019550342, 0.8607707444345314, 0.941588547942151, 0.8001746679347814}, + {0.4868035190615836, 0.8635118740948802, 0.9417994248180108, 0.798008509922755}, + {0.48778103616813295, 0.8662420574254907, 0.9420102833529105, 0.7958413044480473}, + {0.4887585532746823, 0.8689614239158808, 0.9422211228201178, 0.7936730372773269}, + {0.4897360703812317, 0.8716701007381515, 0.9424319424937645, 0.7915036940025811}, + {0.49071358748778104, 0.8743682128046361, 0.9426427416488422, 0.7893332600383802}, + {0.4916911045943304, 0.877055882823722, 0.9428535195612029, 0.7871617206190897}, + {0.49266862170087977, 0.879733231353918, 0.9430642755075557, 0.7849890607960254}, + {0.49364613880742914, 0.8824003768562315, 0.9432750087654677, 0.7828152654345549}, + {0.4946236559139785, 0.8850574357449248, 0.9434857186133611, 0.7806403192111389}, + {0.49560117302052786, 0.8877045224367028, 0.9436964043305125, 0.7784642066103156}, + {0.4965786901270772, 0.8903417493984002, 0.9439070651970518, 0.7762869119216224}, + {0.4975562072336266, 0.8929692271932149, 0.9441177004939602, 0.7741084192364586}, + {0.49853372434017595, 0.8955870645255496, 0.9443283095030695, 0.7719287124448813}, + {0.4995112414467253, 0.898195368284504, 0.9445388915070599, 0.7697477752323392}, + {0.5004887585532747, 0.8999582704384247, 0.9440259839645181, 0.767216933049563}, + {0.501466275659824, 0.9008772675663679, 0.9427897604899693, 0.7643374733582582}, + {0.5024437927663734, 0.9017888510612413, 0.9415537405264615, 0.7614584784508897}, + {0.5034213098729228, 0.9026930645944654, 0.9403179236236175, 0.758579938990043}, + {0.5043988269794721, 0.9035899513907005, 0.939082309327488, 0.7557018454746294}, + {0.5053763440860215, 0.9044795542347392, 0.9378468971805277, 0.7528241882367198}, + {0.5063538611925709, 0.9053619154782656, 0.9366116867215694, 0.7499469574383045}, + {0.5073313782991202, 0.9062370770464837, 0.935376677485797, 0.7470701430679764}, + {0.5083088954056696, 0.9071050804446191, 0.9341418690047226, 0.7441937349375395}, + {0.509286412512219, 0.9079659667642963, 0.9329072608061582, 0.7413177226785352}, + {0.5102639296187683, 0.9088197766897965, 0.9316728524141898, 0.7384420957386884}, + {0.5112414467253177, 0.909666550504194, 0.9304386433491516, 0.7355668433782668}, + {0.512218963831867, 0.910506328095379, 0.929204633127599, 0.7326919546663593}, + {0.5131964809384164, 0.9113391489619683, 0.9279708212622813, 0.7298174184770567}, + {0.5141739980449658, 0.9121650522191039, 0.926737207262115, 0.7269432234855512}, + {0.5151515151515151, 0.9129840766041437, 0.9255037906321568, 0.7240693581641324}, + {0.5161290322580645, 0.9137962604822488, 0.924270570873576, 0.7211958107780932}, + {0.5171065493646139, 0.914601641851867, 0.9230375474836258, 0.7183225693815318}, + {0.5180840664711632, 0.9154002583501134, 0.9218047199556164, 0.7154496218130545}, + {0.5190615835777126, 0.9161921472580586, 0.9205720877788861, 0.7125769556913697}, + {0.520039100684262, 0.9169773455059131, 0.9193396504387739, 0.7097045584107766}, + {0.5210166177908113, 0.9177558896781243, 0.918107407416589, 0.7068324171365399}, + {0.5219941348973607, 0.9185278160183782, 0.9168753581895838, 0.7039605188001508}, + {0.52297165200391, 0.9192931604345114, 0.9156435022309236, 0.7010888500944675}, + {0.5239491691104594, 0.9200519585033384, 0.9144118390096577, 0.6982173974687373}, + {0.5249266862170088, 0.9208042454753883, 0.9131803679906897, 0.6953461471234899}, + {0.5259042033235581, 0.9215500562795614, 0.9119490886347472, 0.6924750850053013}, + {0.5268817204301075, 0.9222894255277017, 0.9107180003983529, 0.6896041968014275}, + {0.5278592375366569, 0.9230223875190894, 0.9094871027337931, 0.6867334679342972}, + {0.5288367546432062, 0.923748976244856, 0.9082563950890865, 0.6838628835558646}, + {0.5298142717497556, 0.9244692253923199, 0.9070258769079558, 0.6809924285418167}, + {0.530791788856305, 0.9251831683492503, 0.9057955476297939, 0.678122087485629}, + {0.5317693059628543, 0.9258908382080538, 0.9045654066896346, 0.6752518446924666}, + {0.5327468230694037, 0.9265922677698919, 0.9033354535181196, 0.672381684172926}, + {0.533724340175953, 0.9272874895487256, 0.9021056875414672, 0.6695115896366107}, + {0.5347018572825024, 0.9279765357752937, 0.9008761081814401, 0.6666415444855377}, + {0.5356793743890518, 0.9286594384010209, 0.8996467148553131, 0.6637715318073674}, + {0.5366568914956011, 0.9293362291018609, 0.8984175069758401, 0.6609015343684537}, + {0.5376344086021505, 0.930006939282075, 0.8971884839512215, 0.6580315346067062}, + {0.5386119257086999, 0.930671600077948, 0.8959596451850703, 0.6551615146242595}, + {0.5395894428152492, 0.9313302423614392, 0.8947309900763798, 0.6522914561799438}, + {0.5405669599217986, 0.9319828967437764, 0.8935025180194887, 0.6494213406815493}, + {0.541544477028348, 0.9326295935789866, 0.8922742284040469, 0.6465511491778783}, + {0.5425219941348973, 0.933270362967372, 0.8910461206149831, 0.6436808623505788}, + {0.5434995112414467, 0.9339052347589276, 0.8898181940324675, 0.6408104605057495}, + {0.544477028347996, 0.9345342385566993, 0.8885904480318785, 0.6379399235653129}, + {0.5454545454545454, 0.9351574037200948, 0.8873628819837668, 0.6350692310581441}, + {0.5464320625610948, 0.9357747593681327, 0.8861354952538203, 0.6321983621109516}, + {0.5474095796676441, 0.9363863343826451, 0.8849082872028281, 0.6293272954388982}, + {0.5483870967741935, 0.9369921574114255, 0.8836812571866447, 0.6264560093359551}, + {0.5493646138807429, 0.9375922568713266, 0.8824544045561525, 0.6235844816649782}, + {0.5503421309872922, 0.938186660951311, 0.8812277286572263, 0.6207126898475002}, + {0.5513196480938416, 0.9387753976154484, 0.8800012288306959, 0.6178406108532258}, + {0.552297165200391, 0.9393584946058714, 0.8787749044123079, 0.6149682211892197}, + {0.5532746823069403, 0.9399359794456799, 0.877548754732689, 0.6120954968887795}, + {0.5542521994134897, 0.9405078794418019, 0.8763227791173079, 0.6092224134999789}, + {0.555229716520039, 0.9410742216878096, 0.8750969768864362, 0.606348946073873}, + {0.5562072336265884, 0.9416350330666922, 0.8738713473551107, 0.6034750691523483}, + {0.5571847507331378, 0.942190340253582, 0.8726458898330938, 0.6006007567556119}, + {0.5581622678396871, 0.9427401697184439, 0.8714206036248338, 0.5977259823693011}, + {0.5591397849462365, 0.9432845477287202, 0.8701954880294267, 0.5948507189312027}, + {0.5601173020527859, 0.9438235003519337, 0.8689705423405744, 0.5919749388175644}, + {0.5610948191593352, 0.9443570534582548, 0.8677457658465456, 0.589098613828989}, + {0.5620723362658846, 0.9448852327230259, 0.8665211578301344, 0.58622171517589}, + {0.563049853372434, 0.9454080636292502, 0.8652967175686197, 0.5833442134634953}, + {0.5640273704789834, 0.9459255714700409, 0.8640724443337237, 0.5804660786763833}, + {0.5650048875855328, 0.9464377813510351, 0.862848337391569, 0.5775872801625302}, + {0.5659824046920822, 0.9469447181927714, 0.8616243960026388, 0.5747077866168528}, + {0.5669599217986315, 0.9474464067330307, 0.8604006194217331, 0.571827566064226}, + {0.5679374389051809, 0.9479428715291441, 0.8591770068979243, 0.5689465858419566}, + {0.5689149560117303, 0.9484341369602652, 0.8579535576745168, 0.56606481258169}, + {0.5698924731182796, 0.9489202272296103, 0.8567302709890016, 0.5631822121907307}, + {0.570869990224829, 0.9494011663666638, 0.8555071460730125, 0.5602987498327505}, + {0.5718475073313783, 0.9498769782293538, 0.8542841821522823, 0.5574143899078615}, + {0.5728250244379277, 0.9503476865061934, 0.853061378446597, 0.5545290960320303}, + {0.5738025415444771, 0.950813314718394, 0.8518387341697519, 0.5516428310158045}, + {0.5747800586510264, 0.9512738862219453, 0.8506162485295051, 0.5487555568423262}, + {0.5757575757575758, 0.9517294242096662, 0.8493939207275317, 0.5458672346446002}, + {0.5767350928641252, 0.9521799517132284, 0.8481717499593776, 0.5429778246819916}, + {0.5777126099706745, 0.9526254916051476, 0.8469497354144129, 0.5400872863159162}, + {0.5786901270772239, 0.9530660666007494, 0.8457278762757834, 0.537195577984693}, + {0.5796676441837733, 0.9535016992601054, 0.8445061717203649, 0.534302657177523}, + {0.5806451612903226, 0.9539324119899432, 0.8432846209187137, 0.5314084804075586}, + {0.581622678396872, 0.9543582270455301, 0.8420632230350192, 0.5285130031840245}, + {0.5826001955034213, 0.9547791665325277, 0.8408419772270538, 0.525616179983348}, + {0.5835777126099707, 0.9551952524088242, 0.839620882646124, 0.5227179642192599}, + {0.5845552297165201, 0.9556065064863394, 0.8383999384370212, 0.5198183082118193}, + {0.5855327468230694, 0.9560129504328044, 0.8371791437379708, 0.5169171631553146}, + {0.5865102639296188, 0.9564146057735184, 0.8359584976805815, 0.5140144790849932}, + {0.5874877810361682, 0.9568114938930797, 0.834737999389795, 0.5111102048425681}, + {0.5884652981427175, 0.9570795516737193, 0.8333871623151812, 0.5085158069941164}, + {0.5894428152492669, 0.9569615275428033, 0.8316337704632916, 0.5068823238115481}, + {0.5904203323558163, 0.9568412130309071, 0.8298803901176582, 0.5052493918559136}, + {0.5913978494623656, 0.9567186125150925, 0.8281270188153027, 0.5036170102861617}, + {0.592375366568915, 0.9565937303537767, 0.8263736540702532, 0.5019851782429662}, + {0.5933528836754643, 0.9564665708868588, 0.8246202933732916, 0.5003538948484351}, + {0.5943304007820137, 0.9563371384358447, 0.8228669341917006, 0.4987231592058126}, + {0.5953079178885631, 0.9562054373039744, 0.8211135739690046, 0.49709297039917494}, + {0.5962854349951124, 0.9560714717763444, 0.819360210124707, 0.49546332749312333}, + {0.5972629521016618, 0.9559352461200311, 0.8176068400540266, 0.4938342295324681}, + {0.5982404692082112, 0.9557967645842126, 0.815853461127628, 0.492205675541911}, + {0.5992179863147605, 0.9556560314002919, 0.8141000706913484, 0.4905776645257173}, + {0.6001955034213099, 0.9555130507820161, 0.8123466660659234, 0.48895019546738566}, + {0.6011730205278593, 0.9553678269255933, 0.810593244546706, 0.4873232673293095}, + {0.6021505376344086, 0.9552203640098175, 0.8088398034033825, 0.4856968790524335}, + {0.603128054740958, 0.9550706661961804, 0.8070863398796857, 0.4840710295559026}, + {0.6041055718475073, 0.9549187376289919, 0.8053328511931046, 0.4824457177367069}, + {0.6050830889540567, 0.954764582435495, 0.8035793345345866, 0.48082094246931656}, + {0.6060606060606061, 0.9546082047259808, 0.8018257870682398, 0.47919670260531205}, + {0.6070381231671554, 0.954449608593905, 0.8000722059310288, 0.4775729969730073}, + {0.6080156402737048, 0.9542887981159981, 0.7983185882324677, 0.4759498243770662}, + {0.6089931573802542, 0.9541257773523809, 0.7965649310543074, 0.4743271835981098}, + {0.6099706744868035, 0.9539605503466763, 0.7948112314502189, 0.472705073392319}, + {0.6109481915933529, 0.9537931211261207, 0.7930574864454734, 0.4710834924910276}, + {0.6119257086999023, 0.9536234937016724, 0.7913036930366177, 0.46946243960030837}, + {0.6129032258064516, 0.9534516720681238, 0.789549848191143, 0.467841913400552}, + {0.613880742913001, 0.95327766020421, 0.7877959488471513, 0.4662219125460359}, + {0.6148582600195504, 0.9531014620727148, 0.7860419919130166, 0.46460243566448794}, + {0.6158357771260997, 0.9529230816205817, 0.7842879742670404, 0.46298348135663775}, + {0.6168132942326491, 0.9527425227790168, 0.7825338927571043, 0.4613650481957647}, + {0.6177908113391984, 0.952559789463599, 0.7807797442003149, 0.4597471347272309}, + {0.6187683284457478, 0.9523748855743802, 0.7790255253826467, 0.45812973946801033}, + {0.6197458455522972, 0.9521878149959949, 0.7772712330585763, 0.4565128609062065}, + {0.6207233626588465, 0.9519985815977611, 0.7755168639507165, 0.45489649750056155}, + {0.6217008797653959, 0.9518071892337835, 0.7737624147494395, 0.4532806476799533}, + {0.6226783968719453, 0.9516136417430568, 0.7720078821124983, 0.4516653098428873}, + {0.6236559139784946, 0.9514179429495669, 0.7702532626646417, 0.4500504823569737}, + {0.624633431085044, 0.9512200966623935, 0.7684985529972237, 0.44843616355839727}, + {0.6256109481915934, 0.9510201066758074, 0.7667437496678079, 0.4468223517513757}, + {0.6265884652981427, 0.9508179767693731, 0.7649888491997641, 0.4452090452076067}, + {0.6275659824046921, 0.9506137107080471, 0.7632338480818612, 0.4435962421657051}, + {0.6285434995112414, 0.950407312242275, 0.7614787427678545, 0.44198394083062725}, + {0.6295210166177908, 0.9501987851080916, 0.7597235296760639, 0.4403721393730869}, + {0.6304985337243402, 0.9499881330272159, 0.7579682051889491, 0.4387608359289545}, + {0.6314760508308895, 0.9497753597071493, 0.7562127656526773, 0.4371500285986492}, + {0.6324535679374389, 0.9495604688412701, 0.7544572073766838, 0.43553971544651543}, + {0.6334310850439883, 0.9493434641089294, 0.7527015266332283, 0.43392989450018815}, + {0.6344086021505376, 0.9491243491755471, 0.7509457196569413, 0.43232056374994443}, + {0.635386119257087, 0.9489031276927024, 0.7491897826443671, 0.4307117211480425}, + {0.6363636363636364, 0.9486798032982319, 0.747433711753497, 0.4291033646080461}, + {0.6373411534701857, 0.9484543796163186, 0.7456775031032995, 0.4274954920041374}, + {0.6383186705767351, 0.9482268602575868, 0.7439211527732377, 0.42588810117041176}, + {0.6392961876832844, 0.947997248819192, 0.7421646568027849, 0.42428118990016106}, + {0.6402737047898338, 0.9477655488849127, 0.7404080111909305, 0.4226747559451413}, + {0.6412512218963832, 0.9475317640252422, 0.7386512118956764, 0.42106879701482436}, + {0.6422287390029325, 0.9472958977974776, 0.736894254833531, 0.4194633107756339}, + {0.6432062561094819, 0.9470579537458076, 0.7351371358789905, 0.4178582948501666}, + {0.6441837732160313, 0.9468179354014045, 0.7333798508640146, 0.4162537468163949}, + {0.6451612903225806, 0.9465758462825115, 0.7316223955774923, 0.4146496642068541}, + {0.64613880742913, 0.9463316898945296, 0.7298647657647043, 0.41304604450781335}, + {0.6471163245356794, 0.9460854697301059, 0.7281069571267701, 0.41144288515842536}, + {0.6480938416422287, 0.94583718926922, 0.7263489653200917, 0.40984018354986124}, + {0.6490713587487781, 0.9455868519792708, 0.7245907859557871, 0.40823793702442535}, + {0.6500488758553274, 0.9453344613151619, 0.7228324145991154, 0.40663614287465105}, + {0.6510263929618768, 0.9450800207193869, 0.721073846768891, 0.40503479834237743}, + {0.6520039100684262, 0.9448235336221147, 0.7193150779368912, 0.40343390061780443}, + {0.6529814271749755, 0.9445650034412717, 0.7175561035272539, 0.4018334468385294}, + {0.6539589442815249, 0.9443044335826297, 0.7157969189158638, 0.4002334340885613}, + {0.6549364613880743, 0.9440418274398853, 0.7140375194297316, 0.39863385939731305}, + {0.6559139784946236, 0.9437771883947453, 0.7122779003463613, 0.3970347197385719}, + {0.656891495601173, 0.9435105198170064, 0.7105180568931094, 0.3954360120294475}, + {0.6578690127077224, 0.9432418250646405, 0.7087579842465317, 0.3938377331292962}, + {0.6588465298142717, 0.9429711074838738, 0.706997677531721, 0.39223987983861974}, + {0.6598240469208211, 0.9426983704092677, 0.7052371318216341, 0.39064244889794275}, + {0.6608015640273704, 0.9424236171638015, 0.7034763421364071, 0.3890454369866609}, + {0.6617790811339198, 0.9421468510589499, 0.7017153034426608, 0.3874488407218661}, + {0.6627565982404692, 0.9418680753947654, 0.6999540106527945, 0.3858526566571438}, + {0.6637341153470185, 0.9415872934599542, 0.6981924586242675, 0.38425688128134233}, + {0.6647116324535679, 0.9413045085319574, 0.6964306421588695, 0.3826615110173147}, + {0.6656891495601173, 0.9410197238770296, 0.6946685560019789, 0.38106654222063213}, + {0.6666666666666666, 0.9407329427503153, 0.6929061948418099, 0.37947197117826625}, + {0.667644183773216, 0.940444168395927, 0.6911435533086453, 0.37787779410724254}, + {0.6686217008797654, 0.9401534040470237, 0.6893806259740578, 0.37628400715326055}, + {0.6695992179863147, 0.9398606529258855, 0.6876174073501184, 0.37469060638928403}, + {0.6705767350928641, 0.9395659182439908, 0.6858538918885926, 0.3730975878140959}, + {0.6715542521994134, 0.9392692032020928, 0.684090073980119, 0.3715049473508206}, + {0.6725317693059628, 0.9389705109902952, 0.6823259479533799, 0.36991268084541107}, + {0.6735092864125122, 0.9386698447881251, 0.6805615080742546, 0.3683207840650989}, + {0.6744868035190615, 0.9383672077646104, 0.6787967485449581, 0.3667292526968092}, + {0.6754643206256109, 0.9380626030783539, 0.6770316635031669, 0.36513808234553624}, + {0.6764418377321603, 0.9377560338776059, 0.6752662470211288, 0.36354726853268}, + {0.6774193548387096, 0.9374475033003385, 0.6735004931047588, 0.3619568066943428}, + {0.678396871945259, 0.9371370144743191, 0.6717343956927174, 0.3603666921795852}, + {0.6793743890518084, 0.9368245705171838, 0.6699679486554752, 0.3587769202486382}, + {0.6803519061583577, 0.9365101745365101, 0.6682011457943596, 0.35718748607107226}, + {0.6813294232649071, 0.9361938296298858, 0.6664339808405886, 0.3555983847239211}, + {0.6823069403714564, 0.9358755388849865, 0.6646664474542812, 0.35400961118975915}, + {0.6832844574780058, 0.9355553053796434, 0.6628985392234579, 0.3524211603547323}, + {0.6842619745845552, 0.9352331321819145, 0.6611302496630195, 0.3508330270065373}, + {0.6852394916911045, 0.9349090223501574, 0.6593615722137082, 0.349245205832352}, + {0.6862170087976539, 0.9345829789330984, 0.6575925002410524, 0.34765769141671454}, + {0.6871945259042033, 0.9342550049699035, 0.6558230270342906, 0.34607047823934645}, + {0.6881720430107527, 0.933925103490247, 0.6540531458052792, 0.34448356067292213}, + {0.6891495601173021, 0.9335932775143844, 0.6522828496873767, 0.3428969329807818}, + {0.6901270772238515, 0.9332595300532162, 0.6505121317343127, 0.34131058931458336}, + {0.6911045943304008, 0.9329238641083624, 0.6487409849190318, 0.3397245237118975}, + {0.6920821114369502, 0.9325862826722283, 0.6469694021325223, 0.3381387300937367}, + {0.6930596285434996, 0.9322467887280731, 0.6451973761826182, 0.33655320226202345}, + {0.6940371456500489, 0.9319053852500783, 0.6434248997927839, 0.33496793389698976}, + {0.6950146627565983, 0.9315620752034156, 0.6416519656008736, 0.3333829185545094}, + {0.6959921798631477, 0.9312168615443154, 0.639878566157871, 0.33179814966336046}, + {0.696969696969697, 0.9308697472201306, 0.6381046939266037, 0.33021362052241404}, + {0.6979472140762464, 0.930520735169408, 0.6363303412804352, 0.3286293242977484}, + {0.6989247311827957, 0.9301698283219517, 0.6345555005019313, 0.32704525401968654}, + {0.6999022482893451, 0.9298170295988921, 0.6327801637815055, 0.32546140257975475}, + {0.7008797653958945, 0.929462341912749, 0.6310043232160345, 0.3238777627275562}, + {0.7018572825024438, 0.9291057681674996, 0.6292279708074507, 0.32229432706756134}, + {0.7028347996089932, 0.9287473112586437, 0.6274510984613088, 0.3207110880558117}, + {0.7038123167155426, 0.9283869740732695, 0.6256736979853229, 0.3191280379965317}, + {0.7047898338220919, 0.9280247594901173, 0.6238957610878798, 0.31754516903864694}, + {0.7057673509286413, 0.9276606703796454, 0.6221172793765206, 0.31596247317220677}, + {0.7067448680351907, 0.9270171412232869, 0.6203133788555946, 0.3146669165717109}, + {0.70772238514174, 0.9262005813223227, 0.6184938807335718, 0.31354962686278853}, + {0.7086999022482894, 0.9253831175850559, 0.6166742690938257, 0.31243291580951355}, + {0.7096774193548387, 0.9245647500491415, 0.6148545383132992, 0.3113167841796553}, + {0.7106549364613881, 0.9237454787511811, 0.6130346826980952, 0.31020123274277306}, + {0.7116324535679375, 0.9229253037267265, 0.6112146964824053, 0.3090862622702179}, + {0.7126099706744868, 0.92210422501028, 0.6093945738274136, 0.3079718735351329}, + {0.7135874877810362, 0.9212822426352976, 0.6075743088201849, 0.3068580673124551}, + {0.7145650048875856, 0.9204593566341913, 0.605753895472529, 0.3057448443789157}, + {0.7155425219941349, 0.9196355670383298, 0.6039333277198448, 0.3046322055130411}, + {0.7165200391006843, 0.918810873878042, 0.6021125994199428, 0.3035201514951538}, + {0.7174975562072337, 0.9179852771826179, 0.6002917043518444, 0.3024086831073726}, + {0.718475073313783, 0.917158776980312, 0.5984706362145604, 0.30129780113361365}, + {0.7194525904203324, 0.9163313732983448, 0.5966493886258425, 0.30018750635958985}, + {0.7204301075268817, 0.9155030661629047, 0.5948279551209161, 0.2990777995728125}, + {0.7214076246334311, 0.9146738555991513, 0.5930063291511846, 0.2979686815625906}, + {0.7223851417399805, 0.9138437416312154, 0.591184504082909, 0.29686015312003056}, + {0.7233626588465298, 0.9130127242822048, 0.5893624731958659, 0.29575221503803745}, + {0.7243401759530792, 0.912180803574203, 0.587540229681974, 0.29464486811131296}, + {0.7253176930596286, 0.9113479795282732, 0.5857177666438984, 0.29353811313635725}, + {0.7262952101661779, 0.910514252164461, 0.5838950770936246, 0.2924319509114667}, + {0.7272727272727273, 0.9096796215017957, 0.5820721539510062, 0.291326382236734}, + {0.7282502443792767, 0.9088440875582934, 0.5802489900422829, 0.29022140791404755}, + {0.729227761485826, 0.9080076503509589, 0.5784255780985703, 0.28911702874709083}, + {0.7302052785923754, 0.9071703098957882, 0.5766019107543188, 0.28801324554134045}, + {0.7311827956989247, 0.9063320662077716, 0.574777980545742, 0.28691005910406675}, + {0.7321603128054741, 0.9054929193008947, 0.5729537799092139, 0.2858074702443301}, + {0.7331378299120235, 0.9046528691881438, 0.5711293011796337, 0.2847054797729823}, + {0.7341153470185728, 0.9038119158815037, 0.5693045365887568, 0.28360408850266206}, + {0.7350928641251222, 0.9029700593919651, 0.567479478263495, 0.2825032972477963}, + {0.7360703812316716, 0.9021272997295241, 0.5656541182241774, 0.28140310682459563}, + {0.7370478983382209, 0.9012836369031858, 0.5638284483827803, 0.2803035180510539}, + {0.7380254154447703, 0.9004390709209669, 0.5620024605411174, 0.2792045317469453}, + {0.7390029325513197, 0.8995936017898986, 0.5601761463889949, 0.27810614873382217}, + {0.739980449657869, 0.8987472295160285, 0.5583494975023285, 0.27700836983501226}, + {0.7409579667644184, 0.8978999541044244, 0.55652250534122, 0.2759111958756167}, + {0.7419354838709677, 0.8970517755591756, 0.5546951612479929, 0.2748146276825057}, + {0.7429130009775171, 0.8962026938833973, 0.5528674564451915, 0.27371866608431705}, + {0.7438905180840665, 0.895352709079232, 0.5510393820335326, 0.27262331191145084}, + {0.7448680351906158, 0.8945018211478531, 0.5492109289898173, 0.27152856599606834}, + {0.7458455522971652, 0.8936500300894678, 0.5473820881647973, 0.2704344291720865}, + {0.7468230694037146, 0.8927973359033191, 0.5455528502809955, 0.2693409022751743}, + {0.7478005865102639, 0.8919437385876902, 0.5437232059304825, 0.26824798614274936}, + {0.7487781036168133, 0.891089238139906, 0.5418931455726009, 0.2671556816139729}, + {0.7497556207233627, 0.890233834556337, 0.5400626595316452, 0.2660639895297452}, + {0.750733137829912, 0.8893775278324013, 0.5382317379944892, 0.26497291073270157}, + {0.7517106549364614, 0.8885203179625696, 0.5364003710081604, 0.26388244606720607}, + {0.7526881720430108, 0.887662204940367, 0.5345685484773661, 0.262792596379348}, + {0.7536656891495601, 0.8868031887583742, 0.5327362601619597, 0.26170336251693394}, + {0.7546432062561095, 0.8859432694082351, 0.5309034956743554, 0.26061474532948486}, + {0.7556207233626588, 0.8850824468806561, 0.5290702444768837, 0.2595267456682278}, + {0.7565982404692082, 0.8842207211654108, 0.5272364958790887, 0.25843936438609094}, + {0.7575757575757576, 0.883358092251344, 0.5254022390349653, 0.2573526023376963}, + {0.7585532746823069, 0.8824945601263735, 0.5235674629401338, 0.25626646037935374}, + {0.7595307917888563, 0.8816301247774944, 0.5217321564289518, 0.2551809393690533}, + {0.7605083088954057, 0.880764786190782, 0.5198963081715602, 0.25409604016645776}, + {0.761485826001955, 0.8798985443513955, 0.5180599066708623, 0.2530117636328957}, + {0.7624633431085044, 0.8790313992435824, 0.5162229402594343, 0.2519281106313533}, + {0.7634408602150538, 0.8781633508506792, 0.5143853970963631, 0.2508450820264652}, + {0.7644183773216031, 0.877294399155118, 0.5125472651640154, 0.24976267868450763}, + {0.7653958944281525, 0.8764245441384289, 0.5107085322647278, 0.24868090147338834}, + {0.7663734115347018, 0.8755537857812427, 0.5088691860174208, 0.24759975126263778}, + {0.7673509286412512, 0.8746821240632954, 0.5070292138541365, 0.24651922892339895}, + {0.7683284457478006, 0.8738095589634328, 0.5051886030164925, 0.24543933532841922}, + {0.7693059628543499, 0.8729360904596133, 0.5033473405520524, 0.2443600713520389}, + {0.7702834799608993, 0.8720617185289108, 0.5015054133106112, 0.24328143787018025}, + {0.7712609970674487, 0.87118644314752, 0.4996628079403925, 0.24220343576033815}, + {0.772238514173998, 0.8703102642907602, 0.49781951088415227, 0.2411260659015675}, + {0.7732160312805474, 0.869433181933078, 0.49597550837519394, 0.2400493291744718}, + {0.7741935483870968, 0.8685551960480525, 0.49413078643328173, 0.2389732264611919}, + {0.7751710654936461, 0.8676763066083991, 0.4922853308604587, 0.23789775864539325}, + {0.7761485826001955, 0.8667965135859729, 0.49043912723676114, 0.23682292661225185}, + {0.7771260997067448, 0.8659158169517738, 0.48859216091582885, 0.23574873124844298}, + {0.7781036168132942, 0.8650342166759495, 0.48674441702040633, 0.23467517344212624}, + {0.7790811339198436, 0.8641517127278013, 0.4848958804377344, 0.23360225408293234}, + {0.7800586510263929, 0.8632683050757868, 0.4830465358148239, 0.23252997406194736}, + {0.7810361681329423, 0.862383993687525, 0.4811963675536159, 0.2314583342716992}, + {0.7820136852394917, 0.8614987785298007, 0.4793453598060164, 0.23038733560614116}, + {0.782991202346041, 0.860612659568569, 0.47749349646880795, 0.2293169789606364}, + {0.7839687194525904, 0.8597256367689589, 0.47564076117842996, 0.22824726523194155}, + {0.7849462365591398, 0.8588377100952792, 0.4737871373056293, 0.22717819531818995}, + {0.7859237536656891, 0.857948879511022, 0.4719326079499709, 0.22610977011887412}, + {0.7869012707722385, 0.8570591449788683, 0.4700771559342069, 0.22504199053482782}, + {0.7878787878787878, 0.8561685064606913, 0.4682207637985017, 0.22397485746820772}, + {0.7888563049853372, 0.8552769639175629, 0.4663634137945057, 0.22290837182247492}, + {0.7898338220918866, 0.854384517309758, 0.4645050878792721, 0.22184253450237412}, + {0.7908113391984359, 0.853491166596757, 0.46264576770901894, 0.2207773464139156}, + {0.7917888563049853, 0.852596911737255, 0.46078543463271854, 0.21971280846435254}, + {0.7927663734115347, 0.8517017526891639, 0.4589240696855221, 0.2186489215621613}, + {0.793743890518084, 0.8508056894096178, 0.4570616535820066, 0.21758568661701871}, + {0.7947214076246334, 0.8499087218549787, 0.4551981667092399, 0.21652310453978024}, + {0.7956989247311828, 0.8490108499808416, 0.453333589119658, 0.2154611762424566}, + {0.7966764418377321, 0.8481120737420395, 0.45146790052374935, 0.21439990263819003}, + {0.7976539589442815, 0.847212393092649, 0.4496010802825387, 0.21333928464123014}, + {0.7986314760508308, 0.8463118079859957, 0.44773310739986544, 0.21227932316690895}, + {0.7996089931573802, 0.8454103183746589, 0.44586396051444427, 0.2112200191316146}, + {0.8005865102639296, 0.8445079242104785, 0.4439936178917115, 0.21016137345276636}, + {0.8015640273704789, 0.8436046254445594, 0.44212205741543853, 0.20910338704878556}, + {0.8025415444770283, 0.8427004220272777, 0.4402492565791105, 0.2080460608390693}, + {0.8035190615835777, 0.8417953139082859, 0.4383751924770612, 0.20698939574396114}, + {0.804496578690127, 0.8408893010365203, 0.43649984179535706, 0.20593339268472188}, + {0.8054740957966764, 0.8399823833602044, 0.4346231808024181, 0.2048780525834995}, + {0.8064516129032258, 0.839074560826857, 0.43274518533936923, 0.20382337636329811}, + {0.8074291300097751, 0.8381658333832966, 0.43086583081011415, 0.202769364947946}, + {0.8084066471163245, 0.8372562009756503, 0.4289850921711171, 0.20171601926206406}, + {0.8093841642228738, 0.8363456635493548, 0.42710294392088727, 0.20066334023103027}, + {0.8103616813294232, 0.8354342210491685, 0.42521936008915207, 0.19961132878094762}, + {0.8113391984359726, 0.8345218734191746, 0.4233343142257106, 0.19855998583860762}, + {0.8123167155425219, 0.8336086206027874, 0.4214477793889518, 0.1975093123314544}, + {0.8132942326490713, 0.8326944625427595, 0.41955972813402986, 0.19645930918754734}, + {0.8142717497556208, 0.831779399181189, 0.4176701325006835, 0.1954099773355235}, + {0.8152492668621701, 0.830863430459526, 0.41577896400068126, 0.19436131770455894}, + {0.8162267839687195, 0.8299465563185777, 0.41388619360488543, 0.19331333122432778}, + {0.8172043010752689, 0.8290287766985173, 0.4119917917299169, 0.19226601882496178}, + {0.8181818181818182, 0.8281100915388894, 0.41009572822440626, 0.19121938143700748}, + {0.8191593352883676, 0.8271905007786183, 0.4081979723548181, 0.1901734199913845}, + {0.820136852394917, 0.8262700043560147, 0.4062984927908271, 0.18912813541933982}, + {0.8211143695014663, 0.8253486022087816, 0.4043972575902357, 0.18808352865240335}, + {0.8220918866080157, 0.8244262942740236, 0.4024942341834088, 0.18703960062234085}, + {0.823069403714565, 0.8235030804882537, 0.4005893893572135, 0.18599635226110697}, + {0.8240469208211144, 0.8225789607873988, 0.3986826892384385, 0.18495378450079478}, + {0.8250244379276638, 0.8216539351068106, 0.39677409927667795, 0.18391189827358814}, + {0.8260019550342131, 0.820728003381271, 0.3948635842266546, 0.1828706945117081}, + {0.8269794721407625, 0.8198011655450004, 0.3929511081299634, 0.18183017414736136}, + {0.8279569892473119, 0.8188734215316645, 0.3910366342962091, 0.18079033811268555}, + {0.8289345063538612, 0.8179447712743859, 0.38912012528351675, 0.17975118733969542}, + {0.8299120234604106, 0.817015214705747, 0.3872015428783876, 0.17871272276022457}, + {0.83088954056696, 0.8160847517578028, 0.3852808480748729, 0.17767494530586825}, + {0.8318670576735093, 0.8151533823620859, 0.38335800105304135, 0.17663785590792333}, + {0.8328445747800587, 0.8142211064496165, 0.3814329611567075, 0.17560145549732822}, + {0.833822091886608, 0.8132879239509111, 0.37950568687038844, 0.17456574500459912}, + {0.8347996089931574, 0.8123538347959902, 0.3775761357954657, 0.17353072535976766}, + {0.8357771260997068, 0.811418838914387, 0.3756442646255055, 0.17249639749231327}, + {0.8367546432062561, 0.8104829362351577, 0.3737100291207135, 0.17146276233109845}, + {0.8377321603128055, 0.8095461266868876, 0.37177338408147825, 0.17042982080429717}, + {0.8387096774193549, 0.8086084101977038, 0.3698342833209694, 0.16939757383932735}, + {0.8396871945259042, 0.8076697866952816, 0.3678926796367469, 0.1683660223627762}, + {0.8406647116324536, 0.8067302561068546, 0.36594852478133827, 0.16733516730032738}, + {0.841642228739003, 0.8057898183592244, 0.3640017694317388, 0.1663050095766853}, + {0.8426197458455523, 0.8048484733787704, 0.3620523631577861, 0.16527555011549733}, + {0.8435972629521017, 0.8039062210914582, 0.36010025438935817, 0.16424678983927404}, + {0.844574780058651, 0.8029630614228508, 0.35814539038234283, 0.163218729669308}, + {0.8455522971652004, 0.8020189942981174, 0.35618771718332176, 0.16219137052559077}, + {0.8465298142717498, 0.8010740196420449, 0.3542271795929097, 0.16116471332672735}, + {0.8475073313782991, 0.8001281373790462, 0.3522637211276861, 0.16013875898984786}, + {0.8484848484848485, 0.7988256197910213, 0.3506739497571804, 0.1597962858020169}, + {0.8494623655913979, 0.7974675491935677, 0.3491423266977575, 0.1595603524608824}, + {0.8504398826979472, 0.7961096293816442, 0.34761009424856293, 0.1593241106561169}, + {0.8514173998044966, 0.7947518601954529, 0.34607723809970187, 0.15908756031308327}, + {0.852394916911046, 0.7933942414742162, 0.34454374368825763, 0.1588507013561839}, + {0.8533724340175953, 0.7920367730561707, 0.3430095961926493, 0.15861353370885484}, + {0.8543499511241447, 0.7906794547785647, 0.3414747805268374, 0.158376057293567}, + {0.855327468230694, 0.7893222864776497, 0.33993928133436113, 0.15813827203181946}, + {0.8563049853372434, 0.7879652679886767, 0.3384030829822157, 0.1579001778441399}, + {0.8572825024437928, 0.7866083991458915, 0.33686616955454973, 0.15766177465007938}, + {0.8582600195503421, 0.7852516797825283, 0.33532852484619047, 0.1574230623682115}, + {0.8592375366568915, 0.7838951097308031, 0.33379013235597915, 0.15718404091612712}, + {0.8602150537634409, 0.782538688821911, 0.3322509752799185, 0.15694471021043382}, + {0.8611925708699902, 0.7811824168860192, 0.3307110365041208, 0.15670507016675211}, + {0.8621700879765396, 0.7798262937522603, 0.3291702985975499, 0.15646512069971133}, + {0.863147605083089, 0.7784703192487296, 0.3276287438045565, 0.15622486172294858}, + {0.8641251221896383, 0.7771144932024762, 0.32608635403718605, 0.15598429314910417}, + {0.8651026392961877, 0.7757588154395012, 0.32454311086726717, 0.15574341488981988}, + {0.8660801564027371, 0.7744032857847484, 0.322998995518261, 0.15550222685573506}, + {0.8670576735092864, 0.7730479040621006, 0.32145398885686527, 0.1552607289564833}, + {0.8680351906158358, 0.7716926700943733, 0.3199080713843704, 0.15501892110069057}, + {0.8690127077223851, 0.7703375837033088, 0.31836122322774896, 0.1547768031959702}, + {0.8699902248289345, 0.768982644709572, 0.3168134241304777, 0.15453437514892246}, + {0.8709677419354839, 0.7676278529327417, 0.315264653443075, 0.15429163686512834}, + {0.8719452590420332, 0.7662732081913074, 0.31371489011334913, 0.15404858824914863}, + {0.8729227761485826, 0.7649187103026616, 0.3121641126763416, 0.15380522920451928}, + {0.873900293255132, 0.7635643590830952, 0.3106122992439588, 0.15356155963374954}, + {0.8748778103616813, 0.762210154347791, 0.30905942749427434, 0.15331757943831678}, + {0.8758553274682307, 0.7608560959108175, 0.307505474660497, 0.15307328851866536}, + {0.8768328445747801, 0.7595021835851228, 0.30595041751958446, 0.1528286867742017}, + {0.8778103616813294, 0.7581484171825288, 0.30439423238049224, 0.15258377410329121}, + {0.8787878787878788, 0.7567947965137262, 0.3028368950720463, 0.15233855040325603}, + {0.8797653958944281, 0.7554413213882653, 0.301278380930417, 0.1520930155703695}, + {0.8807429130009775, 0.7540879916145536, 0.2997186647861895, 0.15184716949985538}, + {0.8817204301075269, 0.7527348069998473, 0.29815772095100307, 0.15160101208588178}, + {0.8826979472140762, 0.7513817673502451, 0.29659552320375165, 0.15135454322155958}, + {0.8836754643206256, 0.7500288724706827, 0.29503204477632244, 0.15110776279893792}, + {0.884652981427175, 0.7486761221649265, 0.29346725833885495, 0.15086067070900147}, + {0.8856304985337243, 0.7473235162355665, 0.2919011359845032, 0.15061326684166537}, + {0.8866080156402737, 0.7459710544840105, 0.29033364921367755, 0.15036555108577368}, + {0.8875855327468231, 0.7446187367104777, 0.2887647689177474, 0.15011752332909392}, + {0.8885630498533724, 0.7432665627139922, 0.28719446536217996, 0.1498691834583147}, + {0.8895405669599218, 0.7419145322923757, 0.2856227081690919, 0.149620531359041}, + {0.8905180840664711, 0.7405626452422424, 0.28404946629919264, 0.14937156691579162}, + {0.8914956011730205, 0.7392109013589914, 0.28247470803308755, 0.14912229001199415}, + {0.8924731182795699, 0.7378593004368004, 0.2808984009519176, 0.1488727005299827}, + {0.8934506353861192, 0.736507842268619, 0.27932051191730584, 0.1486227983509921}, + {0.8944281524926686, 0.7351565266461615, 0.27774100705058186, 0.14837258335515635}, + {0.895405669599218, 0.7338053533599026, 0.27615985171124785, 0.14812205542150295}, + {0.8963831867057673, 0.7324543221990667, 0.2745770104746606, 0.14787121442795045}, + {0.8973607038123167, 0.7311034329516242, 0.2729924471088866, 0.14762006025130273}, + {0.8983382209188661, 0.7297526854042831, 0.27140612455069874, 0.1473685927672471}, + {0.8993157380254154, 0.728402079342483, 0.269818004880673, 0.14711681185034897}, + {0.9002932551319648, 0.7270516145503882, 0.26822804929734523, 0.1468647173740485}, + {0.9012707722385142, 0.7257012908108794, 0.2666362180903844, 0.1466123092106555}, + {0.9022482893450635, 0.7243511079055482, 0.26504247061273817, 0.1463595872313473}, + {0.9032258064516129, 0.72300106561469, 0.26344676525169936, 0.14610655130616268}, + {0.9042033235581622, 0.7216511637172958, 0.26184905939884745, 0.14585320130399912}, + {0.9051808406647116, 0.7203014019910458, 0.26024930941880814, 0.14559953709260773}, + {0.906158357771261, 0.7189517802123022, 0.258647470616775, 0.1453455585385896}, + {0.9071358748778103, 0.7176022981561022, 0.25704349720473624, 0.14509126550739138}, + {0.9081133919843597, 0.7162529555961505, 0.2554373422663387, 0.14483665786330135}, + {0.9090909090909091, 0.7149037523048116, 0.2538289577203271, 0.144581735469444}, + {0.9100684261974584, 0.7135546880531033, 0.2522182942824863, 0.14432649818777757}, + {0.9110459433040078, 0.7122057626106894, 0.25060530142601034, 0.14407094587908825}, + {0.9120234604105572, 0.71085697574587, 0.2489899273402224, 0.143815078402986}, + {0.9130009775171065, 0.7095083272255784, 0.247372118887557, 0.14355889561790072}, + {0.9139784946236559, 0.7081598168153695, 0.24575182155872383, 0.1433023973810773}, + {0.9149560117302052, 0.7068114442794143, 0.24412897942594836, 0.14304558354857144}, + {0.9159335288367546, 0.7054632093804915, 0.24250353509419803, 0.14278845397524445}, + {0.916911045943304, 0.7041151118799807, 0.24087542965028597, 0.14253100851476008}, + {0.9178885630498533, 0.7027671515378537, 0.2392446026097324, 0.14227324701957814}, + {0.9188660801564027, 0.7014193281126684, 0.2376109918612772, 0.14201516934095182}, + {0.9198435972629521, 0.700071641361559, 0.23597453360890264, 0.1417567753289209}, + {0.9208211143695014, 0.6987240910402293, 0.23433516231124046, 0.14149806483230926}, + {0.9217986314760508, 0.6973766769029451, 0.23269281061821295, 0.14123903769871834}, + {0.9227761485826002, 0.6960293987025262, 0.23104740930475803, 0.14097969377452357}, + {0.9237536656891495, 0.6946822561903377, 0.22939888720146945, 0.1407200329048688}, + {0.9247311827956989, 0.693335249116283, 0.2277471711219864, 0.14046005493366223}, + {0.9257086999022482, 0.6919883772287949, 0.22609218578693296, 0.14019975970357063}, + {0.9266862170087976, 0.6906416402748287, 0.22443385374421987, 0.13993914705601554}, + {0.927663734115347, 0.6892950379998523, 0.22277209528548808, 0.139678216831167}, + {0.9286412512218963, 0.68794857014784, 0.22110682835846895, 0.13941696886793967}, + {0.9296187683284457, 0.6866022364612632, 0.2194379684750173, 0.13915540300398774}, + {0.9305962854349951, 0.6852560366810823, 0.21776542861455606, 0.13889351907569883}, + {0.9315738025415444, 0.6839099705467385, 0.2160891191226506, 0.13863131691819056}, + {0.9325513196480938, 0.6825640377961453, 0.21440894760441676, 0.1383687963653037}, + {0.9335288367546432, 0.6812182381656803, 0.21272481881243493, 0.1381059572495984}, + {0.9345063538611925, 0.6798725713901773, 0.21103663452882898, 0.13784279940234817}, + {0.9354838709677419, 0.6785270372029161, 0.20934429344113736, 0.13757932265353492}, + {0.9364613880742912, 0.6771816353356157, 0.2076476910115717, 0.1373155268318437}, + {0.9374389051808406, 0.6758363655184254, 0.20594671933923991, 0.13705141176465707}, + {0.9384164222873901, 0.6744912274799155, 0.20424126701486178, 0.13678697727805061}, + {0.9393939393939394, 0.6731462209470696, 0.20253121896748427, 0.13652222319678622}, + {0.9403714565004888, 0.6718013456452747, 0.20081645630264944, 0.1362571493443082}, + {0.9413489736070382, 0.670456601298313, 0.19909685613143657, 0.13599175554273596}, + {0.9423264907135875, 0.6691119876283536, 0.1973722913897435, 0.1357260416128605}, + {0.9433040078201369, 0.6677675043559432, 0.19564263064713083, 0.1354600073741371}, + {0.9442815249266863, 0.666423151199997, 0.19390773790448115, 0.13519365264468117}, + {0.9452590420332356, 0.6650789278777898, 0.19216747237967688, 0.13492697724126146}, + {0.946236559139785, 0.663734834104947, 0.19042168828042752, 0.13465998097929496}, + {0.9472140762463344, 0.6623908695954365, 0.18867023456329304, 0.1343926636728411}, + {0.9481915933528837, 0.6610470340615582, 0.18691295467788485, 0.13412502513459623}, + {0.9491691104594331, 0.6597033272139349, 0.1851496862951177, 0.13385706517588722}, + {0.9501466275659824, 0.6583597487615047, 0.18338026101829127, 0.13358878360666593}, + {0.9511241446725318, 0.6570162984115097, 0.1816045040756781, 0.13332018023550377}, + {0.9521016617790812, 0.6556729758694887, 0.17982223399314787, 0.133051254869585}, + {0.9530791788856305, 0.6543297808392655, 0.17803326224525476, 0.1327820073147011}, + {0.9540566959921799, 0.6529867130229419, 0.1762373928830257, 0.1325124373752449}, + {0.9550342130987293, 0.6516437721208871, 0.17443442213655333, 0.13224254485420428}, + {0.9560117302052786, 0.6503009578317276, 0.1726241379902897, 0.13197232955315644}, + {0.956989247311828, 0.6489582698523388, 0.1708063197287273, 0.1317017912722611}, + {0.9579667644183774, 0.6476157078778353, 0.1689807374499402, 0.1314309298102548}, + {0.9589442815249267, 0.6462732716015601, 0.16714715154417525, 0.13115974496444474}, + {0.9599217986314761, 0.6449309607150767, 0.16530531213440566, 0.13088823653070217}, + {0.9608993157380255, 0.6435887749081568, 0.16345495847543015, 0.13061640430345617}, + {0.9618768328445748, 0.6422467138687737, 0.16159581830772657, 0.13034424807568734}, + {0.9628543499511242, 0.6409047772830901, 0.15972760716187256, 0.13007176763892145}, + {0.9638318670576735, 0.6395629648354483, 0.1578500276088565, 0.12979896278322264}, + {0.9648093841642229, 0.6382212762083624, 0.15596276845109291, 0.12952583329718748}, + {0.9657869012707723, 0.6368797110825053, 0.1540655038483625, 0.12925237896793768}, + {0.9667644183773216, 0.6355382691367006, 0.15215789237219973, 0.12897859958111435}, + {0.967741935483871, 0.6341969500479122, 0.1502395759815047, 0.12870449492087047}, + {0.9687194525904204, 0.632855753491234, 0.14831017891127546, 0.12843006476986474}, + {0.9696969696969697, 0.6315146791398792, 0.14636930646534327, 0.12815530890925486}, + {0.9706744868035191, 0.6301737266651712, 0.1444165437028633, 0.12788022711869027}, + {0.9716520039100685, 0.6288328957365316, 0.14245145400700174, 0.12760481917630592}, + {0.9726295210166178, 0.6274921860214719, 0.1404735775227284, 0.12732908485871483}, + {0.9736070381231672, 0.6261515971855813, 0.13848242944891181, 0.12705302394100138}, + {0.9745845552297165, 0.6248111288925173, 0.1364774981678748, 0.1267766361967145}, + {0.9755620723362659, 0.6234707808039951, 0.13445824319323782, 0.12649992139786043}, + {0.9765395894428153, 0.6221305525797762, 0.13242409291417293, 0.12622287931489526}, + {0.9775171065493646, 0.620790443877659, 0.1303744421109971, 0.1259455097167188}, + {0.978494623655914, 0.6194504543534674, 0.1283086492133398, 0.12566781237066638}, + {0.9794721407624634, 0.6181105836610397, 0.12622603326775853, 0.12538978704250195}, + {0.9804496578690127, 0.6167708314522192, 0.12412587057652605, 0.12511143349641116}, + {0.9814271749755621, 0.6154311973768422, 0.12200739096326049, 0.1248327514949932}, + {0.9824046920821115, 0.6140916810827273, 0.11986977361383619, 0.12455374079925435}, + {0.9833822091886608, 0.6127522822156652, 0.11771214243243278, 0.12427440116859984}, + {0.9843597262952102, 0.6114130004194068, 0.11553356084228558, 0.12399473236082678}, + {0.9853372434017595, 0.6100738353356528, 0.11333302594832736, 0.12371473413211614}, + {0.9863147605083089, 0.6087347866040427, 0.11110946196399454, 0.12343440623702567}, + {0.9872922776148583, 0.6073958538621426, 0.10886171278633208, 0.12315374842848176}, + {0.9882697947214076, 0.6060570367454359, 0.10658853358143783, 0.12287276045777218}, + {0.989247311827957, 0.6047183348873109, 0.10428858121519557, 0.12259144207453807}, + {0.9902248289345064, 0.6033797479190488, 0.10196040333083048, 0.1223097930267657}, + {0.9912023460410557, 0.6020412754698145, 0.09960242583337589, 0.12202781306077967}, + {0.9921798631476051, 0.6007029171666435, 0.09721293848943094, 0.1217455019212341}, + {0.9931573802541545, 0.5993646726344314, 0.09479007828557187, 0.12146285935110498}, + {0.9941348973607038, 0.598026541495921, 0.09233181010653285, 0.12117988509168176}, + {0.9951124144672532, 0.5966885233716935, 0.08983590418938112, 0.12089657888255981}, + {0.9960899315738025, 0.5953506178801542, 0.08729990967508919, 0.12061294046163201}, + {0.9970674486803519, 0.5940128246375225, 0.0847211234040581, 0.12032896956508049}, + {0.9980449657869013, 0.5926751432578194, 0.0820965528733966, 0.12004466592736834}, + {0.9990224828934506, 0.591337573352857, 0.07942287197133291, 0.11976002928123142}, + {1.0, 0.5900001145322249, 0.07669636770019067, 0.11947505935767005} + }; + }; +} \ No newline at end of file diff --git a/Engine/Core/Types.hpp b/Engine/Core/Types.hpp index bdf465a..bf7ad84 100644 --- a/Engine/Core/Types.hpp +++ b/Engine/Core/Types.hpp @@ -46,4 +46,12 @@ namespace Engine uint32 x; uint32 y; } LogFloatXY_t; + + typedef struct ColorEntry + { + float scalar; + float r; + float g; + float b; + } ColorEntry_t; } \ No newline at end of file diff --git a/Engine/Core/Utility.cpp b/Engine/Core/Utility.cpp index 4eb6088..f80a3de 100644 --- a/Engine/Core/Utility.cpp +++ b/Engine/Core/Utility.cpp @@ -4,13 +4,13 @@ namespace Engine { // ----- Public ----- - glm::vec3 Utility::GetScienticColor(float value, const float min, const float max) + glm::vec3 Utility::GetColor_Scientic(float value, const float min, const float max) { value = fminf(fmaxf(value, min), max - 0.0001f); const float diff = max - min; value = diff == 0.0f ? 0.5f : (value - min) / diff; const float divider = 0.25f; - const uint32 number = (uint8)floorf(value / divider); + const uint32 number = (uint8)floorf(value / divider); const float pos = (value - (float)number * divider) / divider; glm::vec3 retVec{0.0f}; @@ -25,4 +25,18 @@ namespace Engine return retVec; } + + glm::vec3 Utility::GetColor_BlackBody(float scalar) + { + const uint32 idx = (uint32)(scalar * (ColorLUT::COLOR_TABLE_SIZE - 1)); + const ColorEntry color = ColorLUT::BlackBody[idx]; + return {color.r, color.g, color.b}; + } + + glm::vec3 Utility::GetColor_ParaView(float scalar) + { + const uint32 idx = (uint32)(scalar * (ColorLUT::COLOR_TABLE_SIZE - 1)); + const ColorEntry color = ColorLUT::ParaView[idx]; + return {color.r, color.g, color.b}; + } } \ No newline at end of file diff --git a/Engine/Core/Utility.hpp b/Engine/Core/Utility.hpp index 4adb3b0..2774968 100644 --- a/Engine/Core/Utility.hpp +++ b/Engine/Core/Utility.hpp @@ -1,7 +1,7 @@ #pragma once #include "glm.hpp" -#include "Types.hpp" +#include "ColorLUT.hpp" #include @@ -11,6 +11,8 @@ namespace Engine { public: Utility() = delete; - static glm::vec3 GetScienticColor(float value, float min, float max); + static glm::vec3 GetColor_Scientic(float value, float min, float max); + static glm::vec3 GetColor_BlackBody(float scalar); + static glm::vec3 GetColor_ParaView(float scalar); }; } \ No newline at end of file diff --git a/Engine/Physics/FluidSimulation/FluidSimulator.cpp b/Engine/Physics/FluidSimulation/FluidSimulator.cpp index fbdfdc4..5066c12 100644 --- a/Engine/Physics/FluidSimulation/FluidSimulator.cpp +++ b/Engine/Physics/FluidSimulation/FluidSimulator.cpp @@ -15,7 +15,7 @@ namespace Engine _grid.v [AT(x, y)] = 0.0f; _grid.v_tmp[AT(x, y)] = 0.0f; _grid.b [AT(x, y)] = 1.0f; //1.0 for fluid cells and 0.0 for border cells - _grid.d [AT(x, y)] = 1.0f; //Density value + _grid.d [AT(x, y)] = 1.0f; _grid.d_tmp[AT(x, y)] = 0.0f; } } @@ -106,10 +106,9 @@ namespace Engine } } - void FluidSimulator::Extrapolate() + /* Sets the values of the outmost cells to the values of neighbouring cells. */ + void FluidSimulator::Extrapolate() const { - //Setze die Werte der äußersten Zellen auf die ihrer Nachbarn - for(uint32 x = 0; x < _grid.width; x++) { _grid.u[AT(x, 0)] = _grid.u[AT(x, 1)]; @@ -133,73 +132,63 @@ namespace Engine { for(uint32 y = 1; y < _grid.height-1; y++) { - //Skip border cells + /* Skip border cells. */ if(_grid.b[AT(x, y)] == 0 || _grid.b[AT(x-1, y)] == 0 || _grid.b[AT(x, y-1)] == 0 || _grid.b[AT(x+1, y)] == 0 || _grid.b[AT(x, y+1)] == 0) { continue; } + /* Calculate u- and v-velocity depending on the chosen integrator. */ if(LiquiefiedParams::integratorChoice == Integrator::ForwardEuler) { uAdvect = ForwardEuler(dt, _grid.u_Avg(x, y), _grid.u[AT(x, y)], _grid.u[AT(x+1, y)], _grid.u[AT(x-1, y)]); vAdvect = ForwardEuler(dt, _grid.v_Avg(x, y), _grid.v[AT(x, y)], _grid.v[AT(x, y+1)], _grid.v[AT(x, y-1)]); - - _grid.u_tmp[AT(x, y)] = uAdvect; //u-component (horizontal advection) - _grid.v_tmp[AT(x, y)] = vAdvect; //v-component (vertical advection) } - else if(LiquiefiedParams::integratorChoice == Integrator::BackwardEuler) + else if(LiquiefiedParams::integratorChoice == Integrator::ModifiedForwardEuler) { - uAdvect = ModifiedForwardEuler(dt, _grid.u_Avg(x, y), _grid.u, x, y); - vAdvect = ModifiedForwardEuler(dt, _grid.v_Avg(x, y), _grid.v, x, y); - - _grid.u_tmp[AT(x, y)] = uAdvect; //u-component (horizontal advection) - _grid.v_tmp[AT(x, y)] = vAdvect; //v-component (vertical advection) + //... + } + else if(LiquiefiedParams::integratorChoice == Integrator::RungeKutta2) + { + //... } else if(LiquiefiedParams::integratorChoice == Integrator::SemiLagrangian) { - // --- Set constants - - /*int32 numX = 150; // LiquiefiedParams::SIMULATION_WIDTH; - int32 numY = 100; // LiquiefiedParams::SIMULATION_HEIGHT; - - - - float dx = h2; - float dy = h2; - - // --- Calculate new x and y based on velocities - - uAdvect = _grid.u[AT(x,y)] + _grid.u[AT(x+1,y)] * 0.5f; - vAdvect = _grid.v[AT(x,y)] + _grid.v[AT(x,y+1)] * 0.5f; - float idx = (float)x * h + h2 - dt * uAdvect; - float idy = (float)y * h + h2 - dt * vAdvect; - - float x_new = std::max(std::min(idx, ((float)numX * h)), h); - float y_new = std::max(std::min(idy, ((float)numY * h)), h); - - _grid.d_tmp[AT(x, y)] = SemiLagrangian(x_new, y_new, dx, dy, _grid.d);*/ - - float h = 0.01f; // (uint32)(1.0f / LiquiefiedParams::SIMULATION_HEIGHT); - float h2 = 0.005f; // 0.5f * h; + const float h = _grid.h; + const float h2 = _grid.h2; + //Calculate u- and v-Advection for u-component float u = _grid.u[AT(x, y)]; float v = _grid.v_Avg(x, y); - float ux = (float)x * h - dt * u; - float uy = (float)y * h + h2 - dt * v; + //Calculate approximated previous position for u-component + const float ux_prev = (float)x * h - dt * u; + const float uy_prev = (float)y * h + h2 - dt * v; + + //Calculate u- and v-Advection for v-component u = _grid.u_Avg(x, y); v = _grid.v[AT(x, y)]; - float vx = (float)x * h + h2 - dt * u; - float vy = (float)y * h - dt * v; - uAdvect = SemiLagrangian(ux, uy, 0.0f, h2, _grid.u); - vAdvect = SemiLagrangian(vx, vy, h2, 0.0f, _grid.v); + //Calculate approximated previous position for v-component + const float vx_prev = (float)x * h + h2 - dt * u; + const float vy_prev = (float)y * h - dt * v; - _grid.u_tmp[AT(x, y)] = uAdvect; //u-component (horizontal advection) - _grid.v_tmp[AT(x, y)] = vAdvect; //v-component (vertical advection) + uAdvect = _grid.SampleInterpolated(ux_prev, uy_prev, 0.0f, h2, _grid.u); + vAdvect = _grid.SampleInterpolated(vx_prev, vy_prev, h2, 0.0f, _grid.v); } - //Monitor the applied horizontal and vertical advection + //Check for stability + if(!CheckCFLStability(dt, uAdvect)) + uAdvect = 0.0f; + + if(!CheckCFLStability(dt, vAdvect)) + vAdvect = 0.0f; + + //Assign new velocities + _grid.u_tmp[AT(x, y)] = uAdvect; //u-component (horizontal advection) + _grid.v_tmp[AT(x, y)] = vAdvect; //v-component (vertical advection) + + //Monitor values if(LiquiefiedParams::activateDebugging) { if(uAdvect < LiquefiedDebug::minUAdvect.val) @@ -226,7 +215,7 @@ namespace Engine * and advect it like the velocity field. */ void FluidSimulator::AdvectSmoke(const float dt) { - float uAdvect = 0.0f, vAdvect = 0.0f; + float uAdvect = 0.0f, vAdvect = 0.0f, density = 0.0f; for(uint32 x = 1; x < _grid.width-1; x++) { @@ -243,46 +232,39 @@ namespace Engine uAdvect = ForwardEuler(dt, _grid.u_Avg(x, y), _grid.d[AT(x, y)], _grid.d[AT(x+1, y)], _grid.d[AT(x-1, y)]); vAdvect = ForwardEuler(dt, _grid.v_Avg(x, y), _grid.d[AT(x, y)], _grid.d[AT(x, y+1)], _grid.d[AT(x, y-1)]); - _grid.d_tmp[AT(x, y)] = (uAdvect + vAdvect) / 2.0f; + density = std::abs((uAdvect + vAdvect) * 0.5f); + density = std::min(density, 1.0f); } - else if(LiquiefiedParams::integratorChoice == Integrator::BackwardEuler) + else if(LiquiefiedParams::integratorChoice == Integrator::ModifiedForwardEuler) { - uAdvect = ModifiedForwardEuler(dt, _grid.u_Avg(x, y), _grid.d, x, y); - vAdvect = ModifiedForwardEuler(dt, _grid.v_Avg(x, y), _grid.d, x, y); - - _grid.d_tmp[AT(x, y)] = (uAdvect + vAdvect) / 2.0f; + //... + } + else if(LiquiefiedParams::integratorChoice == Integrator::RungeKutta2) + { + //... } else if(LiquiefiedParams::integratorChoice == Integrator::SemiLagrangian) { - //if (this.s[i*n + j] != 0.0) { - // var u = (this.u[i*n + j] + this.u[(i+1)*n + j]) * 0.5; - // var v = (this.v[i*n + j] + this.v[i*n + j+1]) * 0.5; - // var x = i*h + h2 - dt*u; - // var y = j*h + h2 - dt*v; - - // this.newM[i*n + j] = this.sampleField(x,y, S_FIELD); - //} - - // --- Set constants - - int32 numX = 150; // LiquiefiedParams::SIMULATION_WIDTH; - int32 numY = 100; // LiquiefiedParams::SIMULATION_HEIGHT; - - float h = 0.01f; // (uint32)(1.0f / LiquiefiedParams::SIMULATION_HEIGHT); - float h2 = 0.005f; // 0.5f * h; - - float dx = h2; - float dy = h2; - - // --- Calculate new x and y based on velocities + const float h = _grid.h; + const float h2 = _grid.h2; + //Calculate u- and v-Advection uAdvect = (_grid.u[AT(x,y)] + _grid.u[AT(x+1,y)]) * 0.5f; vAdvect = (_grid.v[AT(x,y)] + _grid.v[AT(x,y+1)]) * 0.5f; - float ux = (float)x * h + h2 - dt * uAdvect; - float vy = (float)y * h + h2 - dt * vAdvect; - _grid.d_tmp[AT(x, y)] = SemiLagrangian(ux, vy, dx, dy, _grid.d); + //Calculate approximated previous position + const float x_prev = (float)x * h + h2 - dt * uAdvect; + const float y_prev = (float)y * h + h2 - dt * vAdvect; + + density = _grid.SampleInterpolated(x_prev, y_prev, h2, h2, _grid.d); } + + //Check for stability + if(!CheckCFLStability(dt, density)) + density = 0.0f; + + //Assign new density + _grid.d_tmp[AT(x, y)] = density; } } @@ -290,6 +272,25 @@ namespace Engine SWAP(_grid.d, _grid.d_tmp); } + /* Returns false if integrator got unstable. */ + bool FluidSimulator::CheckCFLStability(float dt, float value) const + { + //Check numerical stability via CFL condition (Courant–Friedrichs–Lewy condition) + const float cfl = (value * dt) / (float)_grid.dx; + + if(LiquiefiedParams::activateDebugging) + { + //Save value for debugging purposes + if(cfl > LiquefiedDebug::cflCondition) + LiquefiedDebug::cflCondition = cfl; + } + + if(cfl >= 1.0f) + return false; + + return true; + } + float FluidSimulator::ForwardEuler(const float dt, const float u, const float q, const float q_next, const float q_prev) const { /* The update rule for Forward-Euler looks like this: * @@ -328,57 +329,14 @@ namespace Engine * q1[i] = q0[i] - dt * u[i] * (q0[i+1] - q0[i-1]) / (2 * dx) */ const uint32 dx = _grid.dx; - float velocity = q - dt * u * ((q_next - q_prev) / (float)(2 * dx)); - - if(LiquiefiedParams::activateDebugging) - { - //Check numerical stability via CFL condition (Courant–Friedrichs–Lewy condition) - const float cfl = (velocity * dt) / (float)dx; - - //Save value for debugging purposes - if(cfl > LiquefiedDebug::cflCondition) - LiquefiedDebug::cflCondition = cfl; - - //Forward-Euler has gotten unstable - return 0 - if(LiquefiedDebug::cflCondition >= 1.0f) - velocity = 0.0f; - } + const float velocity = q - dt * u * ((q_next - q_prev) / (float)(2 * dx)); return velocity; } - float FluidSimulator::ModifiedForwardEuler(float dt, float vel, const float* q_values, uint32 q_startX, uint32 q_startY) const + float FluidSimulator::ModifiedForwardEuler() const { - const uint32 dx = _grid.dx; - const float h_half = dt / 2; - - uint32 idx_left = AT(q_startX + dx, q_startY); - uint32 idx_right = AT(q_startX - dx, q_startY); - float k1 = (q_values[idx_left] - q_values[idx_right]) / (float)(2 * dx); - - uint32 x_left = q_startX + dx + (uint32)(h_half * k1); - uint32 x_right = q_startX - dx - (uint32)(h_half * k1); - idx_left = AT(x_left, q_startY); - idx_right = AT(x_right, q_startY); - const float k2 = (q_values[idx_left] - q_values[idx_right]) / (float)(2 * dx) + h_half; - - float result = q_values[AT(q_startX, q_startY)] - dt * vel * k2; - - if(LiquiefiedParams::activateDebugging) - { - //Check numerical stability via CFL condition (Courant–Friedrichs–Lewy condition) - const float cfl = (result * dt) / (float)dx; - - //Save value for debugging purposes - if(cfl > LiquefiedDebug::cflCondition) - LiquefiedDebug::cflCondition = cfl; - - //Forward-Euler has gotten unstable - return 0 - if(LiquefiedDebug::cflCondition >= 1.0f) - result = 0.0f; - } - - return result; + return 0; } float FluidSimulator::BackwardEuler(const float dt, const float vel, const float* q_values, const uint32 q_startX, const uint32 q_startY) const @@ -442,21 +400,7 @@ namespace Engine const float f_x1 = (q_values[x1+dx] - q_values[x1-dx]) / (float)(2 * dx); const float x0 = q_values[AT(q_startX, q_startY)]; - float velocity = x0 - dt * vel * f_x1; - - if(LiquiefiedParams::activateDebugging) - { - //Check numerical stability via CFL condition (Courant–Friedrichs–Lewy condition) - const float cfl = (velocity * dt) / (float)dx; - - //Save value for debugging purposes - if(cfl > LiquefiedDebug::cflCondition) - LiquefiedDebug::cflCondition = cfl; - - //Backward-Euler has gotten unstable - return 0 - if(LiquefiedDebug::cflCondition >= 1.0f) - velocity = 0.0f; - } + const float velocity = x0 - dt * vel * f_x1; return velocity; } @@ -494,43 +438,6 @@ namespace Engine return x1; } - float FluidSimulator::SemiLagrangian(const float x, const float y, const float dx, const float dy, const float* f) const - { - // --- Set constants - - int32 numX = 150; // LiquiefiedParams::SIMULATION_WIDTH; - int32 numY = 100; // LiquiefiedParams::SIMULATION_HEIGHT; - - float h = 0.01f; // (uint32)(1.0f / LiquiefiedParams::SIMULATION_HEIGHT); - - // --- Calculate new x and new y - - float x_new = std::max(std::min(x, ((float)numX * h)), h); - float y_new = std::max(std::min(y, ((float)numY * h)), h); - - // --- Sample field - - int32 x0 = (int32)std::min(std::floor((x_new-dx)*(float)numY), (float)numX-1); - x0 = std::max(x0, 0); - int32 x1 = std::min(x0+1, numX-1); - float tx = ((x_new-dx) - (float)x0*h) * (float)numY; - - int32 y0 = (int32)std::min(std::floor((y_new-dy)*(float)numY), (float)numY-1); - y0 = std::max(y0, 0); - int32 y1 = std::min(y0+1, numY-1); - float ty = ((y_new-dy) - (float)y0*h) * (float)numY; - - float sx = 1.0f - tx; - float sy = 1.0f - ty; - - float val = sx*sy * f[AT(x0, y0)] + - tx*sy * f[AT(x1, y1)] + - tx*ty * f[AT(x1, y1)] + - sx*ty * f[AT(x0, y1)]; - - return val; - } - // ----- Public ----- FluidSimulator::FluidSimulator() @@ -552,7 +459,7 @@ namespace Engine } { PROFILE_SCOPE("#Extrapolate"); - //Extrapolate(); + Extrapolate(); } { PROFILE_SCOPE("#AdvectVelocity"); diff --git a/Engine/Physics/FluidSimulation/FluidSimulator.hpp b/Engine/Physics/FluidSimulation/FluidSimulator.hpp index a09db56..a9b4b92 100644 --- a/Engine/Physics/FluidSimulation/FluidSimulator.hpp +++ b/Engine/Physics/FluidSimulation/FluidSimulator.hpp @@ -19,13 +19,13 @@ namespace Engine void Init() const; void AddForces(float dt) const; void Project(float dt) const; - void Extrapolate(); + void Extrapolate() const; void AdvectVelocity(float dt); void AdvectSmoke(float dt); + [[nodiscard]] bool CheckCFLStability(float dt, float value) const; [[nodiscard]] float ForwardEuler(float dt, float u, float q, float q_next, float q_prev) const; - [[nodiscard]] float ModifiedForwardEuler(float dt, float vel, const float* q_values, uint32 q_startX, uint32 q_startY) const; + [[nodiscard]] float ModifiedForwardEuler() const; [[nodiscard]] float BackwardEuler(float dt, float vel, const float* q_values, uint32 q_startX, uint32 q_startY) const; - [[nodiscard]] float SemiLagrangian(float x, float y, float dx, float dy, const float* f) const; [[nodiscard]] uint32 NewtonRaphson(const float* values, uint32 startX, uint32 startY, uint32 maxIteration) const; public: diff --git a/Engine/Physics/FluidSimulation/StaggeredGrid.hpp b/Engine/Physics/FluidSimulation/StaggeredGrid.hpp index 6d1a96d..01896cc 100644 --- a/Engine/Physics/FluidSimulation/StaggeredGrid.hpp +++ b/Engine/Physics/FluidSimulation/StaggeredGrid.hpp @@ -28,6 +28,9 @@ namespace Engine public: const uint32 width = LiquiefiedParams::SIMULATION_WIDTH; const uint32 height = LiquiefiedParams::SIMULATION_HEIGHT; + const float h = 1.0f / (float)height; + const float h2 = h * 0.5f; + const uint32 dx = 1; //Public accessors float* u = &_u[0]; @@ -38,9 +41,6 @@ namespace Engine float* d = &_d[0]; float* d_tmp = &_d_tmp[0]; - //Spatial discretization - const uint32 dx = 1; - [[nodiscard]] inline float u_Avg(const uint32 x, const uint32 y) const { return (u[AT(x,y)] + u[AT(x+1,y)] + u[AT(x,y-1)] + u[AT(x+1,y-1)]) * 0.25f; @@ -50,5 +50,41 @@ namespace Engine { return (v[AT(x,y)] + v[AT(x-1,y)] + v[AT(x,y+1)] + v[AT(x-1,y+1)]) * 0.25f; } + + /* Samples the staggered grid with odd/floating point numbers and interpolates * + * depending on the position between grid points. */ + [[nodiscard]] inline float SampleInterpolated(const float x, const float y, const float dx, const float dy, const float* f) const + { + const float numX = (float)width; + const float numY = (float)height; + + //Check bounds + float x_new = std::max(std::min(x, (numX * h)), h); + float y_new = std::max(std::min(y, (numY * h)), h); + + //Calculate x-positions (x0, x1) + float x0 = std::min(std::floor((x_new-dx)*numY), numX-1); + x0 = std::max(x0, 0.0f); //Just to be safe + const float x1 = std::min(x0+1, numX-1); + + //Calculate y-positions (y0, y1) + float y0 = std::min(std::floor((y_new-dy)*numY), numY-1); + y0 = std::max(y0, 0.0f); //Just to be safe + const float y1 = std::min(y0+1, numY-1); + + //Calculate weight value for interpolation + const float tx = ((x_new-dx) - x0*h) * numY; + const float ty = ((y_new-dy) - y0*h) * numY; + const float sx = 1.0f - tx; + const float sy = 1.0f - ty; + + //Sample grid on calculated positions and apply interpolation factor + const float val = sx*sy * f[AT((uint32)x0, (uint32)y0)] + + tx*sy * f[AT((uint32)x1, (uint32)y0)] + + tx*ty * f[AT((uint32)x1, (uint32)y1)] + + sx*ty * f[AT((uint32)x0, (uint32)y1)]; + + return val; + } }; } \ No newline at end of file diff --git a/README.md b/README.md index 05f380f..65eea07 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,8 @@ Nature scene with water rendering, normal mapped objects, and a particle system 2D Eulerian Fluid Simulation on the CPU. -![Liquefied](Res/Screenshots/Liquefied/Screenshot_Liq_006.png) +![Liquefied_color1](Res/Screenshots/Liquefied/Screenshot_Liq_007-1.png) +![Liquefied_color2](Res/Screenshots/Liquefied/Screenshot_Liq_007-2.png) ## Building and compiling diff --git a/Res/Screenshots/Liquefied/Screenshot_Liq_007-1.png b/Res/Screenshots/Liquefied/Screenshot_Liq_007-1.png new file mode 100644 index 0000000..0985542 Binary files /dev/null and b/Res/Screenshots/Liquefied/Screenshot_Liq_007-1.png differ diff --git a/Res/Screenshots/Liquefied/Screenshot_Liq_007-2.png b/Res/Screenshots/Liquefied/Screenshot_Liq_007-2.png new file mode 100644 index 0000000..6e07360 Binary files /dev/null and b/Res/Screenshots/Liquefied/Screenshot_Liq_007-2.png differ