From 3a538e475f0eb73bbde80c6142e869a9ca037815 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Fri, 3 Feb 2017 17:15:25 -0500 Subject: [PATCH 01/66] Fix scaling, add MP from Pathfinder --- .../talonCluster/commands/ExecuteProfile.java | 7 +- src/main/resources/map.cfg | 4 +- src/main/resources/profile.csv | 1567 +++++++++++++---- 3 files changed, 1203 insertions(+), 375 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index f332313c..6d9ec091 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -137,8 +137,8 @@ private void startFilling() { CANTalon.TrajectoryPoint point = new CANTalon.TrajectoryPoint(); for (int i = 0; i < profile.data.length; ++i) { // Set all the fields of the profile point - point.position = profile.data[i][0] * 2048; - point.velocity = profile.data[i][1] * 2048; + point.position = profile.data[i][0] * 2048 / 4 * Math.PI ; + point.velocity = profile.data[i][1] * 2048 / 4 * Math.PI ; point.timeDurMs = (int) profile.data[i][2]; point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward @@ -147,6 +147,9 @@ private void startFilling() { // Send the point to the Talon's buffer tcd.leftMaster.canTalon.pushMotionProfileTrajectory(point); + + point.velocity = point.velocity * -1; + tcd.rightMaster.canTalon.pushMotionProfileTrajectory(point); } diff --git a/src/main/resources/map.cfg b/src/main/resources/map.cfg index ffe9b03c..a8957012 100644 --- a/src/main/resources/map.cfg +++ b/src/main/resources/map.cfg @@ -60,7 +60,7 @@ drive { kP0: 0.0005 kI0: 0.1 kD0: 3.0 - kP1: 0.2 + kP1: 0.8 kI1: 0.0 kD1: 0.0 max_speed: 12.0127 @@ -87,7 +87,7 @@ drive { kP0: 0.0005 kI0: 0.1 kD0: 3.0 - kP1: 0.2 + kP1: 0.8 kI1: 0.0 kD1: 0.0 max_speed: 12.0127 diff --git a/src/main/resources/profile.csv b/src/main/resources/profile.csv index 6f4ba22b..fa391a2b 100644 --- a/src/main/resources/profile.csv +++ b/src/main/resources/profile.csv @@ -1,371 +1,1196 @@ -370 -0, 0, 10, -1.09289617486339E-05, 0.00218579234972678, 10, -4.91803278688525E-05, 0.00546448087431694, 10, -0.00012568306010929, 0.00983606557377049, 10, -0.000251366120218579, 0.0153005464480874, 10, -0.000437158469945355, 0.0218579234972678, 10, -0.000693989071038251, 0.0295081967213115, 10, -0.0010327868852459, 0.0382513661202186, 10, -0.00146448087431694, 0.0480874316939891, 10, -0.002, 0.059016393442623, 10, -0.00265027322404372, 0.0710382513661202, 10, -0.00342622950819672, 0.0841530054644809, 10, -0.00433879781420765, 0.0983606557377049, 10, -0.00539890710382514, 0.113661202185792, 10, -0.00661748633879781, 0.130054644808743, 10, -0.00800546448087432, 0.147540983606557, 10, -0.00957377049180328, 0.166120218579235, 10, -0.0113333333333333, 0.185792349726776, 10, -0.0132950819672131, 0.20655737704918, 10, -0.0154699453551913, 0.228415300546448, 10, -0.0178688524590164, 0.251366120218579, 10, -0.0205027322404372, 0.275409836065574, 10, -0.0233825136612022, 0.300546448087432, 10, -0.0265191256830601, 0.326775956284153, 10, -0.0299234972677596, 0.354098360655738, 10, -0.0336065573770492, 0.382513661202186, 10, -0.0375792349726776, 0.412021857923497, 10, -0.0418524590163934, 0.442622950819672, 10, -0.0464371584699454, 0.47431693989071, 10, -0.051344262295082, 0.507103825136612, 10, -0.0565846994535519, 0.540983606557377, 10, -0.0621693989071038, 0.575956284153006, 10, -0.0681092896174864, 0.612021857923497, 10, -0.0744153005464481, 0.649180327868853, 10, -0.0810983606557377, 0.687431693989071, 10, -0.0881693989071038, 0.726775956284153, 10, -0.0956393442622951, 0.767213114754098, 10, -0.10351912568306, 0.808743169398907, 10, -0.111819672131148, 0.851366120218579, 10, -0.120551912568306, 0.895081967213115, 10, -0.129726775956284, 0.939890710382514, 10, -0.139355191256831, 0.985792349726776, 10, -0.149448087431694, 1.0327868852459, 10, -0.160016393442623, 1.08087431693989, 10, -0.171071038251366, 1.13005464480874, 10, -0.182622950819672, 1.18032786885246, 10, -0.19468306010929, 1.23169398907104, 10, -0.207262295081967, 1.28415300546448, 10, -0.220371584699454, 1.33770491803279, 10, -0.234021857923497, 1.39234972677596, 10, -0.248224043715847, 1.44808743169399, 10, -0.262989071038251, 1.50491803278689, 10, -0.278327868852459, 1.56284153005465, 10, -0.294251366120219, 1.62185792349727, 10, -0.310770491803279, 1.68196721311475, 10, -0.327896174863388, 1.7431693989071, 10, -0.345639344262295, 1.80546448087432, 10, -0.364010928961749, 1.86885245901639, 10, -0.383021857923497, 1.93333333333333, 10, -0.40268306010929, 1.99890710382514, 10, -0.423005464480875, 2.0655737704918, 10, -0.443983606557377, 2.13005464480874, 10, -0.465601092896175, 2.19344262295082, 10, -0.487846994535519, 2.25573770491803, 10, -0.510710382513661, 2.31693989071038, 10, -0.534180327868853, 2.37704918032787, 10, -0.558245901639345, 2.43606557377049, 10, -0.582896174863388, 2.49398907103825, 10, -0.608120218579235, 2.55081967213115, 10, -0.633907103825137, 2.60655737704918, 10, -0.660245901639344, 2.66120218579235, 10, -0.68712568306011, 2.71475409836066, 10, -0.714535519125683, 2.7672131147541, 10, -0.742464480874317, 2.81857923497268, 10, -0.770901639344263, 2.86885245901639, 10, -0.799836065573771, 2.91803278688525, 10, -0.829256830601093, 2.96612021857924, 10, -0.859153005464481, 3.01311475409836, 10, -0.889513661202186, 3.05901639344262, 10, -0.920327868852459, 3.10382513661202, 10, -0.951584699453552, 3.14754098360656, 10, -0.983273224043716, 3.19016393442623, 10, -1.0153825136612, 3.23169398907104, 10, -1.04790163934426, 3.27213114754099, 10, -1.08081967213115, 3.31147540983607, 10, -1.11412568306011, 3.34972677595629, 10, -1.1478087431694, 3.38688524590164, 10, -1.18185792349727, 3.42295081967213, 10, -1.21626229508197, 3.45792349726776, 10, -1.25101092896175, 3.49180327868853, 10, -1.28609289617486, 3.52459016393443, 10, -1.32149726775956, 3.55628415300547, 10, -1.3572131147541, 3.58688524590164, 10, -1.39322950819672, 3.61639344262295, 10, -1.42953551912568, 3.6448087431694, 10, -1.46612021857924, 3.67213114754099, 10, -1.50297267759563, 3.69836065573771, 10, -1.54008196721312, 3.72349726775956, 10, -1.57743715846995, 3.74754098360656, 10, -1.61502732240437, 3.77049180327869, 10, -1.65284153005465, 3.79234972677596, 10, -1.69086885245902, 3.81311475409836, 10, -1.72909836065574, 3.8327868852459, 10, -1.76751912568306, 3.85136612021858, 10, -1.80612021857924, 3.86885245901639, 10, -1.84489071038251, 3.88524590163935, 10, -1.88381967213115, 3.90054644808743, 10, -1.92289617486339, 3.91475409836066, 10, -1.96210928961749, 3.92786885245902, 10, -2.00144808743169, 3.93989071038251, 10, -2.04090163934426, 3.95081967213115, 10, -2.08045901639344, 3.96065573770492, 10, -2.12010928961749, 3.96939890710383, 10, -2.15984153005465, 3.97704918032787, 10, -2.19964480874317, 3.98360655737705, 10, -2.23950819672131, 3.98907103825137, 10, -2.27942076502732, 3.99344262295082, 10, -2.31937158469945, 3.99672131147541, 10, -2.35934972677596, 3.99890710382514, 10, -2.39934426229508, 4, 10, -2.43934426229508, 4, 10, -2.47934426229508, 4, 10, -2.51934426229508, 4, 10, -2.55934426229508, 4, 10, -2.59934426229508, 4, 10, -2.63934426229508, 4, 10, -2.67934426229508, 4, 10, -2.71934426229508, 4, 10, -2.75934426229508, 4, 10, -2.79934426229508, 4, 10, -2.83934426229508, 4, 10, -2.87934426229508, 4, 10, -2.91934426229508, 4, 10, -2.95934426229508, 4, 10, -2.99934426229508, 4, 10, -3.03934426229508, 4, 10, -3.07934426229508, 4, 10, -3.11934426229508, 4, 10, -3.15934426229508, 4, 10, -3.19934426229508, 4, 10, -3.23934426229508, 4, 10, -3.27934426229508, 4, 10, -3.31934426229508, 4, 10, -3.35934426229508, 4, 10, -3.39934426229508, 4, 10, -3.43934426229508, 4, 10, -3.47934426229508, 4, 10, -3.51934426229508, 4, 10, -3.55934426229508, 4, 10, -3.59934426229508, 4, 10, -3.63934426229508, 4, 10, -3.67934426229508, 4, 10, -3.71934426229508, 4, 10, -3.75934426229508, 4, 10, -3.79934426229508, 4, 10, -3.83934426229508, 4, 10, -3.87934426229508, 4, 10, -3.91934426229508, 4, 10, -3.95934426229508, 4, 10, -3.99934426229508, 4, 10, -4.03934426229508, 4, 10, -4.07934426229508, 4, 10, -4.11934426229508, 4, 10, -4.15934426229508, 4, 10, -4.19934426229508, 4, 10, -4.23934426229508, 4, 10, -4.27934426229508, 4, 10, -4.31934426229508, 4, 10, -4.35934426229508, 4, 10, -4.39934426229508, 4, 10, -4.43934426229508, 4, 10, -4.47934426229508, 4, 10, -4.51934426229508, 4, 10, -4.55934426229508, 4, 10, -4.59934426229508, 4, 10, -4.63934426229508, 4, 10, -4.67934426229508, 4, 10, -4.71934426229508, 4, 10, -4.75934426229508, 4, 10, -4.79934426229508, 4, 10, -4.83934426229508, 4, 10, -4.87934426229508, 4, 10, -4.91934426229508, 4, 10, -4.95934426229508, 4, 10, -4.99934426229508, 4, 10, -5.03934426229509, 4, 10, -5.07934426229509, 4, 10, -5.11934426229509, 4, 10, -5.15934426229509, 4, 10, -5.19934426229509, 4, 10, -5.23934426229509, 4, 10, -5.27934426229509, 4, 10, -5.31934426229509, 4, 10, -5.35934426229509, 4, 10, -5.39934426229509, 4, 10, -5.43934426229509, 4, 10, -5.47934426229509, 4, 10, -5.51934426229509, 4, 10, -5.55934426229509, 4, 10, -5.59934426229509, 4, 10, -5.63934426229509, 4, 10, -5.67934426229509, 4, 10, -5.71934426229509, 4, 10, -5.75934426229509, 4, 10, -5.79934426229509, 4, 10, -5.83934426229509, 4, 10, -5.87934426229509, 4, 10, -5.91934426229509, 4, 10, -5.95934426229509, 4, 10, -5.99934426229509, 4, 10, -6.03934426229509, 4, 10, -6.07934426229509, 4, 10, -6.11934426229509, 4, 10, -6.15934426229509, 4, 10, -6.19934426229509, 4, 10, -6.23934426229509, 4, 10, -6.27934426229509, 4, 10, -6.31934426229509, 4, 10, -6.35934426229509, 4, 10, -6.39934426229509, 4, 10, -6.43934426229509, 4, 10, -6.47934426229509, 4, 10, -6.51934426229509, 4, 10, -6.55934426229509, 4, 10, -6.59934426229509, 4, 10, -6.63934426229509, 4, 10, -6.67934426229509, 4, 10, -6.71934426229509, 4, 10, -6.75934426229509, 4, 10, -6.79934426229509, 4, 10, -6.83934426229509, 4, 10, -6.87934426229509, 4, 10, -6.91934426229509, 4, 10, -6.95934426229509, 4, 10, -6.99934426229509, 4, 10, -7.03934426229509, 4, 10, -7.07934426229509, 4, 10, -7.11934426229509, 4, 10, -7.15934426229509, 4, 10, -7.19934426229509, 4, 10, -7.23934426229509, 4, 10, -7.27934426229509, 4, 10, -7.31934426229509, 4, 10, -7.35934426229509, 4, 10, -7.39934426229509, 4, 10, -7.43934426229509, 4, 10, -7.47934426229509, 4, 10, -7.51934426229509, 4, 10, -7.55934426229509, 4, 10, -7.59934426229509, 4, 10, -7.63934426229509, 4, 10, -7.67933333333334, 3.99781420765027, 10, -7.71929508196722, 3.99453551912568, 10, -7.75921857923498, 3.99016393442623, 10, -7.79909289617487, 3.98469945355191, 10, -7.83890710382514, 3.97814207650273, 10, -7.87865027322405, 3.97049180327869, 10, -7.91831147540984, 3.96174863387978, 10, -7.95787978142077, 3.95191256830601, 10, -7.99734426229509, 3.94098360655738, 10, -8.03669398907104, 3.92896174863388, 10, -8.07591803278689, 3.91584699453552, 10, -8.11500546448088, 3.90163934426229, 10, -8.15394535519126, 3.88633879781421, 10, -8.19272677595629, 3.86994535519126, 10, -8.23133879781421, 3.85245901639344, 10, -8.26977049180329, 3.83387978142076, 10, -8.30801092896175, 3.81420765027322, 10, -8.34604918032788, 3.79344262295082, 10, -8.3838743169399, 3.77158469945355, 10, -8.42147540983607, 3.74863387978142, 10, -8.45884153005465, 3.72459016393443, 10, -8.49596174863388, 3.69945355191257, 10, -8.53282513661203, 3.67322404371585, 10, -8.56942076502733, 3.64590163934426, 10, -8.60573770491804, 3.61748633879781, 10, -8.64176502732241, 3.5879781420765, 10, -8.67749180327869, 3.55737704918033, 10, -8.71290710382514, 3.52568306010929, 10, -8.74800000000001, 3.49289617486339, 10, -8.78275956284154, 3.45901639344262, 10, -8.81717486338798, 3.42404371584699, 10, -8.8512349726776, 3.3879781420765, 10, -8.88492896174864, 3.35081967213115, 10, -8.91824590163935, 3.31256830601093, 10, -8.95117486338799, 3.27322404371584, 10, -8.98370491803279, 3.2327868852459, 10, -9.01582513661203, 3.19125683060109, 10, -9.04752459016394, 3.14863387978142, 10, -9.07879234972678, 3.10491803278688, 10, -9.1096174863388, 3.06010928961748, 10, -9.13998907103826, 3.01420765027322, 10, -9.16989617486339, 2.9672131147541, 10, -9.19932786885247, 2.91912568306011, 10, -9.22827322404372, 2.86994535519125, 10, -9.25672131147542, 2.81967213114754, 10, -9.2846612021858, 2.76830601092896, 10, -9.31208196721312, 2.71584699453552, 10, -9.33897267759563, 2.66229508196721, 10, -9.36532240437159, 2.60765027322404, 10, -9.39112021857924, 2.55191256830601, 10, -9.41635519125684, 2.49508196721311, 10, -9.44101639344263, 2.43715846994535, 10, -9.46509289617487, 2.37814207650273, 10, -9.48857377049181, 2.31803278688524, 10, -9.5114480874317, 2.25683060109289, 10, -9.53370491803279, 2.19453551912568, 10, -9.55533333333334, 2.1311475409836, 10, -9.57632240437159, 2.06666666666666, 10, -9.5966612021858, 2.00109289617486, 10, -9.61633879781421, 1.93442622950819, 10, -9.63536065573771, 1.86994535519125, 10, -9.65374316939891, 1.80655737704918, 10, -9.67149726775957, 1.74426229508196, 10, -9.68863387978143, 1.68306010928961, 10, -9.70516393442624, 1.62295081967213, 10, -9.72109836065574, 1.5639344262295, 10, -9.7364480874317, 1.50601092896174, 10, -9.75122404371585, 1.44918032786885, 10, -9.76543715846995, 1.39344262295082, 10, -9.77909836065574, 1.33879781420765, 10, -9.79221857923498, 1.28524590163934, 10, -9.8048087431694, 1.2327868852459, 10, -9.81687978142077, 1.18142076502732, 10, -9.82844262295082, 1.1311475409836, 10, -9.83950819672132, 1.08196721311475, 10, -9.85008743169399, 1.03387978142076, 10, -9.86019125683061, 0.986885245901635, 10, -9.8698306010929, 0.940983606557373, 10, -9.87901639344263, 0.896174863387974, 10, -9.88775956284153, 0.852459016393439, 10, -9.89607103825137, 0.809836065573767, 10, -9.90396174863388, 0.768306010928958, 10, -9.91144262295082, 0.727868852459013, 10, -9.91852459016394, 0.688524590163931, 10, -9.92521857923498, 0.650273224043713, 10, -9.93153551912569, 0.613114754098357, 10, -9.93748633879782, 0.577049180327866, 10, -9.94308196721312, 0.542076502732238, 10, -9.94833333333334, 0.508196721311473, 10, -9.95325136612022, 0.475409836065571, 10, -9.95784699453552, 0.443715846994533, 10, -9.96213114754099, 0.413114754098358, 10, -9.96611475409837, 0.383606557377047, 10, -9.9698087431694, 0.355191256830599, 10, -9.97322404371585, 0.327868852459014, 10, -9.97637158469946, 0.301639344262293, 10, -9.97926229508197, 0.276502732240435, 10, -9.98190710382514, 0.252459016393441, 10, -9.98431693989072, 0.22950819672131, 10, -9.98650273224044, 0.207650273224042, 10, -9.98847540983607, 0.186885245901638, 10, -9.99024590163935, 0.167213114754097, 10, -9.99182513661203, 0.148633879781419, 10, -9.99322404371585, 0.131147540983605, 10, -9.99445355191257, 0.114754098360654, 10, -9.99552459016394, 0.0994535519125671, 10, -9.9964480874317, 0.0852459016393431, 10, -9.9972349726776, 0.0721311475409826, 10, -9.99789617486339, 0.0601092896174854, 10, -9.99844262295082, 0.0491803278688516, 10, -9.99888524590164, 0.0393442622950812, 10, -9.9992349726776, 0.0306010928961742, 10, -9.99950273224044, 0.0229508196721306, 10, -9.99969945355192, 0.0163934426229504, 10, -9.99983606557378, 0.0109289617486335, 10, -9.99992349726777, 0.00655737704918005, 10, -9.99997267759563, 0.00327868852458998, 10, -9.99999453551913, 0.0010928961748633, 10, -10, 0, 10, \ No newline at end of file +1195 +0.0025, 0.09999999999999999, 0.05, +0.010000000000000002, 0.15000000000000002, 0.05, +0.0225, 0.24999999999999994, 0.05, +0.03999999999999996, 0.3499999999999992, 0.05, +0.06249999999999989, 0.44999999999999857, 0.05, +0.08999999999999982, 0.5499999999999985, 0.05, +0.12249999999999973, 0.6499999999999984, 0.05, +0.15999999999999967, 0.7499999999999987, 0.05, +0.2024999999999996, 0.8499999999999985, 0.05, +0.24999999999999944, 0.949999999999997, 0.05, +0.30249999999999927, 1.0499999999999965, 0.05, +0.3599999999999991, 1.1499999999999966, 0.05, +0.4225000000000003, 1.2500000000000244, 0.05, +0.49000000000000316, 1.3500000000000567, 0.05, +0.5625000000000061, 1.450000000000059, 0.05, +0.6400000000000093, 1.5500000000000647, 0.05, +0.7225000000000127, 1.650000000000067, 0.05, +0.8075000000000162, 1.7000000000000703, 0.05, +0.8925000000000195, 1.700000000000066, 0.05, +0.9775000000000228, 1.700000000000066, 0.05, +1.0625000000000266, 1.7000000000000748, 0.05, +1.14750000000003, 1.700000000000066, 0.05, +1.2325000000000335, 1.7000000000000703, 0.05, +1.3175000000000368, 1.700000000000066, 0.05, +1.4025000000000403, 1.7000000000000703, 0.05, +1.4875000000000436, 1.700000000000066, 0.05, +1.5725000000000473, 1.7000000000000748, 0.05, +1.6575000000000504, 1.7000000000000615, 0.05, +1.742500000000054, 1.7000000000000703, 0.05, +1.8275000000000574, 1.7000000000000703, 0.05, +1.912500000000061, 1.7000000000000703, 0.05, +1.9975000000000642, 1.700000000000066, 0.05, +2.082500000000068, 1.7000000000000703, 0.05, +2.167500000000071, 1.7000000000000615, 0.05, +2.2525000000000746, 1.7000000000000703, 0.05, +2.3375000000000776, 1.7000000000000615, 0.05, +2.422500000000081, 1.7000000000000703, 0.05, +2.5075000000000847, 1.7000000000000703, 0.05, +2.592500000000088, 1.7000000000000703, 0.05, +2.6775000000000917, 1.7000000000000703, 0.05, +2.762500000000095, 1.7000000000000703, 0.05, +2.8475000000000987, 1.7000000000000703, 0.05, +2.9325000000001022, 1.7000000000000703, 0.05, +3.0175000000001058, 1.7000000000000703, 0.05, +3.102500000000109, 1.7000000000000615, 0.05, +3.187500000000091, 1.699999999999644, 0.05, +3.2725000000000644, 1.6999999999994664, 0.05, +3.357500000000039, 1.699999999999493, 0.05, +3.4425000000000123, 1.6999999999994664, 0.05, +3.527499999999986, 1.6999999999994753, 0.05, +3.6124999999999603, 1.6999999999994841, 0.05, +3.697499999999934, 1.6999999999994753, 0.05, +3.7824999999999083, 1.6999999999994841, 0.05, +3.867499999999882, 1.6999999999994753, 0.05, +3.9524999999998562, 1.6999999999994841, 0.05, +4.03749999999983, 1.6999999999994753, 0.05, +4.122499999999803, 1.6999999999994664, 0.05, +4.207499999999778, 1.699999999999502, 0.05, +4.292499999999752, 1.6999999999994664, 0.05, +4.377499999999726, 1.6999999999994841, 0.05, +4.462499999999699, 1.6999999999994664, 0.05, +4.5474999999996735, 1.6999999999994841, 0.05, +4.632499999999648, 1.6999999999994841, 0.05, +4.717499999999621, 1.6999999999994664, 0.05, +4.802499999999595, 1.6999999999994841, 0.05, +4.8874999999995685, 1.6999999999994664, 0.05, +4.972499999999544, 1.699999999999502, 0.05, +5.057499999999517, 1.6999999999994664, 0.05, +5.142499999999491, 1.6999999999994841, 0.05, +5.2274999999994645, 1.6999999999994664, 0.05, +5.31249999999944, 1.699999999999502, 0.05, +5.397499999999413, 1.6999999999994664, 0.05, +5.482499999999387, 1.6999999999994841, 0.05, +5.56749999999936, 1.6999999999994664, 0.05, +5.652499999999335, 1.6999999999994841, 0.05, +5.737499999999309, 1.6999999999994841, 0.05, +5.822499999999282, 1.6999999999994664, 0.05, +5.907499999999256, 1.6999999999994841, 0.05, +5.9924999999992306, 1.6999999999994841, 0.05, +6.077499999999205, 1.6999999999994841, 0.05, +6.162499999999178, 1.6999999999994664, 0.05, +6.247499999999151, 1.6999999999994664, 0.05, +6.332499999999184, 1.7000000000006565, 0.05, +6.417499999999218, 1.7000000000006743, 0.05, +6.502499999999248, 1.7000000000006033, 0.05, +6.587499999999282, 1.7000000000006743, 0.05, +6.6724999999993155, 1.7000000000006743, 0.05, +6.757499999999349, 1.7000000000006743, 0.05, +6.84249999999938, 1.700000000000621, 0.05, +6.927499999999414, 1.7000000000006743, 0.05, +7.012499999999448, 1.7000000000006743, 0.05, +7.09749999999948, 1.7000000000006388, 0.05, +7.1824999999995125, 1.7000000000006565, 0.05, +7.267499999999546, 1.7000000000006743, 0.05, +7.35249999999958, 1.7000000000006743, 0.05, +7.437499999999612, 1.7000000000006388, 0.05, +7.522499999999644, 1.7000000000006388, 0.05, +7.6074999999996775, 1.7000000000006743, 0.05, +7.69249999999971, 1.7000000000006565, 0.05, +7.777499999999744, 1.7000000000006743, 0.05, +7.862499999999776, 1.7000000000006388, 0.05, +7.94749999999981, 1.7000000000006743, 0.05, +8.032499999999843, 1.7000000000006388, 0.05, +8.117499999999877, 1.700000000000692, 0.05, +8.20249999999991, 1.7000000000006565, 0.05, +8.287499999999945, 1.700000000000692, 0.05, +8.37249999999998, 1.700000000000692, 0.05, +8.457500000000012, 1.7000000000006565, 0.05, +8.542500000000047, 1.700000000000692, 0.05, +8.62750000000008, 1.7000000000006565, 0.05, +8.712500000000114, 1.700000000000692, 0.05, +8.797500000000149, 1.700000000000692, 0.05, +8.882500000000181, 1.7000000000006565, 0.05, +8.967500000000214, 1.7000000000006565, 0.05, +9.052500000000249, 1.700000000000692, 0.05, +9.137500000000284, 1.700000000000692, 0.05, +9.222500000000315, 1.700000000000621, 0.05, +9.307500000000351, 1.7000000000007276, 0.05, +9.392500000000384, 1.7000000000006565, 0.05, +9.477500000000417, 1.7000000000006565, 0.05, +9.562500000000451, 1.700000000000692, 0.05, +9.647500000000486, 1.700000000000692, 0.05, +9.73250000000052, 1.700000000000692, 0.05, +9.817500000000553, 1.7000000000006565, 0.05, +9.902500000000586, 1.7000000000006565, 0.05, +9.98750000000062, 1.700000000000692, 0.05, +10.072500000000655, 1.700000000000692, 0.05, +10.157500000000686, 1.700000000000621, 0.05, +10.242500000000723, 1.7000000000007276, 0.05, +10.327500000000756, 1.7000000000006565, 0.05, +10.41250000000079, 1.700000000000692, 0.05, +10.497500000000823, 1.7000000000006565, 0.05, +10.582500000000858, 1.700000000000692, 0.05, +10.667500000000892, 1.700000000000692, 0.05, +10.752500000000925, 1.7000000000006565, 0.05, +10.837500000000958, 1.7000000000006565, 0.05, +10.922500000000992, 1.700000000000692, 0.05, +11.007500000001027, 1.700000000000692, 0.05, +11.09250000000106, 1.7000000000006565, 0.05, +11.177500000001094, 1.700000000000692, 0.05, +11.262500000001127, 1.7000000000006565, 0.05, +11.347500000001162, 1.700000000000692, 0.05, +11.432500000001196, 1.700000000000692, 0.05, +11.517500000001228, 1.700000000000621, 0.05, +11.602500000001262, 1.700000000000692, 0.05, +11.687500000001297, 1.700000000000692, 0.05, +11.772500000001331, 1.700000000000692, 0.05, +11.857500000001364, 1.7000000000006565, 0.05, +11.942500000001399, 1.700000000000692, 0.05, +12.027500000001432, 1.7000000000006565, 0.05, +12.112500000001466, 1.700000000000692, 0.05, +12.197500000001499, 1.7000000000006565, 0.05, +12.282500000001532, 1.7000000000006565, 0.05, +12.367500000001568, 1.7000000000007276, 0.05, +12.452500000001601, 1.7000000000006565, 0.05, +12.537500000001584, 1.6999999999996618, 0.05, +12.622500000001496, 1.6999999999982407, 0.05, +12.707500000001412, 1.6999999999983118, 0.05, +12.792500000001331, 1.6999999999983828, 0.05, +12.877500000001243, 1.6999999999982407, 0.05, +12.962500000001162, 1.6999999999983828, 0.05, +13.047500000001078, 1.6999999999983118, 0.05, +13.132500000000991, 1.6999999999982762, 0.05, +13.217500000000909, 1.6999999999983473, 0.05, +13.302500000000824, 1.6999999999983118, 0.05, +13.38750000000074, 1.6999999999983118, 0.05, +13.472500000000656, 1.6999999999983118, 0.05, +13.557500000000573, 1.6999999999983473, 0.05, +13.64250000000049, 1.6999999999983473, 0.05, +13.727500000000404, 1.6999999999982762, 0.05, +13.81250000000032, 1.6999999999983118, 0.05, +13.897500000000237, 1.6999999999983473, 0.05, +13.982500000000151, 1.6999999999982762, 0.05, +14.067500000000067, 1.6999999999983118, 0.05, +14.152499999999986, 1.6999999999983828, 0.05, +14.237499999999898, 1.6999999999982407, 0.05, +14.322499999999813, 1.6999999999983118, 0.05, +14.407499999999732, 1.6999999999983828, 0.05, +14.492499999999644, 1.6999999999982407, 0.05, +14.577499999999564, 1.6999999999983828, 0.05, +14.66249999999948, 1.6999999999983118, 0.05, +14.747499999999391, 1.6999999999982407, 0.05, +14.83249999999931, 1.6999999999983828, 0.05, +14.917499999999226, 1.6999999999983118, 0.05, +15.00249999999914, 1.6999999999982762, 0.05, +15.087499999999057, 1.6999999999983473, 0.05, +15.172499999998973, 1.6999999999983118, 0.05, +15.257499999998888, 1.6999999999983118, 0.05, +15.342499999998804, 1.6999999999983118, 0.05, +15.42749999999872, 1.6999999999983118, 0.05, +15.512499999998639, 1.6999999999983828, 0.05, +15.597499999998552, 1.6999999999982762, 0.05, +15.682499999998468, 1.6999999999983118, 0.05, +15.767499999998385, 1.6999999999983473, 0.05, +15.8524999999983, 1.6999999999982762, 0.05, +15.937499999998217, 1.6999999999983473, 0.05, +16.02249999999813, 1.6999999999982407, 0.05, +16.107499999998044, 1.6999999999983118, 0.05, +16.19249999999796, 1.6999999999983118, 0.05, +16.27749999999788, 1.6999999999983828, 0.05, +16.362499999997794, 1.6999999999983118, 0.05, +16.44749999999771, 1.6999999999983118, 0.05, +16.532499999997626, 1.6999999999983118, 0.05, +16.61749999999754, 1.6999999999983118, 0.05, +16.702499999997457, 1.6999999999983118, 0.05, +16.787499999997372, 1.6999999999983118, 0.05, +16.87249999999729, 1.6999999999983828, 0.05, +16.957499999997204, 1.6999999999982407, 0.05, +17.04249999999712, 1.6999999999983118, 0.05, +17.12749999999704, 1.6999999999983828, 0.05, +17.21249999999695, 1.6999999999982407, 0.05, +17.29749999999687, 1.6999999999983828, 0.05, +17.382499999996785, 1.6999999999983118, 0.05, +17.4674999999967, 1.6999999999983118, 0.05, +17.552499999996616, 1.6999999999983118, 0.05, +17.637499999996532, 1.6999999999983118, 0.05, +17.722499999996447, 1.6999999999983118, 0.05, +17.807499999996363, 1.6999999999983118, 0.05, +17.89249999999628, 1.6999999999983118, 0.05, +17.977499999996198, 1.6999999999983828, 0.05, +18.06249999999611, 1.6999999999982407, 0.05, +18.147499999996025, 1.6999999999983118, 0.05, +18.232499999995945, 1.6999999999983828, 0.05, +18.317499999995857, 1.6999999999982407, 0.05, +18.402499999995772, 1.6999999999983118, 0.05, +18.48749999999569, 1.6999999999983828, 0.05, +18.572499999995603, 1.6999999999982407, 0.05, +18.657499999995522, 1.6999999999983828, 0.05, +18.742499999995438, 1.6999999999983118, 0.05, +18.82749999999535, 1.6999999999982407, 0.05, +18.91249999999527, 1.6999999999983828, 0.05, +18.997499999995185, 1.6999999999983118, 0.05, +19.082499999995097, 1.6999999999982407, 0.05, +19.167499999995016, 1.6999999999983828, 0.05, +19.25249999999493, 1.6999999999983118, 0.05, +19.337499999994844, 1.6999999999982407, 0.05, +19.422499999994763, 1.6999999999983828, 0.05, +19.50749999999468, 1.6999999999983118, 0.05, +19.592499999994597, 1.6999999999983828, 0.05, +19.67749999999451, 1.6999999999982407, 0.05, +19.762499999994425, 1.6999999999983118, 0.05, +19.847499999994344, 1.6999999999983828, 0.05, +19.932499999994256, 1.6999999999982407, 0.05, +20.017499999994172, 1.6999999999983118, 0.05, +20.10249999999409, 1.6999999999983828, 0.05, +20.187499999994007, 1.6999999999983118, 0.05, +20.272499999993922, 1.6999999999983118, 0.05, +20.357499999993838, 1.6999999999983118, 0.05, +20.442499999993753, 1.6999999999983118, 0.05, +20.52749999999367, 1.6999999999983118, 0.05, +20.612499999993585, 1.6999999999983118, 0.05, +20.6974999999935, 1.6999999999983118, 0.05, +20.78249999999342, 1.6999999999983828, 0.05, +20.867499999993335, 1.6999999999983118, 0.05, +20.95249999999325, 1.6999999999983118, 0.05, +21.037499999993166, 1.6999999999983118, 0.05, +21.12249999999308, 1.6999999999983118, 0.05, +21.207499999992997, 1.6999999999983118, 0.05, +21.292499999992913, 1.6999999999983118, 0.05, +21.37749999999283, 1.6999999999983118, 0.05, +21.462499999992744, 1.6999999999983118, 0.05, +21.54749999999266, 1.6999999999983118, 0.05, +21.63249999999258, 1.6999999999983828, 0.05, +21.717499999992494, 1.6999999999983118, 0.05, +21.802499999992406, 1.6999999999982407, 0.05, +21.887499999992325, 1.6999999999983828, 0.05, +21.97249999999224, 1.6999999999983118, 0.05, +22.057499999992153, 1.6999999999982407, 0.05, +22.142499999992072, 1.6999999999983828, 0.05, +22.227499999991988, 1.6999999999983118, 0.05, +22.312499999991903, 1.6999999999983118, 0.05, +22.39749999999182, 1.6999999999983118, 0.05, +22.482499999991735, 1.6999999999983118, 0.05, +22.56749999999165, 1.6999999999983118, 0.05, +22.652499999991566, 1.6999999999983118, 0.05, +22.73749999999148, 1.6999999999983118, 0.05, +22.822499999991397, 1.6999999999983118, 0.05, +22.907499999991312, 1.6999999999983118, 0.05, +22.99249999999123, 1.6999999999983828, 0.05, +23.077499999991144, 1.6999999999982407, 0.05, +23.16249999999106, 1.6999999999983118, 0.05, +23.24749999999098, 1.6999999999983828, 0.05, +23.33249999999089, 1.6999999999982407, 0.05, +23.417499999990806, 1.6999999999983118, 0.05, +23.502499999990725, 1.6999999999983828, 0.05, +23.587499999990637, 1.6999999999982407, 0.05, +23.672499999990556, 1.6999999999983828, 0.05, +23.757499999990472, 1.6999999999983118, 0.05, +23.842499999990387, 1.6999999999983118, 0.05, +23.927499999990303, 1.6999999999983118, 0.05, +24.01249999999022, 1.6999999999983118, 0.05, +24.097499999990134, 1.6999999999983118, 0.05, +24.18249999999005, 1.6999999999983118, 0.05, +24.267499999989965, 1.6999999999983118, 0.05, +24.35249999998988, 1.6999999999983118, 0.05, +24.437499999989797, 1.6999999999983118, 0.05, +24.522499999989712, 1.6999999999983118, 0.05, +24.60749999998963, 1.6999999999983828, 0.05, +24.692499999989547, 1.6999999999983118, 0.05, +24.777499999989463, 1.6999999999983118, 0.05, +24.862499999989378, 1.6999999999983118, 0.05, +24.947499999989294, 1.6999999999983118, 0.05, +25.03249999998921, 1.6999999999983118, 0.05, +25.117499999989125, 1.6999999999983118, 0.05, +25.20249999998904, 1.6999999999983118, 0.05, +25.287499999988956, 1.6999999999983118, 0.05, +25.372499999988875, 1.6999999999983828, 0.05, +25.45749999998879, 1.6999999999983118, 0.05, +25.542499999988706, 1.6999999999983118, 0.05, +25.62749999998862, 1.6999999999982407, 0.05, +25.712499999988538, 1.6999999999983828, 0.05, +25.79749999998845, 1.6999999999982407, 0.05, +25.88249999998837, 1.6999999999983828, 0.05, +25.967499999988288, 1.6999999999983828, 0.05, +26.0524999999882, 1.6999999999982407, 0.05, +26.137499999988112, 1.6999999999982407, 0.05, +26.22249999998803, 1.6999999999983828, 0.05, +26.30749999998795, 1.6999999999983828, 0.05, +26.392499999987862, 1.6999999999982407, 0.05, +26.47749999998778, 1.6999999999983828, 0.05, +26.5624999999877, 1.6999999999983828, 0.05, +26.647499999987605, 1.6999999999980986, 0.05, +26.732499999987525, 1.6999999999983828, 0.05, +26.817499999987444, 1.6999999999983828, 0.05, +26.902499999987356, 1.6999999999982407, 0.05, +26.987499999987275, 1.6999999999983828, 0.05, +27.072499999987194, 1.6999999999983828, 0.05, +27.157499999987106, 1.6999999999982407, 0.05, +27.242499999987018, 1.6999999999982407, 0.05, +27.327499999986937, 1.6999999999983828, 0.05, +27.41249999998685, 1.6999999999982407, 0.05, +27.49749999998677, 1.6999999999983828, 0.05, +27.582499999986688, 1.6999999999983828, 0.05, +27.667499999986607, 1.6999999999983828, 0.05, +27.75249999998651, 1.6999999999980986, 0.05, +27.83749999998643, 1.6999999999983828, 0.05, +27.92249999998635, 1.6999999999983828, 0.05, +28.007499999986262, 1.6999999999982407, 0.05, +28.09249999998618, 1.6999999999983828, 0.05, +28.1774999999861, 1.6999999999983828, 0.05, +28.26249999998601, 1.6999999999981696, 0.05, +28.347499999985924, 1.6999999999983118, 0.05, +28.432499999985843, 1.6999999999983828, 0.05, +28.517499999985755, 1.6999999999982407, 0.05, +28.602499999985675, 1.6999999999983828, 0.05, +28.687499999985594, 1.6999999999983828, 0.05, +28.772499999985502, 1.6999999999981696, 0.05, +28.85749999998542, 1.6999999999983828, 0.05, +28.942499999985337, 1.6999999999983118, 0.05, +29.027499999985253, 1.6999999999983118, 0.05, +29.11249999998517, 1.6999999999983828, 0.05, +29.197499999985087, 1.6999999999983118, 0.05, +29.282499999985006, 1.6999999999983828, 0.05, +29.367499999984915, 1.6999999999981696, 0.05, +29.452499999984834, 1.6999999999983828, 0.05, +29.53749999998475, 1.6999999999983118, 0.05, +29.622499999984665, 1.6999999999983118, 0.05, +29.70749999998458, 1.6999999999983118, 0.05, +29.7924999999845, 1.6999999999983828, 0.05, +29.87749999998441, 1.6999999999981696, 0.05, +29.962499999984328, 1.6999999999983828, 0.05, +30.047499999984247, 1.6999999999983828, 0.05, +30.13249999998416, 1.6999999999982407, 0.05, +30.217499999984078, 1.6999999999983828, 0.05, +30.302499999983997, 1.6999999999983828, 0.05, +30.387499999983902, 1.6999999999980986, 0.05, +30.47249999998382, 1.6999999999983828, 0.05, +30.55749999998374, 1.6999999999983828, 0.05, +30.64249999998366, 1.6999999999983828, 0.05, +30.72749999998357, 1.6999999999982407, 0.05, +30.81249999998349, 1.6999999999983828, 0.05, +30.897499999983403, 1.6999999999982407, 0.05, +30.982499999983315, 1.6999999999982407, 0.05, +31.067499999983234, 1.6999999999983828, 0.05, +31.152499999983153, 1.6999999999983828, 0.05, +31.237499999983065, 1.6999999999982407, 0.05, +31.322499999982984, 1.6999999999983828, 0.05, +31.407499999982903, 1.6999999999983828, 0.05, +31.492499999982808, 1.6999999999980986, 0.05, +31.577499999982727, 1.6999999999983828, 0.05, +31.662499999982646, 1.6999999999983828, 0.05, +31.74749999998256, 1.6999999999982407, 0.05, +31.832499999982478, 1.6999999999983828, 0.05, +31.917499999982397, 1.6999999999983828, 0.05, +32.002499999982305, 1.6999999999982407, 0.05, +32.08749999998222, 1.6999999999983118, 0.05, +32.17249999998213, 1.6999999999981696, 0.05, +32.25749999998205, 1.6999999999984539, 0.05, +32.34249999998196, 1.6999999999981696, 0.05, +32.42749999998188, 1.6999999999984539, 0.05, +32.5124999999818, 1.6999999999983118, 0.05, +32.597499999981714, 1.6999999999983118, 0.05, +32.68249999998162, 1.6999999999981696, 0.05, +32.767499999981545, 1.6999999999984539, 0.05, +32.852499999981454, 1.6999999999981696, 0.05, +32.93749999998138, 1.6999999999984539, 0.05, +33.02249999998129, 1.6999999999983118, 0.05, +33.10749999998121, 1.6999999999983118, 0.05, +33.19249999998112, 1.6999999999983118, 0.05, +33.27749999998104, 1.6999999999983118, 0.05, +33.362499999980955, 1.6999999999983118, 0.05, +33.44749999998087, 1.6999999999983118, 0.05, +33.532499999980786, 1.6999999999983118, 0.05, +33.61749999998071, 1.6999999999984539, 0.05, +33.70249999998062, 1.6999999999981696, 0.05, +33.78749999998053, 1.6999999999983118, 0.05, +33.87249999998045, 1.6999999999983118, 0.05, +33.957499999980364, 1.6999999999983118, 0.05, +34.04249999998028, 1.6999999999983118, 0.05, +34.1274999999802, 1.6999999999984539, 0.05, +34.21249999998011, 1.6999999999981696, 0.05, +34.297499999980026, 1.6999999999983118, 0.05, +34.38249999997995, 1.6999999999984539, 0.05, +34.46749999997986, 1.6999999999981696, 0.05, +34.55249999997978, 1.6999999999984539, 0.05, +34.637499999979696, 1.6999999999983118, 0.05, +34.72249999997961, 1.6999999999983118, 0.05, +34.80749999997952, 1.6999999999981696, 0.05, +34.89249999997944, 1.6999999999984539, 0.05, +34.97749999997936, 1.6999999999983118, 0.05, +35.06249999997927, 1.6999999999983118, 0.05, +35.14749999997919, 1.6999999999983118, 0.05, +35.232499999979105, 1.6999999999983118, 0.05, +35.31749999997902, 1.6999999999983118, 0.05, +35.402499999978936, 1.6999999999983118, 0.05, +35.48749999997885, 1.6999999999983118, 0.05, +35.57249999997877, 1.6999999999983118, 0.05, +35.65749999997868, 1.6999999999983118, 0.05, +35.742499999978605, 1.6999999999984539, 0.05, +35.827499999978514, 1.6999999999981696, 0.05, +35.91249999997843, 1.6999999999983118, 0.05, +35.997499999978345, 1.6999999999983118, 0.05, +36.08249999997826, 1.6999999999983118, 0.05, +36.167499999978176, 1.6999999999983118, 0.05, +36.2524999999781, 1.6999999999984539, 0.05, +36.337499999978014, 1.6999999999983118, 0.05, +36.42249999997792, 1.6999999999981696, 0.05, +36.50749999997784, 1.6999999999983118, 0.05, +36.59249999997776, 1.6999999999984539, 0.05, +36.67749999997767, 1.6999999999981696, 0.05, +36.76249999997759, 1.6999999999984539, 0.05, +36.84749999997751, 1.6999999999983118, 0.05, +36.932499999977416, 1.6999999999981696, 0.05, +37.01749999997733, 1.6999999999983118, 0.05, +37.102499999977255, 1.6999999999984539, 0.05, +37.18749999997716, 1.6999999999981696, 0.05, +37.272499999977086, 1.6999999999984539, 0.05, +37.357499999977, 1.6999999999983118, 0.05, +37.44249999997692, 1.6999999999983118, 0.05, +37.527499999976826, 1.6999999999981696, 0.05, +37.61249999997675, 1.6999999999984539, 0.05, +37.697499999976664, 1.6999999999983118, 0.05, +37.78249999997658, 1.6999999999983118, 0.05, +37.867499999976495, 1.6999999999983118, 0.05, +37.95249999997642, 1.6999999999984539, 0.05, +38.037499999976326, 1.6999999999981696, 0.05, +38.12249999997624, 1.6999999999983118, 0.05, +38.20749999997616, 1.6999999999983118, 0.05, +38.29249999997607, 1.6999999999983118, 0.05, +38.37749999997599, 1.6999999999983118, 0.05, +38.46249999997591, 1.6999999999984539, 0.05, +38.54749999997582, 1.6999999999981696, 0.05, +38.632499999975735, 1.6999999999983118, 0.05, +38.71749999997565, 1.6999999999983118, 0.05, +38.802499999975566, 1.6999999999983118, 0.05, +38.88749999997548, 1.6999999999983118, 0.05, +38.972499999975405, 1.6999999999984539, 0.05, +39.05749999997531, 1.6999999999981696, 0.05, +39.14249999997523, 1.6999999999983118, 0.05, +39.22749999997515, 1.6999999999984539, 0.05, +39.31249999997507, 1.6999999999983118, 0.05, +39.39749999997498, 1.6999999999983118, 0.05, +39.4824999999749, 1.6999999999983118, 0.05, +39.567499999974814, 1.6999999999983118, 0.05, +39.65249999997472, 1.6999999999981696, 0.05, +39.737499999974645, 1.6999999999984539, 0.05, +39.82249999997456, 1.6999999999983118, 0.05, +39.907499999974476, 1.6999999999983118, 0.05, +39.99249999997439, 1.6999999999983118, 0.05, +40.077499999974314, 1.6999999999984539, 0.05, +40.162499999974216, 1.6999999999980275, 0.05, +40.24749999997414, 1.6999999999984539, 0.05, +40.332499999974054, 1.6999999999983118, 0.05, +40.41749999997397, 1.6999999999983118, 0.05, +40.502499999973885, 1.6999999999983118, 0.05, +40.58749999997381, 1.6999999999984539, 0.05, +40.67249999997372, 1.6999999999981696, 0.05, +40.75749999997363, 1.6999999999983118, 0.05, +40.84249999997355, 1.6999999999983118, 0.05, +40.92749999997347, 1.6999999999984539, 0.05, +41.01249999997338, 1.6999999999981696, 0.05, +41.0974999999733, 1.6999999999984539, 0.05, +41.18249999997321, 1.6999999999981696, 0.05, +41.267499999973126, 1.6999999999983118, 0.05, +41.35249999997304, 1.6999999999983118, 0.05, +41.437499999972964, 1.6999999999984539, 0.05, +41.52249999997287, 1.6999999999981696, 0.05, +41.607499999972795, 1.6999999999984539, 0.05, +41.69249999997271, 1.6999999999983118, 0.05, +41.77749999997262, 1.6999999999981696, 0.05, +41.862499999972535, 1.6999999999983118, 0.05, +41.94749999997246, 1.6999999999984539, 0.05, +42.03249999997237, 1.6999999999983118, 0.05, +42.11749999997229, 1.6999999999983118, 0.05, +42.202499999972204, 1.6999999999983118, 0.05, +42.28749999997212, 1.6999999999983118, 0.05, +42.372499999972035, 1.6999999999983118, 0.05, +42.45749999997195, 1.6999999999983118, 0.05, +42.54249999997187, 1.6999999999983118, 0.05, +42.62749999997178, 1.6999999999983118, 0.05, +42.7124999999717, 1.6999999999983118, 0.05, +42.79749999997161, 1.6999999999983118, 0.05, +42.88249999997153, 1.6999999999983118, 0.05, +42.967499999971444, 1.6999999999983118, 0.05, +43.05249999997136, 1.6999999999983118, 0.05, +43.137499999971276, 1.6999999999983118, 0.05, +43.22249999997119, 1.6999999999983118, 0.05, +43.30749999997111, 1.6999999999983118, 0.05, +43.39249999997102, 1.6999999999983118, 0.05, +43.47749999997094, 1.6999999999983118, 0.05, +43.56249999997086, 1.6999999999984539, 0.05, +43.647499999970776, 1.6999999999983118, 0.05, +43.73249999997069, 1.6999999999983118, 0.05, +43.81749999997061, 1.6999999999983118, 0.05, +43.90249999997052, 1.6999999999983118, 0.05, +43.98749999997043, 1.6999999999981696, 0.05, +44.072499999970354, 1.6999999999984539, 0.05, +44.15749999997027, 1.6999999999983118, 0.05, +44.242499999970185, 1.6999999999983118, 0.05, +44.3274999999701, 1.6999999999983118, 0.05, +44.41249999997002, 1.6999999999983118, 0.05, +44.497499999969925, 1.6999999999981696, 0.05, +44.58249999996985, 1.6999999999984539, 0.05, +44.66749999996976, 1.6999999999983118, 0.05, +44.75249999996968, 1.6999999999983118, 0.05, +44.837499999969594, 1.6999999999983118, 0.05, +44.92249999996951, 1.6999999999983118, 0.05, +45.007499999969426, 1.6999999999983118, 0.05, +45.09249999996934, 1.6999999999983118, 0.05, +45.17749999996926, 1.6999999999983118, 0.05, +45.26249999996918, 1.6999999999984539, 0.05, +45.34749999996909, 1.6999999999981696, 0.05, +45.432499999969004, 1.6999999999983118, 0.05, +45.51749999996892, 1.6999999999983118, 0.05, +45.602499999968835, 1.6999999999983118, 0.05, +45.68749999996875, 1.6999999999983118, 0.05, +45.77249999996867, 1.6999999999984539, 0.05, +45.85749999996858, 1.6999999999981696, 0.05, +45.942499999968504, 1.6999999999984539, 0.05, +46.02749999996841, 1.6999999999981696, 0.05, +46.11249999996833, 1.6999999999983118, 0.05, +46.197499999968244, 1.6999999999983118, 0.05, +46.28249999996817, 1.6999999999984539, 0.05, +46.36749999996808, 1.6999999999983118, 0.05, +46.452499999968, 1.6999999999983118, 0.05, +46.537499999967906, 1.6999999999981696, 0.05, +46.62249999996783, 1.6999999999984539, 0.05, +46.707499999967744, 1.6999999999983118, 0.05, +46.79249999996766, 1.6999999999983118, 0.05, +46.877499999967576, 1.6999999999983118, 0.05, +46.96249999996749, 1.6999999999983118, 0.05, +47.04749999996741, 1.6999999999983118, 0.05, +47.13249999996732, 1.6999999999983118, 0.05, +47.21749999996724, 1.6999999999983118, 0.05, +47.302499999967154, 1.6999999999983118, 0.05, +47.38749999996707, 1.6999999999983118, 0.05, +47.472499999966985, 1.6999999999983118, 0.05, +47.5574999999669, 1.6999999999983118, 0.05, +47.642499999966816, 1.6999999999983118, 0.05, +47.72749999996673, 1.6999999999983118, 0.05, +47.81249999996665, 1.6999999999983118, 0.05, +47.89749999996656, 1.6999999999983118, 0.05, +47.982499999966485, 1.6999999999984539, 0.05, +48.0674999999664, 1.6999999999983118, 0.05, +48.15249999996631, 1.6999999999981696, 0.05, +48.23749999996623, 1.6999999999984539, 0.05, +48.32249999996614, 1.6999999999981696, 0.05, +48.40749999996606, 1.6999999999984539, 0.05, +48.49249999996598, 1.6999999999983118, 0.05, +48.577499999965895, 1.6999999999983118, 0.05, +48.6624999999658, 1.6999999999981696, 0.05, +48.747499999965726, 1.6999999999984539, 0.05, +48.832499999965634, 1.6999999999981696, 0.05, +48.91749999996556, 1.6999999999984539, 0.05, +49.00249999996547, 1.6999999999983118, 0.05, +49.08749999996539, 1.6999999999983118, 0.05, +49.1724999999653, 1.6999999999981696, 0.05, +49.25749999996522, 1.6999999999984539, 0.05, +49.342499999965135, 1.6999999999983118, 0.05, +49.42749999996505, 1.6999999999983118, 0.05, +49.512499999964966, 1.6999999999983118, 0.05, +49.59749999996489, 1.6999999999984539, 0.05, +49.68249999996479, 1.6999999999980275, 0.05, +49.76749999996471, 1.6999999999984539, 0.05, +49.85249999996463, 1.6999999999983118, 0.05, +49.937499999964544, 1.6999999999983118, 0.05, +50.02249999996459, 1.7000000000008697, 0.05, +50.10749999996498, 1.700000000007833, 0.05, +50.19249999996537, 1.700000000007833, 0.05, +50.27749999996576, 1.700000000007833, 0.05, +50.36249999996614, 1.7000000000075488, 0.05, +50.44749999996653, 1.700000000007833, 0.05, +50.53249999996691, 1.7000000000075488, 0.05, +50.6174999999673, 1.700000000007833, 0.05, +50.70249999996769, 1.700000000007833, 0.05, +50.78749999996808, 1.700000000007691, 0.05, +50.87249999996846, 1.700000000007691, 0.05, +50.95749999996885, 1.700000000007833, 0.05, +51.04249999996924, 1.700000000007691, 0.05, +51.12749999996963, 1.700000000007833, 0.05, +51.21249999997002, 1.700000000007833, 0.05, +51.29749999997041, 1.700000000007833, 0.05, +51.382499999970804, 1.700000000007833, 0.05, +51.46749999997118, 1.7000000000075488, 0.05, +51.55249999997156, 1.7000000000075488, 0.05, +51.63749999997195, 1.700000000007833, 0.05, +51.72249999997234, 1.700000000007833, 0.05, +51.80749999997273, 1.700000000007691, 0.05, +51.89249999997312, 1.700000000007833, 0.05, +51.9774999999735, 1.700000000007691, 0.05, +52.06249999997389, 1.700000000007691, 0.05, +52.14749999997428, 1.700000000007833, 0.05, +52.23249999997467, 1.700000000007833, 0.05, +52.31749999997506, 1.700000000007833, 0.05, +52.402499999975454, 1.700000000007833, 0.05, +52.48749999997583, 1.7000000000075488, 0.05, +52.57249999997622, 1.700000000007833, 0.05, +52.6574999999766, 1.7000000000075488, 0.05, +52.74249999997699, 1.700000000007833, 0.05, +52.827499999977384, 1.700000000007833, 0.05, +52.91249999997777, 1.700000000007691, 0.05, +52.99749999997816, 1.700000000007833, 0.05, +53.08249999997854, 1.7000000000075488, 0.05, +53.16749999997893, 1.700000000007833, 0.05, +53.25249999997932, 1.700000000007833, 0.05, +53.33749999997971, 1.700000000007833, 0.05, +53.422499999980104, 1.700000000007833, 0.05, +53.50749999998049, 1.700000000007691, 0.05, +53.59249999998087, 1.700000000007691, 0.05, +53.67749999998125, 1.7000000000075488, 0.05, +53.76249999998164, 1.700000000007833, 0.05, +53.847499999982034, 1.700000000007833, 0.05, +53.93249999998242, 1.700000000007691, 0.05, +54.01749999998281, 1.700000000007833, 0.05, +54.10249999998319, 1.7000000000075488, 0.05, +54.18749999998358, 1.700000000007833, 0.05, +54.27249999998397, 1.700000000007833, 0.05, +54.35749999998436, 1.700000000007833, 0.05, +54.442499999984754, 1.700000000007833, 0.05, +54.527499999985146, 1.700000000007833, 0.05, +54.61249999998553, 1.700000000007691, 0.05, +54.697499999985915, 1.700000000007691, 0.05, +54.78249999998629, 1.7000000000075488, 0.05, +54.867499999986684, 1.700000000007833, 0.05, +54.952499999987076, 1.700000000007833, 0.05, +55.03749999998746, 1.700000000007691, 0.05, +55.12249999998785, 1.700000000007833, 0.05, +55.20749999998823, 1.7000000000075488, 0.05, +55.29249999998862, 1.700000000007833, 0.05, +55.37749999998901, 1.700000000007833, 0.05, +55.462499999989404, 1.700000000007833, 0.05, +55.547499999989796, 1.700000000007833, 0.05, +55.63249999999018, 1.700000000007691, 0.05, +55.71749999999057, 1.700000000007833, 0.05, +55.80249999999094, 1.7000000000074067, 0.05, +55.887499999991334, 1.700000000007833, 0.05, +55.972499999991726, 1.700000000007833, 0.05, +56.05749999999211, 1.700000000007691, 0.05, +56.1424999999925, 1.700000000007833, 0.05, +56.227499999992894, 1.700000000007833, 0.05, +56.31249999999327, 1.7000000000075488, 0.05, +56.39749999999366, 1.700000000007833, 0.05, +56.482499999994054, 1.700000000007833, 0.05, +56.567499999994446, 1.700000000007833, 0.05, +56.65249999999484, 1.700000000007833, 0.05, +56.73749999999522, 1.700000000007691, 0.05, +56.82249999999561, 1.700000000007691, 0.05, +56.907499999995984, 1.7000000000075488, 0.05, +56.992499999996376, 1.700000000007833, 0.05, +57.07749999999676, 1.700000000007691, 0.05, +57.16249999999715, 1.700000000007833, 0.05, +57.247499999997544, 1.700000000007833, 0.05, +57.332499999997935, 1.700000000007833, 0.05, +57.41749999999831, 1.7000000000075488, 0.05, +57.502499999998705, 1.700000000007833, 0.05, +57.587499999999096, 1.700000000007833, 0.05, +57.67249999999949, 1.700000000007833, 0.05, +57.75749999999987, 1.700000000007691, 0.05, +57.842500000000264, 1.700000000007833, 0.05, +57.927500000000634, 1.7000000000074067, 0.05, +58.012500000001026, 1.700000000007833, 0.05, +58.09750000000141, 1.700000000007691, 0.05, +58.1825000000018, 1.700000000007833, 0.05, +58.267500000002194, 1.700000000007833, 0.05, +58.352500000002586, 1.700000000007833, 0.05, +58.43750000000296, 1.7000000000075488, 0.05, +58.522500000003355, 1.700000000007833, 0.05, +58.607500000003746, 1.700000000007833, 0.05, +58.69250000000414, 1.700000000007833, 0.05, +58.77750000000452, 1.700000000007691, 0.05, +58.862500000004914, 1.700000000007833, 0.05, +58.947500000005306, 1.700000000007833, 0.05, +59.032500000005676, 1.7000000000074067, 0.05, +59.11750000000607, 1.700000000007833, 0.05, +59.20250000000645, 1.700000000007691, 0.05, +59.287500000006844, 1.700000000007833, 0.05, +59.372500000007236, 1.700000000007833, 0.05, +59.45750000000763, 1.700000000007833, 0.05, +59.542500000008005, 1.7000000000075488, 0.05, +59.627500000008396, 1.700000000007833, 0.05, +59.71250000000879, 1.700000000007833, 0.05, +59.79750000000917, 1.700000000007691, 0.05, +59.882500000009564, 1.700000000007833, 0.05, +59.967500000009956, 1.700000000007833, 0.05, +60.05250000001033, 1.7000000000075488, 0.05, +60.13750000001072, 1.700000000007691, 0.05, +60.2225000000111, 1.700000000007691, 0.05, +60.307500000011494, 1.700000000007833, 0.05, +60.392500000011886, 1.700000000007833, 0.05, +60.47750000001228, 1.700000000007833, 0.05, +60.56250000001267, 1.700000000007833, 0.05, +60.647500000013046, 1.7000000000075488, 0.05, +60.73250000001344, 1.700000000007833, 0.05, +60.81750000001383, 1.700000000007833, 0.05, +60.902500000014214, 1.700000000007691, 0.05, +60.987500000014606, 1.700000000007833, 0.05, +61.072500000015, 1.700000000007833, 0.05, +61.15750000001537, 1.7000000000074067, 0.05, +61.24250000001576, 1.700000000007833, 0.05, +61.327500000016144, 1.700000000007691, 0.05, +61.412500000016536, 1.700000000007833, 0.05, +61.49750000001693, 1.700000000007833, 0.05, +61.58250000001732, 1.700000000007833, 0.05, +61.66750000001771, 1.700000000007833, 0.05, +61.75250000001809, 1.7000000000075488, 0.05, +61.83750000001848, 1.700000000007833, 0.05, +61.922500000018864, 1.700000000007691, 0.05, +62.007500000019256, 1.700000000007833, 0.05, +62.09250000001965, 1.700000000007833, 0.05, +62.177500000020025, 1.7000000000075488, 0.05, +62.26250000002041, 1.700000000007691, 0.05, +62.347500000020794, 1.700000000007691, 0.05, +62.432500000021186, 1.700000000007833, 0.05, +62.51750000002158, 1.700000000007833, 0.05, +62.60250000002197, 1.700000000007833, 0.05, +62.68750000002236, 1.700000000007833, 0.05, +62.77250000002274, 1.7000000000075488, 0.05, +62.85750000002313, 1.700000000007833, 0.05, +62.94250000002352, 1.700000000007833, 0.05, +63.027500000023906, 1.700000000007691, 0.05, +63.1125000000243, 1.700000000007833, 0.05, +63.19750000002469, 1.700000000007833, 0.05, +63.28250000002507, 1.7000000000075488, 0.05, +63.367500000025444, 1.7000000000075488, 0.05, +63.452500000025836, 1.700000000007833, 0.05, +63.53750000002623, 1.700000000007833, 0.05, +63.62250000002662, 1.700000000007833, 0.05, +63.70750000002701, 1.700000000007833, 0.05, +63.792500000027395, 1.700000000007691, 0.05, +63.87750000002778, 1.700000000007691, 0.05, +63.96250000002817, 1.700000000007833, 0.05, +64.04750000002855, 1.700000000007691, 0.05, +64.13250000002893, 1.7000000000075488, 0.05, +64.2175000000293, 1.7000000000075488, 0.05, +64.3025000000297, 1.700000000007833, 0.05, +64.38750000003007, 1.7000000000075488, 0.05, +64.47250000003045, 1.7000000000075488, 0.05, +64.55750000003083, 1.7000000000075488, 0.05, +64.64250000003122, 1.700000000007833, 0.05, +64.7275000000316, 1.7000000000075488, 0.05, +64.81250000003197, 1.7000000000075488, 0.05, +64.89750000003237, 1.700000000007833, 0.05, +64.98250000003273, 1.7000000000072646, 0.05, +65.0675000000331, 1.7000000000075488, 0.05, +65.1525000000335, 1.700000000007833, 0.05, +65.23750000003388, 1.7000000000075488, 0.05, +65.32250000003427, 1.700000000007833, 0.05, +65.40750000003464, 1.7000000000075488, 0.05, +65.49250000003501, 1.7000000000072646, 0.05, +65.5775000000354, 1.700000000007833, 0.05, +65.66250000003578, 1.7000000000075488, 0.05, +65.74750000003615, 1.7000000000075488, 0.05, +65.83250000003655, 1.700000000007833, 0.05, +65.91750000003692, 1.7000000000075488, 0.05, +66.0025000000373, 1.7000000000075488, 0.05, +66.08750000003768, 1.7000000000075488, 0.05, +66.17250000003807, 1.700000000007833, 0.05, +66.25750000003845, 1.7000000000075488, 0.05, +66.34250000003883, 1.7000000000075488, 0.05, +66.42750000003922, 1.700000000007833, 0.05, +66.5125000000396, 1.7000000000075488, 0.05, +66.59750000003996, 1.7000000000072646, 0.05, +66.68250000004033, 1.7000000000075488, 0.05, +66.76750000004073, 1.700000000007833, 0.05, +66.8525000000411, 1.7000000000075488, 0.05, +66.9375000000415, 1.700000000007833, 0.05, +67.02250000004187, 1.7000000000075488, 0.05, +67.10750000004226, 1.700000000007833, 0.05, +67.19250000004263, 1.7000000000072646, 0.05, +67.277500000043, 1.7000000000075488, 0.05, +67.3625000000434, 1.700000000007833, 0.05, +67.44750000004377, 1.7000000000075488, 0.05, +67.53250000004415, 1.7000000000075488, 0.05, +67.61750000004453, 1.7000000000075488, 0.05, +67.7025000000449, 1.7000000000075488, 0.05, +67.7875000000453, 1.700000000007833, 0.05, +67.87250000004568, 1.7000000000075488, 0.05, +67.95750000004607, 1.700000000007833, 0.05, +68.04250000004645, 1.7000000000075488, 0.05, +68.12750000004682, 1.7000000000075488, 0.05, +68.21250000004719, 1.7000000000072646, 0.05, +68.29750000004758, 1.700000000007833, 0.05, +68.38250000004795, 1.7000000000075488, 0.05, +68.46750000004833, 1.7000000000075488, 0.05, +68.55250000004872, 1.700000000007833, 0.05, +68.6375000000491, 1.7000000000075488, 0.05, +68.7225000000495, 1.700000000007833, 0.05, +68.80750000004986, 1.7000000000072646, 0.05, +68.89250000005025, 1.700000000007833, 0.05, +68.97750000005063, 1.7000000000075488, 0.05, +69.062500000051, 1.7000000000075488, 0.05, +69.1475000000514, 1.700000000007833, 0.05, +69.23250000005177, 1.7000000000075488, 0.05, +69.31750000005214, 1.7000000000072646, 0.05, +69.40250000005253, 1.700000000007833, 0.05, +69.4875000000529, 1.7000000000075488, 0.05, +69.5725000000533, 1.700000000007833, 0.05, +69.65750000005367, 1.7000000000075488, 0.05, +69.74250000005405, 1.7000000000075488, 0.05, +69.82750000005443, 1.7000000000075488, 0.05, +69.9125000000548, 1.7000000000075488, 0.05, +69.99750000005518, 1.7000000000075488, 0.05, +70.08250000005557, 1.700000000007833, 0.05, +70.16750000005595, 1.7000000000075488, 0.05, +70.25250000005633, 1.7000000000075488, 0.05, +70.3375000000567, 1.7000000000075488, 0.05, +70.4225000000571, 1.700000000007833, 0.05, +70.50750000005748, 1.7000000000075488, 0.05, +70.59250000005785, 1.7000000000075488, 0.05, +70.67750000005825, 1.700000000007833, 0.05, +70.76250000005862, 1.7000000000075488, 0.05, +70.847500000059, 1.7000000000075488, 0.05, +70.93250000005936, 1.7000000000072646, 0.05, +71.01750000005975, 1.700000000007833, 0.05, +71.10250000006013, 1.7000000000075488, 0.05, +71.18750000006052, 1.700000000007833, 0.05, +71.2725000000609, 1.7000000000075488, 0.05, +71.3575000000613, 1.700000000007833, 0.05, +71.44250000006167, 1.7000000000075488, 0.05, +71.52750000006203, 1.7000000000072646, 0.05, +71.61250000006243, 1.700000000007833, 0.05, +71.6975000000628, 1.7000000000075488, 0.05, +71.78250000006318, 1.7000000000075488, 0.05, +71.86750000006356, 1.7000000000075488, 0.05, +71.95250000006395, 1.700000000007833, 0.05, +72.03750000006433, 1.7000000000075488, 0.05, +72.1225000000647, 1.7000000000075488, 0.05, +72.2075000000651, 1.700000000007833, 0.05, +72.29250000006547, 1.7000000000075488, 0.05, +72.37750000006585, 1.7000000000075488, 0.05, +72.46250000006623, 1.7000000000075488, 0.05, +72.5475000000666, 1.7000000000075488, 0.05, +72.63250000006698, 1.7000000000075488, 0.05, +72.71750000006736, 1.7000000000075488, 0.05, +72.80250000006775, 1.700000000007833, 0.05, +72.88750000006813, 1.7000000000075488, 0.05, +72.97250000006851, 1.7000000000075488, 0.05, +73.0575000000689, 1.700000000007833, 0.05, +73.14250000006928, 1.7000000000075488, 0.05, +73.22750000006965, 1.7000000000075488, 0.05, +73.31250000007003, 1.7000000000075488, 0.05, +73.39750000007042, 1.700000000007833, 0.05, +73.4825000000708, 1.7000000000075488, 0.05, +73.56750000007118, 1.7000000000075488, 0.05, +73.65250000007154, 1.7000000000072646, 0.05, +73.73750000007193, 1.700000000007833, 0.05, +73.82250000007231, 1.7000000000075488, 0.05, +73.9075000000727, 1.700000000007833, 0.05, +73.99250000007308, 1.7000000000075488, 0.05, +74.07750000007347, 1.700000000007833, 0.05, +74.16250000007383, 1.7000000000072646, 0.05, +74.24750000007421, 1.7000000000075488, 0.05, +74.3325000000746, 1.700000000007833, 0.05, +74.41750000007498, 1.7000000000075488, 0.05, +74.50250000007536, 1.7000000000075488, 0.05, +74.58750000007574, 1.7000000000075488, 0.05, +74.67250000007613, 1.700000000007833, 0.05, +74.7575000000765, 1.7000000000075488, 0.05, +74.84250000007688, 1.7000000000075488, 0.05, +74.92750000007727, 1.700000000007833, 0.05, +75.01250000007765, 1.7000000000075488, 0.05, +75.09750000007803, 1.7000000000075488, 0.05, +75.1825000000784, 1.7000000000075488, 0.05, +75.26750000007878, 1.7000000000075488, 0.05, +75.35250000007916, 1.7000000000075488, 0.05, +75.43750000007954, 1.7000000000075488, 0.05, +75.52250000007993, 1.700000000007833, 0.05, +75.60750000008031, 1.7000000000075488, 0.05, +75.6925000000807, 1.700000000007833, 0.05, +75.77750000008108, 1.7000000000075488, 0.05, +75.86250000008145, 1.7000000000075488, 0.05, +75.94750000008183, 1.7000000000075488, 0.05, +76.03250000008221, 1.7000000000075488, 0.05, +76.11750000008259, 1.7000000000075488, 0.05, +76.20250000008298, 1.700000000007833, 0.05, +76.28750000008336, 1.7000000000075488, 0.05, +76.37250000008373, 1.7000000000075488, 0.05, +76.45750000008412, 1.700000000007833, 0.05, +76.5425000000845, 1.7000000000075488, 0.05, +76.62750000008488, 1.7000000000075488, 0.05, +76.71250000008526, 1.7000000000075488, 0.05, +76.79750000008565, 1.700000000007833, 0.05, +76.88250000008601, 1.7000000000072646, 0.05, +76.96750000008639, 1.7000000000075488, 0.05, +77.05250000008678, 1.700000000007833, 0.05, +77.13750000008716, 1.7000000000075488, 0.05, +77.22250000008754, 1.7000000000075488, 0.05, +77.30750000008793, 1.700000000007833, 0.05, +77.3925000000883, 1.7000000000075488, 0.05, +77.47750000008868, 1.7000000000075488, 0.05, +77.56250000008906, 1.7000000000075488, 0.05, +77.64750000008945, 1.700000000007833, 0.05, +77.73250000008983, 1.7000000000075488, 0.05, +77.8175000000902, 1.7000000000075488, 0.05, +77.90250000009058, 1.7000000000075488, 0.05, +77.98750000009096, 1.7000000000075488, 0.05, +78.07250000009134, 1.7000000000075488, 0.05, +78.15750000009173, 1.700000000007833, 0.05, +78.24250000009211, 1.7000000000075488, 0.05, +78.3275000000925, 1.700000000007833, 0.05, +78.41250000009288, 1.7000000000075488, 0.05, +78.49750000009324, 1.7000000000072646, 0.05, +78.58250000009363, 1.700000000007833, 0.05, +78.66750000009401, 1.7000000000075488, 0.05, +78.75250000009439, 1.7000000000075488, 0.05, +78.83750000009476, 1.7000000000075488, 0.05, +78.92250000009516, 1.700000000007833, 0.05, +79.00750000009553, 1.7000000000075488, 0.05, +79.09250000009591, 1.7000000000075488, 0.05, +79.1775000000963, 1.700000000007833, 0.05, +79.26250000009668, 1.7000000000075488, 0.05, +79.34750000009706, 1.7000000000075488, 0.05, +79.43250000009743, 1.7000000000075488, 0.05, +79.51750000009783, 1.700000000007833, 0.05, +79.60250000009819, 1.7000000000072646, 0.05, +79.68750000009857, 1.7000000000075488, 0.05, +79.77250000009896, 1.700000000007833, 0.05, +79.85750000009934, 1.7000000000075488, 0.05, +79.94250000009973, 1.700000000007833, 0.05, +80.0275000001001, 1.7000000000075488, 0.05, +80.1125000001005, 1.700000000007833, 0.05, +80.19750000010086, 1.7000000000072646, 0.05, +80.28250000010124, 1.7000000000075488, 0.05, +80.36750000010161, 1.7000000000075488, 0.05, +80.452500000102, 1.700000000007833, 0.05, +80.53750000010238, 1.7000000000075488, 0.05, +80.62250000010276, 1.7000000000075488, 0.05, +80.70750000010314, 1.7000000000075488, 0.05, +80.79250000010353, 1.700000000007833, 0.05, +80.87750000010391, 1.7000000000075488, 0.05, +80.96250000010428, 1.7000000000075488, 0.05, +81.04750000010468, 1.700000000007833, 0.05, +81.13250000010505, 1.7000000000075488, 0.05, +81.21750000010542, 1.7000000000072646, 0.05, +81.30250000010581, 1.700000000007833, 0.05, +81.38750000010619, 1.7000000000075488, 0.05, +81.47250000010656, 1.7000000000075488, 0.05, +81.55750000010694, 1.7000000000075488, 0.05, +81.64250000010733, 1.700000000007833, 0.05, +81.72750000010772, 1.700000000007833, 0.05, +81.81250000010809, 1.7000000000072646, 0.05, +81.89750000010848, 1.700000000007833, 0.05, +81.98250000010886, 1.7000000000075488, 0.05, +82.06750000010923, 1.7000000000075488, 0.05, +82.15250000010961, 1.7000000000075488, 0.05, +82.23750000011, 1.700000000007833, 0.05, +82.32250000011037, 1.7000000000072646, 0.05, +82.40750000011074, 1.7000000000075488, 0.05, +82.49250000011114, 1.700000000007833, 0.05, +82.57750000011153, 1.700000000007833, 0.05, +82.6625000001119, 1.7000000000075488, 0.05, +82.74750000011228, 1.7000000000075488, 0.05, +82.83250000011266, 1.7000000000075488, 0.05, +82.91750000011304, 1.7000000000075488, 0.05, +83.00250000011341, 1.7000000000075488, 0.05, +83.08750000011379, 1.7000000000075488, 0.05, +83.17250000011418, 1.700000000007833, 0.05, +83.25750000011456, 1.7000000000075488, 0.05, +83.34250000011494, 1.7000000000075488, 0.05, +83.42750000011533, 1.700000000007833, 0.05, +83.51250000011571, 1.7000000000075488, 0.05, +83.59750000011609, 1.7000000000075488, 0.05, +83.68250000011646, 1.7000000000075488, 0.05, +83.76750000011685, 1.700000000007833, 0.05, +83.85250000011723, 1.7000000000075488, 0.05, +83.9375000001176, 1.7000000000072646, 0.05, +84.02250000011799, 1.700000000007833, 0.05, +84.10750000011836, 1.7000000000075488, 0.05, +84.19250000011874, 1.7000000000075488, 0.05, +84.27750000011913, 1.700000000007833, 0.05, +84.36250000011951, 1.7000000000075488, 0.05, +84.4475000001199, 1.700000000007833, 0.05, +84.53250000012027, 1.7000000000072646, 0.05, +84.61750000012064, 1.7000000000075488, 0.05, +84.70250000012103, 1.700000000007833, 0.05, +84.78750000012141, 1.7000000000075488, 0.05, +84.87250000012179, 1.7000000000075488, 0.05, +84.95750000012218, 1.700000000007833, 0.05, +85.04250000012256, 1.7000000000075488, 0.05, +85.12750000012294, 1.7000000000075488, 0.05, +85.21250000012331, 1.7000000000075488, 0.05, +85.2975000001237, 1.700000000007833, 0.05, +85.38250000012408, 1.7000000000075488, 0.05, +85.46750000012446, 1.7000000000075488, 0.05, +85.55250000012484, 1.7000000000075488, 0.05, +85.63750000012521, 1.7000000000075488, 0.05, +85.72250000012559, 1.7000000000075488, 0.05, +85.80750000012597, 1.7000000000075488, 0.05, +85.89250000012636, 1.700000000007833, 0.05, +85.97750000012674, 1.7000000000075488, 0.05, +86.06250000012713, 1.700000000007833, 0.05, +86.14750000012751, 1.7000000000075488, 0.05, +86.23250000012789, 1.7000000000075488, 0.05, +86.31750000012826, 1.7000000000075488, 0.05, +86.40250000012864, 1.7000000000075488, 0.05, +86.48750000012903, 1.700000000007833, 0.05, +86.57250000012941, 1.7000000000075488, 0.05, +86.65750000012977, 1.7000000000072646, 0.05, +86.74250000013016, 1.700000000007833, 0.05, +86.82750000013054, 1.7000000000075488, 0.05, +86.91250000013093, 1.700000000007833, 0.05, +86.99750000013131, 1.7000000000075488, 0.05, +87.0825000001317, 1.700000000007833, 0.05, +87.16750000013207, 1.7000000000072646, 0.05, +87.25250000013244, 1.7000000000075488, 0.05, +87.33750000013282, 1.7000000000075488, 0.05, +87.42250000013321, 1.700000000007833, 0.05, +87.50750000013359, 1.7000000000075488, 0.05, +87.59250000013397, 1.7000000000075488, 0.05, +87.67750000013436, 1.700000000007833, 0.05, +87.76250000013474, 1.7000000000075488, 0.05, +87.84750000013511, 1.7000000000075488, 0.05, +87.93250000013549, 1.7000000000075488, 0.05, +88.01750000013588, 1.700000000007833, 0.05, +88.10250000013626, 1.7000000000075488, 0.05, +88.18750000013664, 1.7000000000075488, 0.05, +88.27250000013701, 1.7000000000075488, 0.05, +88.35750000013739, 1.7000000000075488, 0.05, +88.44250000013777, 1.7000000000075488, 0.05, +88.52750000013816, 1.700000000007833, 0.05, +88.61250000013854, 1.7000000000075488, 0.05, +88.69750000013893, 1.700000000007833, 0.05, +88.78250000013931, 1.7000000000075488, 0.05, +88.86750000013967, 1.7000000000072646, 0.05, +88.95250000014006, 1.700000000007833, 0.05, +89.03750000014044, 1.7000000000075488, 0.05, +89.12250000014082, 1.7000000000075488, 0.05, +89.20750000014121, 1.700000000007833, 0.05, +89.29250000014159, 1.7000000000075488, 0.05, +89.37750000014196, 1.7000000000075488, 0.05, +89.46250000014234, 1.7000000000075488, 0.05, +89.54750000014273, 1.700000000007833, 0.05, +89.63250000014311, 1.7000000000075488, 0.05, +89.71750000014349, 1.7000000000075488, 0.05, +89.80250000014388, 1.700000000007833, 0.05, +89.88750000014424, 1.7000000000072646, 0.05, +89.97250000014462, 1.7000000000075488, 0.05, +90.057500000145, 1.7000000000075488, 0.05, +90.14250000014539, 1.700000000007833, 0.05, +90.22750000014577, 1.7000000000075488, 0.05, +90.31250000014616, 1.700000000007833, 0.05, +90.39750000014654, 1.7000000000075488, 0.05, +90.48250000014691, 1.7000000000075488, 0.05, +90.56750000014729, 1.7000000000075488, 0.05, +90.65250000014767, 1.7000000000075488, 0.05, +90.73750000014806, 1.700000000007833, 0.05, +90.82250000014844, 1.7000000000075488, 0.05, +90.90750000014881, 1.7000000000075488, 0.05, +90.99250000014918, 1.7000000000072646, 0.05, +91.07750000014957, 1.700000000007833, 0.05, +91.16250000014996, 1.700000000007833, 0.05, +91.24750000015034, 1.7000000000075488, 0.05, +91.33250000015073, 1.700000000007833, 0.05, +91.41750000015111, 1.7000000000075488, 0.05, +91.50250000015147, 1.7000000000072646, 0.05, +91.58750000015185, 1.7000000000075488, 0.05, +91.67250000015224, 1.700000000007833, 0.05, +91.75750000015262, 1.7000000000075488, 0.05, +91.842500000153, 1.7000000000075488, 0.05, +91.92750000015339, 1.700000000007833, 0.05, +92.01250000015376, 1.7000000000075488, 0.05, +92.09750000015414, 1.7000000000075488, 0.05, +92.18250000015452, 1.7000000000075488, 0.05, +92.26750000015491, 1.700000000007833, 0.05, +92.35250000015529, 1.7000000000075488, 0.05, +92.43750000015567, 1.7000000000075488, 0.05, +92.52250000015606, 1.700000000007833, 0.05, +92.60750000015642, 1.7000000000072646, 0.05, +92.6925000001568, 1.7000000000075488, 0.05, +92.77750000015718, 1.7000000000075488, 0.05, +92.86250000015757, 1.700000000007833, 0.05, +92.94750000015794, 1.7000000000075488, 0.05, +93.03250000015834, 1.700000000007833, 0.05, +93.11750000015871, 1.7000000000075488, 0.05, +93.20250000015909, 1.7000000000075488, 0.05, +93.28750000015947, 1.7000000000075488, 0.05, +93.37250000015985, 1.7000000000075488, 0.05, +93.45750000016024, 1.700000000007833, 0.05, +93.54250000016062, 1.7000000000075488, 0.05, +93.62750000016099, 1.7000000000075488, 0.05, +93.71250000016137, 1.7000000000075488, 0.05, +93.79750000016176, 1.700000000007833, 0.05, +93.88250000016214, 1.7000000000075488, 0.05, +93.96750000016252, 1.7000000000075488, 0.05, +94.05250000016291, 1.700000000007833, 0.05, +94.13750000016329, 1.7000000000075488, 0.05, +94.22250000016365, 1.7000000000072646, 0.05, +94.30750000016403, 1.7000000000075488, 0.05, +94.39250000016442, 1.700000000007833, 0.05, +94.4775000001648, 1.7000000000075488, 0.05, +94.56250000016517, 1.7000000000075488, 0.05, +94.64750000016556, 1.700000000007833, 0.05, +94.73250000016594, 1.7000000000075488, 0.05, +94.81750000016632, 1.7000000000075488, 0.05, +94.9025000001667, 1.7000000000075488, 0.05, +94.98750000016709, 1.700000000007833, 0.05, +95.07250000016747, 1.7000000000075488, 0.05, +95.15750000016784, 1.7000000000075488, 0.05, +95.24250000016822, 1.7000000000075488, 0.05, +95.3275000001686, 1.7000000000075488, 0.05, +95.41250000016898, 1.7000000000075488, 0.05, +95.49750000016937, 1.700000000007833, 0.05, +95.58250000016976, 1.700000000007833, 0.05, +95.66750000017014, 1.7000000000075488, 0.05, +95.75250000017051, 1.7000000000075488, 0.05, +95.83750000017089, 1.7000000000075488, 0.05, +95.92250000017127, 1.7000000000075488, 0.05, +96.00750000017165, 1.7000000000075488, 0.05, +96.09250000017202, 1.7000000000075488, 0.05, +96.17750000017242, 1.700000000007833, 0.05, +96.26250000017279, 1.7000000000075488, 0.05, +96.34750000017317, 1.7000000000075488, 0.05, +96.43250000017355, 1.7000000000075488, 0.05, +96.51750000017394, 1.700000000007833, 0.05, +96.60250000017432, 1.7000000000075488, 0.05, +96.6875000001747, 1.7000000000075488, 0.05, +96.77250000017509, 1.700000000007833, 0.05, +96.85750000017546, 1.7000000000075488, 0.05, +96.94250000017583, 1.7000000000072646, 0.05, +97.0275000001762, 1.7000000000075488, 0.05, +97.1125000001766, 1.700000000007833, 0.05, +97.19750000017697, 1.7000000000075488, 0.05, +97.28250000017736, 1.700000000007833, 0.05, +97.36750000017774, 1.7000000000075488, 0.05, +97.45250000017813, 1.700000000007833, 0.05, +97.5375000001785, 1.7000000000072646, 0.05, +97.62250000017887, 1.7000000000075488, 0.05, +97.70750000017927, 1.700000000007833, 0.05, +97.79250000017964, 1.7000000000075488, 0.05, +97.87750000018002, 1.7000000000075488, 0.05, +97.9625000001804, 1.7000000000075488, 0.05, +98.04750000018078, 1.7000000000075488, 0.05, +98.13250000018117, 1.700000000007833, 0.05, +98.21750000018154, 1.7000000000075488, 0.05, +98.30250000018194, 1.700000000007833, 0.05, +98.38750000018231, 1.7000000000075488, 0.05, +98.47250000018269, 1.7000000000075488, 0.05, +98.55750000018305, 1.7000000000072646, 0.05, +98.64250000018345, 1.700000000007833, 0.05, +98.72750000018382, 1.7000000000075488, 0.05, +98.8125000001842, 1.7000000000075488, 0.05, +98.89750000018459, 1.700000000007833, 0.05, +98.98250000018497, 1.7000000000075488, 0.05, +99.06750000018536, 1.700000000007833, 0.05, +99.15250000018573, 1.7000000000072646, 0.05, +99.23750000018612, 1.700000000007833, 0.05, +99.3212058825338, 1.6741176469537322, 0.05, +99.40111764722877, 1.5982352938993927, 0.05, +99.47602941192372, 1.4982352938989152, 0.05, +99.54594117661864, 1.3982352938984377, 0.05, +99.61085294131355, 1.2982352938982444, 0.05, +99.67076470600844, 1.198235293897767, 0.05, +99.7256764707033, 1.0982352938972895, 0.05, +99.77558823539815, 0.998235293896812, 0.05, +99.82050000009296, 0.8982352938963345, 0.05, +99.86041176478777, 0.7982352938961412, 0.05, +99.89532352948254, 0.6982352938953795, 0.05, +99.92523529417728, 0.598235293894902, 0.05, +99.95014705887202, 0.4982352938947088, 0.05, +99.97005882356672, 0.3982352938939471, 0.05, +99.98497058826139, 0.2982352938934696, 0.05, +99.99488235295604, 0.1982352938929921, 0.05, +99.99979411765068, 0.09823529389279884, 0.05, +100.00099999999797, 0.02411764694585372, 0.05, +100.00099999999797, 0.0, 0.05, \ No newline at end of file From 08d84b7cb51328cbb932c247ab367461a4608265 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 15 Feb 2017 11:29:21 -0500 Subject: [PATCH 02/66] Set up to run different profiles on different sides --- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../talonCluster/commands/ExecuteProfile.java | 33 +++++++++++++----- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 0852457d5c016a3d9457dc4db9f080e23450a4af..2abf394885481560b29e12e0fec86fb50d8a5047 100644 GIT binary patch delta 26 gcmX@GocX|V<_*z@m no position servo just velocity feedforward point.zeroPos = i == 0; // If its the first point, zeroPos = true - point.isLastPoint = (i + 1) == profile.data.length; // If its the last point, isLastPoint = true + point.isLastPoint = (i + 1) == leftProfile.data.length; // If its the last point, isLastPoint = true // Send the point to the Talon's buffer tcd.leftMaster.canTalon.pushMotionProfileTrajectory(point); + } - point.velocity = point.velocity * -1; + for (int i = 0; i < rightProfile.data.length; ++i) { + // Set all the fields of the profile point + point.position = rightProfile.data[i][0] * 2048 / 4 * Math.PI ; + point.velocity = rightProfile.data[i][1] * 2048 / 4 * Math.PI ; + point.timeDurMs = (int) rightProfile.data[i][2]; + point.profileSlotSelect = 1; // gain selection + point.velocityOnly = false; // true => no position servo just velocity feedforward + point.zeroPos = i == 0; // If its the first point, zeroPos = true + point.isLastPoint = (i + 1) == rightProfile.data.length; // If its the last point, isLastPoint = true + // Send the point to the Talon's buffer tcd.rightMaster.canTalon.pushMotionProfileTrajectory(point); } + // Add the Talons to the updater thread (thread should not have started yet tho) updaterProcess.addTalon(tcd.leftMaster.canTalon); updaterProcess.addTalon(tcd.rightMaster.canTalon); From ba1212f90ffa668219b0d0a03020808e3a754e25 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 15 Feb 2017 11:32:46 -0500 Subject: [PATCH 03/66] Make leftProfile.csv and rightProfile.csv --- .../{profile.csv => leftProfile.csv} | 0 src/main/resources/rightProfile.csv | 1196 +++++++++++++++++ 2 files changed, 1196 insertions(+) rename src/main/resources/{profile.csv => leftProfile.csv} (100%) create mode 100644 src/main/resources/rightProfile.csv diff --git a/src/main/resources/profile.csv b/src/main/resources/leftProfile.csv similarity index 100% rename from src/main/resources/profile.csv rename to src/main/resources/leftProfile.csv diff --git a/src/main/resources/rightProfile.csv b/src/main/resources/rightProfile.csv new file mode 100644 index 00000000..fa391a2b --- /dev/null +++ b/src/main/resources/rightProfile.csv @@ -0,0 +1,1196 @@ +1195 +0.0025, 0.09999999999999999, 0.05, +0.010000000000000002, 0.15000000000000002, 0.05, +0.0225, 0.24999999999999994, 0.05, +0.03999999999999996, 0.3499999999999992, 0.05, +0.06249999999999989, 0.44999999999999857, 0.05, +0.08999999999999982, 0.5499999999999985, 0.05, +0.12249999999999973, 0.6499999999999984, 0.05, +0.15999999999999967, 0.7499999999999987, 0.05, +0.2024999999999996, 0.8499999999999985, 0.05, +0.24999999999999944, 0.949999999999997, 0.05, +0.30249999999999927, 1.0499999999999965, 0.05, +0.3599999999999991, 1.1499999999999966, 0.05, +0.4225000000000003, 1.2500000000000244, 0.05, +0.49000000000000316, 1.3500000000000567, 0.05, +0.5625000000000061, 1.450000000000059, 0.05, +0.6400000000000093, 1.5500000000000647, 0.05, +0.7225000000000127, 1.650000000000067, 0.05, +0.8075000000000162, 1.7000000000000703, 0.05, +0.8925000000000195, 1.700000000000066, 0.05, +0.9775000000000228, 1.700000000000066, 0.05, +1.0625000000000266, 1.7000000000000748, 0.05, +1.14750000000003, 1.700000000000066, 0.05, +1.2325000000000335, 1.7000000000000703, 0.05, +1.3175000000000368, 1.700000000000066, 0.05, +1.4025000000000403, 1.7000000000000703, 0.05, +1.4875000000000436, 1.700000000000066, 0.05, +1.5725000000000473, 1.7000000000000748, 0.05, +1.6575000000000504, 1.7000000000000615, 0.05, +1.742500000000054, 1.7000000000000703, 0.05, +1.8275000000000574, 1.7000000000000703, 0.05, +1.912500000000061, 1.7000000000000703, 0.05, +1.9975000000000642, 1.700000000000066, 0.05, +2.082500000000068, 1.7000000000000703, 0.05, +2.167500000000071, 1.7000000000000615, 0.05, +2.2525000000000746, 1.7000000000000703, 0.05, +2.3375000000000776, 1.7000000000000615, 0.05, +2.422500000000081, 1.7000000000000703, 0.05, +2.5075000000000847, 1.7000000000000703, 0.05, +2.592500000000088, 1.7000000000000703, 0.05, +2.6775000000000917, 1.7000000000000703, 0.05, +2.762500000000095, 1.7000000000000703, 0.05, +2.8475000000000987, 1.7000000000000703, 0.05, +2.9325000000001022, 1.7000000000000703, 0.05, +3.0175000000001058, 1.7000000000000703, 0.05, +3.102500000000109, 1.7000000000000615, 0.05, +3.187500000000091, 1.699999999999644, 0.05, +3.2725000000000644, 1.6999999999994664, 0.05, +3.357500000000039, 1.699999999999493, 0.05, +3.4425000000000123, 1.6999999999994664, 0.05, +3.527499999999986, 1.6999999999994753, 0.05, +3.6124999999999603, 1.6999999999994841, 0.05, +3.697499999999934, 1.6999999999994753, 0.05, +3.7824999999999083, 1.6999999999994841, 0.05, +3.867499999999882, 1.6999999999994753, 0.05, +3.9524999999998562, 1.6999999999994841, 0.05, +4.03749999999983, 1.6999999999994753, 0.05, +4.122499999999803, 1.6999999999994664, 0.05, +4.207499999999778, 1.699999999999502, 0.05, +4.292499999999752, 1.6999999999994664, 0.05, +4.377499999999726, 1.6999999999994841, 0.05, +4.462499999999699, 1.6999999999994664, 0.05, +4.5474999999996735, 1.6999999999994841, 0.05, +4.632499999999648, 1.6999999999994841, 0.05, +4.717499999999621, 1.6999999999994664, 0.05, +4.802499999999595, 1.6999999999994841, 0.05, +4.8874999999995685, 1.6999999999994664, 0.05, +4.972499999999544, 1.699999999999502, 0.05, +5.057499999999517, 1.6999999999994664, 0.05, +5.142499999999491, 1.6999999999994841, 0.05, +5.2274999999994645, 1.6999999999994664, 0.05, +5.31249999999944, 1.699999999999502, 0.05, +5.397499999999413, 1.6999999999994664, 0.05, +5.482499999999387, 1.6999999999994841, 0.05, +5.56749999999936, 1.6999999999994664, 0.05, +5.652499999999335, 1.6999999999994841, 0.05, +5.737499999999309, 1.6999999999994841, 0.05, +5.822499999999282, 1.6999999999994664, 0.05, +5.907499999999256, 1.6999999999994841, 0.05, +5.9924999999992306, 1.6999999999994841, 0.05, +6.077499999999205, 1.6999999999994841, 0.05, +6.162499999999178, 1.6999999999994664, 0.05, +6.247499999999151, 1.6999999999994664, 0.05, +6.332499999999184, 1.7000000000006565, 0.05, +6.417499999999218, 1.7000000000006743, 0.05, +6.502499999999248, 1.7000000000006033, 0.05, +6.587499999999282, 1.7000000000006743, 0.05, +6.6724999999993155, 1.7000000000006743, 0.05, +6.757499999999349, 1.7000000000006743, 0.05, +6.84249999999938, 1.700000000000621, 0.05, +6.927499999999414, 1.7000000000006743, 0.05, +7.012499999999448, 1.7000000000006743, 0.05, +7.09749999999948, 1.7000000000006388, 0.05, +7.1824999999995125, 1.7000000000006565, 0.05, +7.267499999999546, 1.7000000000006743, 0.05, +7.35249999999958, 1.7000000000006743, 0.05, +7.437499999999612, 1.7000000000006388, 0.05, +7.522499999999644, 1.7000000000006388, 0.05, +7.6074999999996775, 1.7000000000006743, 0.05, +7.69249999999971, 1.7000000000006565, 0.05, +7.777499999999744, 1.7000000000006743, 0.05, +7.862499999999776, 1.7000000000006388, 0.05, +7.94749999999981, 1.7000000000006743, 0.05, +8.032499999999843, 1.7000000000006388, 0.05, +8.117499999999877, 1.700000000000692, 0.05, +8.20249999999991, 1.7000000000006565, 0.05, +8.287499999999945, 1.700000000000692, 0.05, +8.37249999999998, 1.700000000000692, 0.05, +8.457500000000012, 1.7000000000006565, 0.05, +8.542500000000047, 1.700000000000692, 0.05, +8.62750000000008, 1.7000000000006565, 0.05, +8.712500000000114, 1.700000000000692, 0.05, +8.797500000000149, 1.700000000000692, 0.05, +8.882500000000181, 1.7000000000006565, 0.05, +8.967500000000214, 1.7000000000006565, 0.05, +9.052500000000249, 1.700000000000692, 0.05, +9.137500000000284, 1.700000000000692, 0.05, +9.222500000000315, 1.700000000000621, 0.05, +9.307500000000351, 1.7000000000007276, 0.05, +9.392500000000384, 1.7000000000006565, 0.05, +9.477500000000417, 1.7000000000006565, 0.05, +9.562500000000451, 1.700000000000692, 0.05, +9.647500000000486, 1.700000000000692, 0.05, +9.73250000000052, 1.700000000000692, 0.05, +9.817500000000553, 1.7000000000006565, 0.05, +9.902500000000586, 1.7000000000006565, 0.05, +9.98750000000062, 1.700000000000692, 0.05, +10.072500000000655, 1.700000000000692, 0.05, +10.157500000000686, 1.700000000000621, 0.05, +10.242500000000723, 1.7000000000007276, 0.05, +10.327500000000756, 1.7000000000006565, 0.05, +10.41250000000079, 1.700000000000692, 0.05, +10.497500000000823, 1.7000000000006565, 0.05, +10.582500000000858, 1.700000000000692, 0.05, +10.667500000000892, 1.700000000000692, 0.05, +10.752500000000925, 1.7000000000006565, 0.05, +10.837500000000958, 1.7000000000006565, 0.05, +10.922500000000992, 1.700000000000692, 0.05, +11.007500000001027, 1.700000000000692, 0.05, +11.09250000000106, 1.7000000000006565, 0.05, +11.177500000001094, 1.700000000000692, 0.05, +11.262500000001127, 1.7000000000006565, 0.05, +11.347500000001162, 1.700000000000692, 0.05, +11.432500000001196, 1.700000000000692, 0.05, +11.517500000001228, 1.700000000000621, 0.05, +11.602500000001262, 1.700000000000692, 0.05, +11.687500000001297, 1.700000000000692, 0.05, +11.772500000001331, 1.700000000000692, 0.05, +11.857500000001364, 1.7000000000006565, 0.05, +11.942500000001399, 1.700000000000692, 0.05, +12.027500000001432, 1.7000000000006565, 0.05, +12.112500000001466, 1.700000000000692, 0.05, +12.197500000001499, 1.7000000000006565, 0.05, +12.282500000001532, 1.7000000000006565, 0.05, +12.367500000001568, 1.7000000000007276, 0.05, +12.452500000001601, 1.7000000000006565, 0.05, +12.537500000001584, 1.6999999999996618, 0.05, +12.622500000001496, 1.6999999999982407, 0.05, +12.707500000001412, 1.6999999999983118, 0.05, +12.792500000001331, 1.6999999999983828, 0.05, +12.877500000001243, 1.6999999999982407, 0.05, +12.962500000001162, 1.6999999999983828, 0.05, +13.047500000001078, 1.6999999999983118, 0.05, +13.132500000000991, 1.6999999999982762, 0.05, +13.217500000000909, 1.6999999999983473, 0.05, +13.302500000000824, 1.6999999999983118, 0.05, +13.38750000000074, 1.6999999999983118, 0.05, +13.472500000000656, 1.6999999999983118, 0.05, +13.557500000000573, 1.6999999999983473, 0.05, +13.64250000000049, 1.6999999999983473, 0.05, +13.727500000000404, 1.6999999999982762, 0.05, +13.81250000000032, 1.6999999999983118, 0.05, +13.897500000000237, 1.6999999999983473, 0.05, +13.982500000000151, 1.6999999999982762, 0.05, +14.067500000000067, 1.6999999999983118, 0.05, +14.152499999999986, 1.6999999999983828, 0.05, +14.237499999999898, 1.6999999999982407, 0.05, +14.322499999999813, 1.6999999999983118, 0.05, +14.407499999999732, 1.6999999999983828, 0.05, +14.492499999999644, 1.6999999999982407, 0.05, +14.577499999999564, 1.6999999999983828, 0.05, +14.66249999999948, 1.6999999999983118, 0.05, +14.747499999999391, 1.6999999999982407, 0.05, +14.83249999999931, 1.6999999999983828, 0.05, +14.917499999999226, 1.6999999999983118, 0.05, +15.00249999999914, 1.6999999999982762, 0.05, +15.087499999999057, 1.6999999999983473, 0.05, +15.172499999998973, 1.6999999999983118, 0.05, +15.257499999998888, 1.6999999999983118, 0.05, +15.342499999998804, 1.6999999999983118, 0.05, +15.42749999999872, 1.6999999999983118, 0.05, +15.512499999998639, 1.6999999999983828, 0.05, +15.597499999998552, 1.6999999999982762, 0.05, +15.682499999998468, 1.6999999999983118, 0.05, +15.767499999998385, 1.6999999999983473, 0.05, +15.8524999999983, 1.6999999999982762, 0.05, +15.937499999998217, 1.6999999999983473, 0.05, +16.02249999999813, 1.6999999999982407, 0.05, +16.107499999998044, 1.6999999999983118, 0.05, +16.19249999999796, 1.6999999999983118, 0.05, +16.27749999999788, 1.6999999999983828, 0.05, +16.362499999997794, 1.6999999999983118, 0.05, +16.44749999999771, 1.6999999999983118, 0.05, +16.532499999997626, 1.6999999999983118, 0.05, +16.61749999999754, 1.6999999999983118, 0.05, +16.702499999997457, 1.6999999999983118, 0.05, +16.787499999997372, 1.6999999999983118, 0.05, +16.87249999999729, 1.6999999999983828, 0.05, +16.957499999997204, 1.6999999999982407, 0.05, +17.04249999999712, 1.6999999999983118, 0.05, +17.12749999999704, 1.6999999999983828, 0.05, +17.21249999999695, 1.6999999999982407, 0.05, +17.29749999999687, 1.6999999999983828, 0.05, +17.382499999996785, 1.6999999999983118, 0.05, +17.4674999999967, 1.6999999999983118, 0.05, +17.552499999996616, 1.6999999999983118, 0.05, +17.637499999996532, 1.6999999999983118, 0.05, +17.722499999996447, 1.6999999999983118, 0.05, +17.807499999996363, 1.6999999999983118, 0.05, +17.89249999999628, 1.6999999999983118, 0.05, +17.977499999996198, 1.6999999999983828, 0.05, +18.06249999999611, 1.6999999999982407, 0.05, +18.147499999996025, 1.6999999999983118, 0.05, +18.232499999995945, 1.6999999999983828, 0.05, +18.317499999995857, 1.6999999999982407, 0.05, +18.402499999995772, 1.6999999999983118, 0.05, +18.48749999999569, 1.6999999999983828, 0.05, +18.572499999995603, 1.6999999999982407, 0.05, +18.657499999995522, 1.6999999999983828, 0.05, +18.742499999995438, 1.6999999999983118, 0.05, +18.82749999999535, 1.6999999999982407, 0.05, +18.91249999999527, 1.6999999999983828, 0.05, +18.997499999995185, 1.6999999999983118, 0.05, +19.082499999995097, 1.6999999999982407, 0.05, +19.167499999995016, 1.6999999999983828, 0.05, +19.25249999999493, 1.6999999999983118, 0.05, +19.337499999994844, 1.6999999999982407, 0.05, +19.422499999994763, 1.6999999999983828, 0.05, +19.50749999999468, 1.6999999999983118, 0.05, +19.592499999994597, 1.6999999999983828, 0.05, +19.67749999999451, 1.6999999999982407, 0.05, +19.762499999994425, 1.6999999999983118, 0.05, +19.847499999994344, 1.6999999999983828, 0.05, +19.932499999994256, 1.6999999999982407, 0.05, +20.017499999994172, 1.6999999999983118, 0.05, +20.10249999999409, 1.6999999999983828, 0.05, +20.187499999994007, 1.6999999999983118, 0.05, +20.272499999993922, 1.6999999999983118, 0.05, +20.357499999993838, 1.6999999999983118, 0.05, +20.442499999993753, 1.6999999999983118, 0.05, +20.52749999999367, 1.6999999999983118, 0.05, +20.612499999993585, 1.6999999999983118, 0.05, +20.6974999999935, 1.6999999999983118, 0.05, +20.78249999999342, 1.6999999999983828, 0.05, +20.867499999993335, 1.6999999999983118, 0.05, +20.95249999999325, 1.6999999999983118, 0.05, +21.037499999993166, 1.6999999999983118, 0.05, +21.12249999999308, 1.6999999999983118, 0.05, +21.207499999992997, 1.6999999999983118, 0.05, +21.292499999992913, 1.6999999999983118, 0.05, +21.37749999999283, 1.6999999999983118, 0.05, +21.462499999992744, 1.6999999999983118, 0.05, +21.54749999999266, 1.6999999999983118, 0.05, +21.63249999999258, 1.6999999999983828, 0.05, +21.717499999992494, 1.6999999999983118, 0.05, +21.802499999992406, 1.6999999999982407, 0.05, +21.887499999992325, 1.6999999999983828, 0.05, +21.97249999999224, 1.6999999999983118, 0.05, +22.057499999992153, 1.6999999999982407, 0.05, +22.142499999992072, 1.6999999999983828, 0.05, +22.227499999991988, 1.6999999999983118, 0.05, +22.312499999991903, 1.6999999999983118, 0.05, +22.39749999999182, 1.6999999999983118, 0.05, +22.482499999991735, 1.6999999999983118, 0.05, +22.56749999999165, 1.6999999999983118, 0.05, +22.652499999991566, 1.6999999999983118, 0.05, +22.73749999999148, 1.6999999999983118, 0.05, +22.822499999991397, 1.6999999999983118, 0.05, +22.907499999991312, 1.6999999999983118, 0.05, +22.99249999999123, 1.6999999999983828, 0.05, +23.077499999991144, 1.6999999999982407, 0.05, +23.16249999999106, 1.6999999999983118, 0.05, +23.24749999999098, 1.6999999999983828, 0.05, +23.33249999999089, 1.6999999999982407, 0.05, +23.417499999990806, 1.6999999999983118, 0.05, +23.502499999990725, 1.6999999999983828, 0.05, +23.587499999990637, 1.6999999999982407, 0.05, +23.672499999990556, 1.6999999999983828, 0.05, +23.757499999990472, 1.6999999999983118, 0.05, +23.842499999990387, 1.6999999999983118, 0.05, +23.927499999990303, 1.6999999999983118, 0.05, +24.01249999999022, 1.6999999999983118, 0.05, +24.097499999990134, 1.6999999999983118, 0.05, +24.18249999999005, 1.6999999999983118, 0.05, +24.267499999989965, 1.6999999999983118, 0.05, +24.35249999998988, 1.6999999999983118, 0.05, +24.437499999989797, 1.6999999999983118, 0.05, +24.522499999989712, 1.6999999999983118, 0.05, +24.60749999998963, 1.6999999999983828, 0.05, +24.692499999989547, 1.6999999999983118, 0.05, +24.777499999989463, 1.6999999999983118, 0.05, +24.862499999989378, 1.6999999999983118, 0.05, +24.947499999989294, 1.6999999999983118, 0.05, +25.03249999998921, 1.6999999999983118, 0.05, +25.117499999989125, 1.6999999999983118, 0.05, +25.20249999998904, 1.6999999999983118, 0.05, +25.287499999988956, 1.6999999999983118, 0.05, +25.372499999988875, 1.6999999999983828, 0.05, +25.45749999998879, 1.6999999999983118, 0.05, +25.542499999988706, 1.6999999999983118, 0.05, +25.62749999998862, 1.6999999999982407, 0.05, +25.712499999988538, 1.6999999999983828, 0.05, +25.79749999998845, 1.6999999999982407, 0.05, +25.88249999998837, 1.6999999999983828, 0.05, +25.967499999988288, 1.6999999999983828, 0.05, +26.0524999999882, 1.6999999999982407, 0.05, +26.137499999988112, 1.6999999999982407, 0.05, +26.22249999998803, 1.6999999999983828, 0.05, +26.30749999998795, 1.6999999999983828, 0.05, +26.392499999987862, 1.6999999999982407, 0.05, +26.47749999998778, 1.6999999999983828, 0.05, +26.5624999999877, 1.6999999999983828, 0.05, +26.647499999987605, 1.6999999999980986, 0.05, +26.732499999987525, 1.6999999999983828, 0.05, +26.817499999987444, 1.6999999999983828, 0.05, +26.902499999987356, 1.6999999999982407, 0.05, +26.987499999987275, 1.6999999999983828, 0.05, +27.072499999987194, 1.6999999999983828, 0.05, +27.157499999987106, 1.6999999999982407, 0.05, +27.242499999987018, 1.6999999999982407, 0.05, +27.327499999986937, 1.6999999999983828, 0.05, +27.41249999998685, 1.6999999999982407, 0.05, +27.49749999998677, 1.6999999999983828, 0.05, +27.582499999986688, 1.6999999999983828, 0.05, +27.667499999986607, 1.6999999999983828, 0.05, +27.75249999998651, 1.6999999999980986, 0.05, +27.83749999998643, 1.6999999999983828, 0.05, +27.92249999998635, 1.6999999999983828, 0.05, +28.007499999986262, 1.6999999999982407, 0.05, +28.09249999998618, 1.6999999999983828, 0.05, +28.1774999999861, 1.6999999999983828, 0.05, +28.26249999998601, 1.6999999999981696, 0.05, +28.347499999985924, 1.6999999999983118, 0.05, +28.432499999985843, 1.6999999999983828, 0.05, +28.517499999985755, 1.6999999999982407, 0.05, +28.602499999985675, 1.6999999999983828, 0.05, +28.687499999985594, 1.6999999999983828, 0.05, +28.772499999985502, 1.6999999999981696, 0.05, +28.85749999998542, 1.6999999999983828, 0.05, +28.942499999985337, 1.6999999999983118, 0.05, +29.027499999985253, 1.6999999999983118, 0.05, +29.11249999998517, 1.6999999999983828, 0.05, +29.197499999985087, 1.6999999999983118, 0.05, +29.282499999985006, 1.6999999999983828, 0.05, +29.367499999984915, 1.6999999999981696, 0.05, +29.452499999984834, 1.6999999999983828, 0.05, +29.53749999998475, 1.6999999999983118, 0.05, +29.622499999984665, 1.6999999999983118, 0.05, +29.70749999998458, 1.6999999999983118, 0.05, +29.7924999999845, 1.6999999999983828, 0.05, +29.87749999998441, 1.6999999999981696, 0.05, +29.962499999984328, 1.6999999999983828, 0.05, +30.047499999984247, 1.6999999999983828, 0.05, +30.13249999998416, 1.6999999999982407, 0.05, +30.217499999984078, 1.6999999999983828, 0.05, +30.302499999983997, 1.6999999999983828, 0.05, +30.387499999983902, 1.6999999999980986, 0.05, +30.47249999998382, 1.6999999999983828, 0.05, +30.55749999998374, 1.6999999999983828, 0.05, +30.64249999998366, 1.6999999999983828, 0.05, +30.72749999998357, 1.6999999999982407, 0.05, +30.81249999998349, 1.6999999999983828, 0.05, +30.897499999983403, 1.6999999999982407, 0.05, +30.982499999983315, 1.6999999999982407, 0.05, +31.067499999983234, 1.6999999999983828, 0.05, +31.152499999983153, 1.6999999999983828, 0.05, +31.237499999983065, 1.6999999999982407, 0.05, +31.322499999982984, 1.6999999999983828, 0.05, +31.407499999982903, 1.6999999999983828, 0.05, +31.492499999982808, 1.6999999999980986, 0.05, +31.577499999982727, 1.6999999999983828, 0.05, +31.662499999982646, 1.6999999999983828, 0.05, +31.74749999998256, 1.6999999999982407, 0.05, +31.832499999982478, 1.6999999999983828, 0.05, +31.917499999982397, 1.6999999999983828, 0.05, +32.002499999982305, 1.6999999999982407, 0.05, +32.08749999998222, 1.6999999999983118, 0.05, +32.17249999998213, 1.6999999999981696, 0.05, +32.25749999998205, 1.6999999999984539, 0.05, +32.34249999998196, 1.6999999999981696, 0.05, +32.42749999998188, 1.6999999999984539, 0.05, +32.5124999999818, 1.6999999999983118, 0.05, +32.597499999981714, 1.6999999999983118, 0.05, +32.68249999998162, 1.6999999999981696, 0.05, +32.767499999981545, 1.6999999999984539, 0.05, +32.852499999981454, 1.6999999999981696, 0.05, +32.93749999998138, 1.6999999999984539, 0.05, +33.02249999998129, 1.6999999999983118, 0.05, +33.10749999998121, 1.6999999999983118, 0.05, +33.19249999998112, 1.6999999999983118, 0.05, +33.27749999998104, 1.6999999999983118, 0.05, +33.362499999980955, 1.6999999999983118, 0.05, +33.44749999998087, 1.6999999999983118, 0.05, +33.532499999980786, 1.6999999999983118, 0.05, +33.61749999998071, 1.6999999999984539, 0.05, +33.70249999998062, 1.6999999999981696, 0.05, +33.78749999998053, 1.6999999999983118, 0.05, +33.87249999998045, 1.6999999999983118, 0.05, +33.957499999980364, 1.6999999999983118, 0.05, +34.04249999998028, 1.6999999999983118, 0.05, +34.1274999999802, 1.6999999999984539, 0.05, +34.21249999998011, 1.6999999999981696, 0.05, +34.297499999980026, 1.6999999999983118, 0.05, +34.38249999997995, 1.6999999999984539, 0.05, +34.46749999997986, 1.6999999999981696, 0.05, +34.55249999997978, 1.6999999999984539, 0.05, +34.637499999979696, 1.6999999999983118, 0.05, +34.72249999997961, 1.6999999999983118, 0.05, +34.80749999997952, 1.6999999999981696, 0.05, +34.89249999997944, 1.6999999999984539, 0.05, +34.97749999997936, 1.6999999999983118, 0.05, +35.06249999997927, 1.6999999999983118, 0.05, +35.14749999997919, 1.6999999999983118, 0.05, +35.232499999979105, 1.6999999999983118, 0.05, +35.31749999997902, 1.6999999999983118, 0.05, +35.402499999978936, 1.6999999999983118, 0.05, +35.48749999997885, 1.6999999999983118, 0.05, +35.57249999997877, 1.6999999999983118, 0.05, +35.65749999997868, 1.6999999999983118, 0.05, +35.742499999978605, 1.6999999999984539, 0.05, +35.827499999978514, 1.6999999999981696, 0.05, +35.91249999997843, 1.6999999999983118, 0.05, +35.997499999978345, 1.6999999999983118, 0.05, +36.08249999997826, 1.6999999999983118, 0.05, +36.167499999978176, 1.6999999999983118, 0.05, +36.2524999999781, 1.6999999999984539, 0.05, +36.337499999978014, 1.6999999999983118, 0.05, +36.42249999997792, 1.6999999999981696, 0.05, +36.50749999997784, 1.6999999999983118, 0.05, +36.59249999997776, 1.6999999999984539, 0.05, +36.67749999997767, 1.6999999999981696, 0.05, +36.76249999997759, 1.6999999999984539, 0.05, +36.84749999997751, 1.6999999999983118, 0.05, +36.932499999977416, 1.6999999999981696, 0.05, +37.01749999997733, 1.6999999999983118, 0.05, +37.102499999977255, 1.6999999999984539, 0.05, +37.18749999997716, 1.6999999999981696, 0.05, +37.272499999977086, 1.6999999999984539, 0.05, +37.357499999977, 1.6999999999983118, 0.05, +37.44249999997692, 1.6999999999983118, 0.05, +37.527499999976826, 1.6999999999981696, 0.05, +37.61249999997675, 1.6999999999984539, 0.05, +37.697499999976664, 1.6999999999983118, 0.05, +37.78249999997658, 1.6999999999983118, 0.05, +37.867499999976495, 1.6999999999983118, 0.05, +37.95249999997642, 1.6999999999984539, 0.05, +38.037499999976326, 1.6999999999981696, 0.05, +38.12249999997624, 1.6999999999983118, 0.05, +38.20749999997616, 1.6999999999983118, 0.05, +38.29249999997607, 1.6999999999983118, 0.05, +38.37749999997599, 1.6999999999983118, 0.05, +38.46249999997591, 1.6999999999984539, 0.05, +38.54749999997582, 1.6999999999981696, 0.05, +38.632499999975735, 1.6999999999983118, 0.05, +38.71749999997565, 1.6999999999983118, 0.05, +38.802499999975566, 1.6999999999983118, 0.05, +38.88749999997548, 1.6999999999983118, 0.05, +38.972499999975405, 1.6999999999984539, 0.05, +39.05749999997531, 1.6999999999981696, 0.05, +39.14249999997523, 1.6999999999983118, 0.05, +39.22749999997515, 1.6999999999984539, 0.05, +39.31249999997507, 1.6999999999983118, 0.05, +39.39749999997498, 1.6999999999983118, 0.05, +39.4824999999749, 1.6999999999983118, 0.05, +39.567499999974814, 1.6999999999983118, 0.05, +39.65249999997472, 1.6999999999981696, 0.05, +39.737499999974645, 1.6999999999984539, 0.05, +39.82249999997456, 1.6999999999983118, 0.05, +39.907499999974476, 1.6999999999983118, 0.05, +39.99249999997439, 1.6999999999983118, 0.05, +40.077499999974314, 1.6999999999984539, 0.05, +40.162499999974216, 1.6999999999980275, 0.05, +40.24749999997414, 1.6999999999984539, 0.05, +40.332499999974054, 1.6999999999983118, 0.05, +40.41749999997397, 1.6999999999983118, 0.05, +40.502499999973885, 1.6999999999983118, 0.05, +40.58749999997381, 1.6999999999984539, 0.05, +40.67249999997372, 1.6999999999981696, 0.05, +40.75749999997363, 1.6999999999983118, 0.05, +40.84249999997355, 1.6999999999983118, 0.05, +40.92749999997347, 1.6999999999984539, 0.05, +41.01249999997338, 1.6999999999981696, 0.05, +41.0974999999733, 1.6999999999984539, 0.05, +41.18249999997321, 1.6999999999981696, 0.05, +41.267499999973126, 1.6999999999983118, 0.05, +41.35249999997304, 1.6999999999983118, 0.05, +41.437499999972964, 1.6999999999984539, 0.05, +41.52249999997287, 1.6999999999981696, 0.05, +41.607499999972795, 1.6999999999984539, 0.05, +41.69249999997271, 1.6999999999983118, 0.05, +41.77749999997262, 1.6999999999981696, 0.05, +41.862499999972535, 1.6999999999983118, 0.05, +41.94749999997246, 1.6999999999984539, 0.05, +42.03249999997237, 1.6999999999983118, 0.05, +42.11749999997229, 1.6999999999983118, 0.05, +42.202499999972204, 1.6999999999983118, 0.05, +42.28749999997212, 1.6999999999983118, 0.05, +42.372499999972035, 1.6999999999983118, 0.05, +42.45749999997195, 1.6999999999983118, 0.05, +42.54249999997187, 1.6999999999983118, 0.05, +42.62749999997178, 1.6999999999983118, 0.05, +42.7124999999717, 1.6999999999983118, 0.05, +42.79749999997161, 1.6999999999983118, 0.05, +42.88249999997153, 1.6999999999983118, 0.05, +42.967499999971444, 1.6999999999983118, 0.05, +43.05249999997136, 1.6999999999983118, 0.05, +43.137499999971276, 1.6999999999983118, 0.05, +43.22249999997119, 1.6999999999983118, 0.05, +43.30749999997111, 1.6999999999983118, 0.05, +43.39249999997102, 1.6999999999983118, 0.05, +43.47749999997094, 1.6999999999983118, 0.05, +43.56249999997086, 1.6999999999984539, 0.05, +43.647499999970776, 1.6999999999983118, 0.05, +43.73249999997069, 1.6999999999983118, 0.05, +43.81749999997061, 1.6999999999983118, 0.05, +43.90249999997052, 1.6999999999983118, 0.05, +43.98749999997043, 1.6999999999981696, 0.05, +44.072499999970354, 1.6999999999984539, 0.05, +44.15749999997027, 1.6999999999983118, 0.05, +44.242499999970185, 1.6999999999983118, 0.05, +44.3274999999701, 1.6999999999983118, 0.05, +44.41249999997002, 1.6999999999983118, 0.05, +44.497499999969925, 1.6999999999981696, 0.05, +44.58249999996985, 1.6999999999984539, 0.05, +44.66749999996976, 1.6999999999983118, 0.05, +44.75249999996968, 1.6999999999983118, 0.05, +44.837499999969594, 1.6999999999983118, 0.05, +44.92249999996951, 1.6999999999983118, 0.05, +45.007499999969426, 1.6999999999983118, 0.05, +45.09249999996934, 1.6999999999983118, 0.05, +45.17749999996926, 1.6999999999983118, 0.05, +45.26249999996918, 1.6999999999984539, 0.05, +45.34749999996909, 1.6999999999981696, 0.05, +45.432499999969004, 1.6999999999983118, 0.05, +45.51749999996892, 1.6999999999983118, 0.05, +45.602499999968835, 1.6999999999983118, 0.05, +45.68749999996875, 1.6999999999983118, 0.05, +45.77249999996867, 1.6999999999984539, 0.05, +45.85749999996858, 1.6999999999981696, 0.05, +45.942499999968504, 1.6999999999984539, 0.05, +46.02749999996841, 1.6999999999981696, 0.05, +46.11249999996833, 1.6999999999983118, 0.05, +46.197499999968244, 1.6999999999983118, 0.05, +46.28249999996817, 1.6999999999984539, 0.05, +46.36749999996808, 1.6999999999983118, 0.05, +46.452499999968, 1.6999999999983118, 0.05, +46.537499999967906, 1.6999999999981696, 0.05, +46.62249999996783, 1.6999999999984539, 0.05, +46.707499999967744, 1.6999999999983118, 0.05, +46.79249999996766, 1.6999999999983118, 0.05, +46.877499999967576, 1.6999999999983118, 0.05, +46.96249999996749, 1.6999999999983118, 0.05, +47.04749999996741, 1.6999999999983118, 0.05, +47.13249999996732, 1.6999999999983118, 0.05, +47.21749999996724, 1.6999999999983118, 0.05, +47.302499999967154, 1.6999999999983118, 0.05, +47.38749999996707, 1.6999999999983118, 0.05, +47.472499999966985, 1.6999999999983118, 0.05, +47.5574999999669, 1.6999999999983118, 0.05, +47.642499999966816, 1.6999999999983118, 0.05, +47.72749999996673, 1.6999999999983118, 0.05, +47.81249999996665, 1.6999999999983118, 0.05, +47.89749999996656, 1.6999999999983118, 0.05, +47.982499999966485, 1.6999999999984539, 0.05, +48.0674999999664, 1.6999999999983118, 0.05, +48.15249999996631, 1.6999999999981696, 0.05, +48.23749999996623, 1.6999999999984539, 0.05, +48.32249999996614, 1.6999999999981696, 0.05, +48.40749999996606, 1.6999999999984539, 0.05, +48.49249999996598, 1.6999999999983118, 0.05, +48.577499999965895, 1.6999999999983118, 0.05, +48.6624999999658, 1.6999999999981696, 0.05, +48.747499999965726, 1.6999999999984539, 0.05, +48.832499999965634, 1.6999999999981696, 0.05, +48.91749999996556, 1.6999999999984539, 0.05, +49.00249999996547, 1.6999999999983118, 0.05, +49.08749999996539, 1.6999999999983118, 0.05, +49.1724999999653, 1.6999999999981696, 0.05, +49.25749999996522, 1.6999999999984539, 0.05, +49.342499999965135, 1.6999999999983118, 0.05, +49.42749999996505, 1.6999999999983118, 0.05, +49.512499999964966, 1.6999999999983118, 0.05, +49.59749999996489, 1.6999999999984539, 0.05, +49.68249999996479, 1.6999999999980275, 0.05, +49.76749999996471, 1.6999999999984539, 0.05, +49.85249999996463, 1.6999999999983118, 0.05, +49.937499999964544, 1.6999999999983118, 0.05, +50.02249999996459, 1.7000000000008697, 0.05, +50.10749999996498, 1.700000000007833, 0.05, +50.19249999996537, 1.700000000007833, 0.05, +50.27749999996576, 1.700000000007833, 0.05, +50.36249999996614, 1.7000000000075488, 0.05, +50.44749999996653, 1.700000000007833, 0.05, +50.53249999996691, 1.7000000000075488, 0.05, +50.6174999999673, 1.700000000007833, 0.05, +50.70249999996769, 1.700000000007833, 0.05, +50.78749999996808, 1.700000000007691, 0.05, +50.87249999996846, 1.700000000007691, 0.05, +50.95749999996885, 1.700000000007833, 0.05, +51.04249999996924, 1.700000000007691, 0.05, +51.12749999996963, 1.700000000007833, 0.05, +51.21249999997002, 1.700000000007833, 0.05, +51.29749999997041, 1.700000000007833, 0.05, +51.382499999970804, 1.700000000007833, 0.05, +51.46749999997118, 1.7000000000075488, 0.05, +51.55249999997156, 1.7000000000075488, 0.05, +51.63749999997195, 1.700000000007833, 0.05, +51.72249999997234, 1.700000000007833, 0.05, +51.80749999997273, 1.700000000007691, 0.05, +51.89249999997312, 1.700000000007833, 0.05, +51.9774999999735, 1.700000000007691, 0.05, +52.06249999997389, 1.700000000007691, 0.05, +52.14749999997428, 1.700000000007833, 0.05, +52.23249999997467, 1.700000000007833, 0.05, +52.31749999997506, 1.700000000007833, 0.05, +52.402499999975454, 1.700000000007833, 0.05, +52.48749999997583, 1.7000000000075488, 0.05, +52.57249999997622, 1.700000000007833, 0.05, +52.6574999999766, 1.7000000000075488, 0.05, +52.74249999997699, 1.700000000007833, 0.05, +52.827499999977384, 1.700000000007833, 0.05, +52.91249999997777, 1.700000000007691, 0.05, +52.99749999997816, 1.700000000007833, 0.05, +53.08249999997854, 1.7000000000075488, 0.05, +53.16749999997893, 1.700000000007833, 0.05, +53.25249999997932, 1.700000000007833, 0.05, +53.33749999997971, 1.700000000007833, 0.05, +53.422499999980104, 1.700000000007833, 0.05, +53.50749999998049, 1.700000000007691, 0.05, +53.59249999998087, 1.700000000007691, 0.05, +53.67749999998125, 1.7000000000075488, 0.05, +53.76249999998164, 1.700000000007833, 0.05, +53.847499999982034, 1.700000000007833, 0.05, +53.93249999998242, 1.700000000007691, 0.05, +54.01749999998281, 1.700000000007833, 0.05, +54.10249999998319, 1.7000000000075488, 0.05, +54.18749999998358, 1.700000000007833, 0.05, +54.27249999998397, 1.700000000007833, 0.05, +54.35749999998436, 1.700000000007833, 0.05, +54.442499999984754, 1.700000000007833, 0.05, +54.527499999985146, 1.700000000007833, 0.05, +54.61249999998553, 1.700000000007691, 0.05, +54.697499999985915, 1.700000000007691, 0.05, +54.78249999998629, 1.7000000000075488, 0.05, +54.867499999986684, 1.700000000007833, 0.05, +54.952499999987076, 1.700000000007833, 0.05, +55.03749999998746, 1.700000000007691, 0.05, +55.12249999998785, 1.700000000007833, 0.05, +55.20749999998823, 1.7000000000075488, 0.05, +55.29249999998862, 1.700000000007833, 0.05, +55.37749999998901, 1.700000000007833, 0.05, +55.462499999989404, 1.700000000007833, 0.05, +55.547499999989796, 1.700000000007833, 0.05, +55.63249999999018, 1.700000000007691, 0.05, +55.71749999999057, 1.700000000007833, 0.05, +55.80249999999094, 1.7000000000074067, 0.05, +55.887499999991334, 1.700000000007833, 0.05, +55.972499999991726, 1.700000000007833, 0.05, +56.05749999999211, 1.700000000007691, 0.05, +56.1424999999925, 1.700000000007833, 0.05, +56.227499999992894, 1.700000000007833, 0.05, +56.31249999999327, 1.7000000000075488, 0.05, +56.39749999999366, 1.700000000007833, 0.05, +56.482499999994054, 1.700000000007833, 0.05, +56.567499999994446, 1.700000000007833, 0.05, +56.65249999999484, 1.700000000007833, 0.05, +56.73749999999522, 1.700000000007691, 0.05, +56.82249999999561, 1.700000000007691, 0.05, +56.907499999995984, 1.7000000000075488, 0.05, +56.992499999996376, 1.700000000007833, 0.05, +57.07749999999676, 1.700000000007691, 0.05, +57.16249999999715, 1.700000000007833, 0.05, +57.247499999997544, 1.700000000007833, 0.05, +57.332499999997935, 1.700000000007833, 0.05, +57.41749999999831, 1.7000000000075488, 0.05, +57.502499999998705, 1.700000000007833, 0.05, +57.587499999999096, 1.700000000007833, 0.05, +57.67249999999949, 1.700000000007833, 0.05, +57.75749999999987, 1.700000000007691, 0.05, +57.842500000000264, 1.700000000007833, 0.05, +57.927500000000634, 1.7000000000074067, 0.05, +58.012500000001026, 1.700000000007833, 0.05, +58.09750000000141, 1.700000000007691, 0.05, +58.1825000000018, 1.700000000007833, 0.05, +58.267500000002194, 1.700000000007833, 0.05, +58.352500000002586, 1.700000000007833, 0.05, +58.43750000000296, 1.7000000000075488, 0.05, +58.522500000003355, 1.700000000007833, 0.05, +58.607500000003746, 1.700000000007833, 0.05, +58.69250000000414, 1.700000000007833, 0.05, +58.77750000000452, 1.700000000007691, 0.05, +58.862500000004914, 1.700000000007833, 0.05, +58.947500000005306, 1.700000000007833, 0.05, +59.032500000005676, 1.7000000000074067, 0.05, +59.11750000000607, 1.700000000007833, 0.05, +59.20250000000645, 1.700000000007691, 0.05, +59.287500000006844, 1.700000000007833, 0.05, +59.372500000007236, 1.700000000007833, 0.05, +59.45750000000763, 1.700000000007833, 0.05, +59.542500000008005, 1.7000000000075488, 0.05, +59.627500000008396, 1.700000000007833, 0.05, +59.71250000000879, 1.700000000007833, 0.05, +59.79750000000917, 1.700000000007691, 0.05, +59.882500000009564, 1.700000000007833, 0.05, +59.967500000009956, 1.700000000007833, 0.05, +60.05250000001033, 1.7000000000075488, 0.05, +60.13750000001072, 1.700000000007691, 0.05, +60.2225000000111, 1.700000000007691, 0.05, +60.307500000011494, 1.700000000007833, 0.05, +60.392500000011886, 1.700000000007833, 0.05, +60.47750000001228, 1.700000000007833, 0.05, +60.56250000001267, 1.700000000007833, 0.05, +60.647500000013046, 1.7000000000075488, 0.05, +60.73250000001344, 1.700000000007833, 0.05, +60.81750000001383, 1.700000000007833, 0.05, +60.902500000014214, 1.700000000007691, 0.05, +60.987500000014606, 1.700000000007833, 0.05, +61.072500000015, 1.700000000007833, 0.05, +61.15750000001537, 1.7000000000074067, 0.05, +61.24250000001576, 1.700000000007833, 0.05, +61.327500000016144, 1.700000000007691, 0.05, +61.412500000016536, 1.700000000007833, 0.05, +61.49750000001693, 1.700000000007833, 0.05, +61.58250000001732, 1.700000000007833, 0.05, +61.66750000001771, 1.700000000007833, 0.05, +61.75250000001809, 1.7000000000075488, 0.05, +61.83750000001848, 1.700000000007833, 0.05, +61.922500000018864, 1.700000000007691, 0.05, +62.007500000019256, 1.700000000007833, 0.05, +62.09250000001965, 1.700000000007833, 0.05, +62.177500000020025, 1.7000000000075488, 0.05, +62.26250000002041, 1.700000000007691, 0.05, +62.347500000020794, 1.700000000007691, 0.05, +62.432500000021186, 1.700000000007833, 0.05, +62.51750000002158, 1.700000000007833, 0.05, +62.60250000002197, 1.700000000007833, 0.05, +62.68750000002236, 1.700000000007833, 0.05, +62.77250000002274, 1.7000000000075488, 0.05, +62.85750000002313, 1.700000000007833, 0.05, +62.94250000002352, 1.700000000007833, 0.05, +63.027500000023906, 1.700000000007691, 0.05, +63.1125000000243, 1.700000000007833, 0.05, +63.19750000002469, 1.700000000007833, 0.05, +63.28250000002507, 1.7000000000075488, 0.05, +63.367500000025444, 1.7000000000075488, 0.05, +63.452500000025836, 1.700000000007833, 0.05, +63.53750000002623, 1.700000000007833, 0.05, +63.62250000002662, 1.700000000007833, 0.05, +63.70750000002701, 1.700000000007833, 0.05, +63.792500000027395, 1.700000000007691, 0.05, +63.87750000002778, 1.700000000007691, 0.05, +63.96250000002817, 1.700000000007833, 0.05, +64.04750000002855, 1.700000000007691, 0.05, +64.13250000002893, 1.7000000000075488, 0.05, +64.2175000000293, 1.7000000000075488, 0.05, +64.3025000000297, 1.700000000007833, 0.05, +64.38750000003007, 1.7000000000075488, 0.05, +64.47250000003045, 1.7000000000075488, 0.05, +64.55750000003083, 1.7000000000075488, 0.05, +64.64250000003122, 1.700000000007833, 0.05, +64.7275000000316, 1.7000000000075488, 0.05, +64.81250000003197, 1.7000000000075488, 0.05, +64.89750000003237, 1.700000000007833, 0.05, +64.98250000003273, 1.7000000000072646, 0.05, +65.0675000000331, 1.7000000000075488, 0.05, +65.1525000000335, 1.700000000007833, 0.05, +65.23750000003388, 1.7000000000075488, 0.05, +65.32250000003427, 1.700000000007833, 0.05, +65.40750000003464, 1.7000000000075488, 0.05, +65.49250000003501, 1.7000000000072646, 0.05, +65.5775000000354, 1.700000000007833, 0.05, +65.66250000003578, 1.7000000000075488, 0.05, +65.74750000003615, 1.7000000000075488, 0.05, +65.83250000003655, 1.700000000007833, 0.05, +65.91750000003692, 1.7000000000075488, 0.05, +66.0025000000373, 1.7000000000075488, 0.05, +66.08750000003768, 1.7000000000075488, 0.05, +66.17250000003807, 1.700000000007833, 0.05, +66.25750000003845, 1.7000000000075488, 0.05, +66.34250000003883, 1.7000000000075488, 0.05, +66.42750000003922, 1.700000000007833, 0.05, +66.5125000000396, 1.7000000000075488, 0.05, +66.59750000003996, 1.7000000000072646, 0.05, +66.68250000004033, 1.7000000000075488, 0.05, +66.76750000004073, 1.700000000007833, 0.05, +66.8525000000411, 1.7000000000075488, 0.05, +66.9375000000415, 1.700000000007833, 0.05, +67.02250000004187, 1.7000000000075488, 0.05, +67.10750000004226, 1.700000000007833, 0.05, +67.19250000004263, 1.7000000000072646, 0.05, +67.277500000043, 1.7000000000075488, 0.05, +67.3625000000434, 1.700000000007833, 0.05, +67.44750000004377, 1.7000000000075488, 0.05, +67.53250000004415, 1.7000000000075488, 0.05, +67.61750000004453, 1.7000000000075488, 0.05, +67.7025000000449, 1.7000000000075488, 0.05, +67.7875000000453, 1.700000000007833, 0.05, +67.87250000004568, 1.7000000000075488, 0.05, +67.95750000004607, 1.700000000007833, 0.05, +68.04250000004645, 1.7000000000075488, 0.05, +68.12750000004682, 1.7000000000075488, 0.05, +68.21250000004719, 1.7000000000072646, 0.05, +68.29750000004758, 1.700000000007833, 0.05, +68.38250000004795, 1.7000000000075488, 0.05, +68.46750000004833, 1.7000000000075488, 0.05, +68.55250000004872, 1.700000000007833, 0.05, +68.6375000000491, 1.7000000000075488, 0.05, +68.7225000000495, 1.700000000007833, 0.05, +68.80750000004986, 1.7000000000072646, 0.05, +68.89250000005025, 1.700000000007833, 0.05, +68.97750000005063, 1.7000000000075488, 0.05, +69.062500000051, 1.7000000000075488, 0.05, +69.1475000000514, 1.700000000007833, 0.05, +69.23250000005177, 1.7000000000075488, 0.05, +69.31750000005214, 1.7000000000072646, 0.05, +69.40250000005253, 1.700000000007833, 0.05, +69.4875000000529, 1.7000000000075488, 0.05, +69.5725000000533, 1.700000000007833, 0.05, +69.65750000005367, 1.7000000000075488, 0.05, +69.74250000005405, 1.7000000000075488, 0.05, +69.82750000005443, 1.7000000000075488, 0.05, +69.9125000000548, 1.7000000000075488, 0.05, +69.99750000005518, 1.7000000000075488, 0.05, +70.08250000005557, 1.700000000007833, 0.05, +70.16750000005595, 1.7000000000075488, 0.05, +70.25250000005633, 1.7000000000075488, 0.05, +70.3375000000567, 1.7000000000075488, 0.05, +70.4225000000571, 1.700000000007833, 0.05, +70.50750000005748, 1.7000000000075488, 0.05, +70.59250000005785, 1.7000000000075488, 0.05, +70.67750000005825, 1.700000000007833, 0.05, +70.76250000005862, 1.7000000000075488, 0.05, +70.847500000059, 1.7000000000075488, 0.05, +70.93250000005936, 1.7000000000072646, 0.05, +71.01750000005975, 1.700000000007833, 0.05, +71.10250000006013, 1.7000000000075488, 0.05, +71.18750000006052, 1.700000000007833, 0.05, +71.2725000000609, 1.7000000000075488, 0.05, +71.3575000000613, 1.700000000007833, 0.05, +71.44250000006167, 1.7000000000075488, 0.05, +71.52750000006203, 1.7000000000072646, 0.05, +71.61250000006243, 1.700000000007833, 0.05, +71.6975000000628, 1.7000000000075488, 0.05, +71.78250000006318, 1.7000000000075488, 0.05, +71.86750000006356, 1.7000000000075488, 0.05, +71.95250000006395, 1.700000000007833, 0.05, +72.03750000006433, 1.7000000000075488, 0.05, +72.1225000000647, 1.7000000000075488, 0.05, +72.2075000000651, 1.700000000007833, 0.05, +72.29250000006547, 1.7000000000075488, 0.05, +72.37750000006585, 1.7000000000075488, 0.05, +72.46250000006623, 1.7000000000075488, 0.05, +72.5475000000666, 1.7000000000075488, 0.05, +72.63250000006698, 1.7000000000075488, 0.05, +72.71750000006736, 1.7000000000075488, 0.05, +72.80250000006775, 1.700000000007833, 0.05, +72.88750000006813, 1.7000000000075488, 0.05, +72.97250000006851, 1.7000000000075488, 0.05, +73.0575000000689, 1.700000000007833, 0.05, +73.14250000006928, 1.7000000000075488, 0.05, +73.22750000006965, 1.7000000000075488, 0.05, +73.31250000007003, 1.7000000000075488, 0.05, +73.39750000007042, 1.700000000007833, 0.05, +73.4825000000708, 1.7000000000075488, 0.05, +73.56750000007118, 1.7000000000075488, 0.05, +73.65250000007154, 1.7000000000072646, 0.05, +73.73750000007193, 1.700000000007833, 0.05, +73.82250000007231, 1.7000000000075488, 0.05, +73.9075000000727, 1.700000000007833, 0.05, +73.99250000007308, 1.7000000000075488, 0.05, +74.07750000007347, 1.700000000007833, 0.05, +74.16250000007383, 1.7000000000072646, 0.05, +74.24750000007421, 1.7000000000075488, 0.05, +74.3325000000746, 1.700000000007833, 0.05, +74.41750000007498, 1.7000000000075488, 0.05, +74.50250000007536, 1.7000000000075488, 0.05, +74.58750000007574, 1.7000000000075488, 0.05, +74.67250000007613, 1.700000000007833, 0.05, +74.7575000000765, 1.7000000000075488, 0.05, +74.84250000007688, 1.7000000000075488, 0.05, +74.92750000007727, 1.700000000007833, 0.05, +75.01250000007765, 1.7000000000075488, 0.05, +75.09750000007803, 1.7000000000075488, 0.05, +75.1825000000784, 1.7000000000075488, 0.05, +75.26750000007878, 1.7000000000075488, 0.05, +75.35250000007916, 1.7000000000075488, 0.05, +75.43750000007954, 1.7000000000075488, 0.05, +75.52250000007993, 1.700000000007833, 0.05, +75.60750000008031, 1.7000000000075488, 0.05, +75.6925000000807, 1.700000000007833, 0.05, +75.77750000008108, 1.7000000000075488, 0.05, +75.86250000008145, 1.7000000000075488, 0.05, +75.94750000008183, 1.7000000000075488, 0.05, +76.03250000008221, 1.7000000000075488, 0.05, +76.11750000008259, 1.7000000000075488, 0.05, +76.20250000008298, 1.700000000007833, 0.05, +76.28750000008336, 1.7000000000075488, 0.05, +76.37250000008373, 1.7000000000075488, 0.05, +76.45750000008412, 1.700000000007833, 0.05, +76.5425000000845, 1.7000000000075488, 0.05, +76.62750000008488, 1.7000000000075488, 0.05, +76.71250000008526, 1.7000000000075488, 0.05, +76.79750000008565, 1.700000000007833, 0.05, +76.88250000008601, 1.7000000000072646, 0.05, +76.96750000008639, 1.7000000000075488, 0.05, +77.05250000008678, 1.700000000007833, 0.05, +77.13750000008716, 1.7000000000075488, 0.05, +77.22250000008754, 1.7000000000075488, 0.05, +77.30750000008793, 1.700000000007833, 0.05, +77.3925000000883, 1.7000000000075488, 0.05, +77.47750000008868, 1.7000000000075488, 0.05, +77.56250000008906, 1.7000000000075488, 0.05, +77.64750000008945, 1.700000000007833, 0.05, +77.73250000008983, 1.7000000000075488, 0.05, +77.8175000000902, 1.7000000000075488, 0.05, +77.90250000009058, 1.7000000000075488, 0.05, +77.98750000009096, 1.7000000000075488, 0.05, +78.07250000009134, 1.7000000000075488, 0.05, +78.15750000009173, 1.700000000007833, 0.05, +78.24250000009211, 1.7000000000075488, 0.05, +78.3275000000925, 1.700000000007833, 0.05, +78.41250000009288, 1.7000000000075488, 0.05, +78.49750000009324, 1.7000000000072646, 0.05, +78.58250000009363, 1.700000000007833, 0.05, +78.66750000009401, 1.7000000000075488, 0.05, +78.75250000009439, 1.7000000000075488, 0.05, +78.83750000009476, 1.7000000000075488, 0.05, +78.92250000009516, 1.700000000007833, 0.05, +79.00750000009553, 1.7000000000075488, 0.05, +79.09250000009591, 1.7000000000075488, 0.05, +79.1775000000963, 1.700000000007833, 0.05, +79.26250000009668, 1.7000000000075488, 0.05, +79.34750000009706, 1.7000000000075488, 0.05, +79.43250000009743, 1.7000000000075488, 0.05, +79.51750000009783, 1.700000000007833, 0.05, +79.60250000009819, 1.7000000000072646, 0.05, +79.68750000009857, 1.7000000000075488, 0.05, +79.77250000009896, 1.700000000007833, 0.05, +79.85750000009934, 1.7000000000075488, 0.05, +79.94250000009973, 1.700000000007833, 0.05, +80.0275000001001, 1.7000000000075488, 0.05, +80.1125000001005, 1.700000000007833, 0.05, +80.19750000010086, 1.7000000000072646, 0.05, +80.28250000010124, 1.7000000000075488, 0.05, +80.36750000010161, 1.7000000000075488, 0.05, +80.452500000102, 1.700000000007833, 0.05, +80.53750000010238, 1.7000000000075488, 0.05, +80.62250000010276, 1.7000000000075488, 0.05, +80.70750000010314, 1.7000000000075488, 0.05, +80.79250000010353, 1.700000000007833, 0.05, +80.87750000010391, 1.7000000000075488, 0.05, +80.96250000010428, 1.7000000000075488, 0.05, +81.04750000010468, 1.700000000007833, 0.05, +81.13250000010505, 1.7000000000075488, 0.05, +81.21750000010542, 1.7000000000072646, 0.05, +81.30250000010581, 1.700000000007833, 0.05, +81.38750000010619, 1.7000000000075488, 0.05, +81.47250000010656, 1.7000000000075488, 0.05, +81.55750000010694, 1.7000000000075488, 0.05, +81.64250000010733, 1.700000000007833, 0.05, +81.72750000010772, 1.700000000007833, 0.05, +81.81250000010809, 1.7000000000072646, 0.05, +81.89750000010848, 1.700000000007833, 0.05, +81.98250000010886, 1.7000000000075488, 0.05, +82.06750000010923, 1.7000000000075488, 0.05, +82.15250000010961, 1.7000000000075488, 0.05, +82.23750000011, 1.700000000007833, 0.05, +82.32250000011037, 1.7000000000072646, 0.05, +82.40750000011074, 1.7000000000075488, 0.05, +82.49250000011114, 1.700000000007833, 0.05, +82.57750000011153, 1.700000000007833, 0.05, +82.6625000001119, 1.7000000000075488, 0.05, +82.74750000011228, 1.7000000000075488, 0.05, +82.83250000011266, 1.7000000000075488, 0.05, +82.91750000011304, 1.7000000000075488, 0.05, +83.00250000011341, 1.7000000000075488, 0.05, +83.08750000011379, 1.7000000000075488, 0.05, +83.17250000011418, 1.700000000007833, 0.05, +83.25750000011456, 1.7000000000075488, 0.05, +83.34250000011494, 1.7000000000075488, 0.05, +83.42750000011533, 1.700000000007833, 0.05, +83.51250000011571, 1.7000000000075488, 0.05, +83.59750000011609, 1.7000000000075488, 0.05, +83.68250000011646, 1.7000000000075488, 0.05, +83.76750000011685, 1.700000000007833, 0.05, +83.85250000011723, 1.7000000000075488, 0.05, +83.9375000001176, 1.7000000000072646, 0.05, +84.02250000011799, 1.700000000007833, 0.05, +84.10750000011836, 1.7000000000075488, 0.05, +84.19250000011874, 1.7000000000075488, 0.05, +84.27750000011913, 1.700000000007833, 0.05, +84.36250000011951, 1.7000000000075488, 0.05, +84.4475000001199, 1.700000000007833, 0.05, +84.53250000012027, 1.7000000000072646, 0.05, +84.61750000012064, 1.7000000000075488, 0.05, +84.70250000012103, 1.700000000007833, 0.05, +84.78750000012141, 1.7000000000075488, 0.05, +84.87250000012179, 1.7000000000075488, 0.05, +84.95750000012218, 1.700000000007833, 0.05, +85.04250000012256, 1.7000000000075488, 0.05, +85.12750000012294, 1.7000000000075488, 0.05, +85.21250000012331, 1.7000000000075488, 0.05, +85.2975000001237, 1.700000000007833, 0.05, +85.38250000012408, 1.7000000000075488, 0.05, +85.46750000012446, 1.7000000000075488, 0.05, +85.55250000012484, 1.7000000000075488, 0.05, +85.63750000012521, 1.7000000000075488, 0.05, +85.72250000012559, 1.7000000000075488, 0.05, +85.80750000012597, 1.7000000000075488, 0.05, +85.89250000012636, 1.700000000007833, 0.05, +85.97750000012674, 1.7000000000075488, 0.05, +86.06250000012713, 1.700000000007833, 0.05, +86.14750000012751, 1.7000000000075488, 0.05, +86.23250000012789, 1.7000000000075488, 0.05, +86.31750000012826, 1.7000000000075488, 0.05, +86.40250000012864, 1.7000000000075488, 0.05, +86.48750000012903, 1.700000000007833, 0.05, +86.57250000012941, 1.7000000000075488, 0.05, +86.65750000012977, 1.7000000000072646, 0.05, +86.74250000013016, 1.700000000007833, 0.05, +86.82750000013054, 1.7000000000075488, 0.05, +86.91250000013093, 1.700000000007833, 0.05, +86.99750000013131, 1.7000000000075488, 0.05, +87.0825000001317, 1.700000000007833, 0.05, +87.16750000013207, 1.7000000000072646, 0.05, +87.25250000013244, 1.7000000000075488, 0.05, +87.33750000013282, 1.7000000000075488, 0.05, +87.42250000013321, 1.700000000007833, 0.05, +87.50750000013359, 1.7000000000075488, 0.05, +87.59250000013397, 1.7000000000075488, 0.05, +87.67750000013436, 1.700000000007833, 0.05, +87.76250000013474, 1.7000000000075488, 0.05, +87.84750000013511, 1.7000000000075488, 0.05, +87.93250000013549, 1.7000000000075488, 0.05, +88.01750000013588, 1.700000000007833, 0.05, +88.10250000013626, 1.7000000000075488, 0.05, +88.18750000013664, 1.7000000000075488, 0.05, +88.27250000013701, 1.7000000000075488, 0.05, +88.35750000013739, 1.7000000000075488, 0.05, +88.44250000013777, 1.7000000000075488, 0.05, +88.52750000013816, 1.700000000007833, 0.05, +88.61250000013854, 1.7000000000075488, 0.05, +88.69750000013893, 1.700000000007833, 0.05, +88.78250000013931, 1.7000000000075488, 0.05, +88.86750000013967, 1.7000000000072646, 0.05, +88.95250000014006, 1.700000000007833, 0.05, +89.03750000014044, 1.7000000000075488, 0.05, +89.12250000014082, 1.7000000000075488, 0.05, +89.20750000014121, 1.700000000007833, 0.05, +89.29250000014159, 1.7000000000075488, 0.05, +89.37750000014196, 1.7000000000075488, 0.05, +89.46250000014234, 1.7000000000075488, 0.05, +89.54750000014273, 1.700000000007833, 0.05, +89.63250000014311, 1.7000000000075488, 0.05, +89.71750000014349, 1.7000000000075488, 0.05, +89.80250000014388, 1.700000000007833, 0.05, +89.88750000014424, 1.7000000000072646, 0.05, +89.97250000014462, 1.7000000000075488, 0.05, +90.057500000145, 1.7000000000075488, 0.05, +90.14250000014539, 1.700000000007833, 0.05, +90.22750000014577, 1.7000000000075488, 0.05, +90.31250000014616, 1.700000000007833, 0.05, +90.39750000014654, 1.7000000000075488, 0.05, +90.48250000014691, 1.7000000000075488, 0.05, +90.56750000014729, 1.7000000000075488, 0.05, +90.65250000014767, 1.7000000000075488, 0.05, +90.73750000014806, 1.700000000007833, 0.05, +90.82250000014844, 1.7000000000075488, 0.05, +90.90750000014881, 1.7000000000075488, 0.05, +90.99250000014918, 1.7000000000072646, 0.05, +91.07750000014957, 1.700000000007833, 0.05, +91.16250000014996, 1.700000000007833, 0.05, +91.24750000015034, 1.7000000000075488, 0.05, +91.33250000015073, 1.700000000007833, 0.05, +91.41750000015111, 1.7000000000075488, 0.05, +91.50250000015147, 1.7000000000072646, 0.05, +91.58750000015185, 1.7000000000075488, 0.05, +91.67250000015224, 1.700000000007833, 0.05, +91.75750000015262, 1.7000000000075488, 0.05, +91.842500000153, 1.7000000000075488, 0.05, +91.92750000015339, 1.700000000007833, 0.05, +92.01250000015376, 1.7000000000075488, 0.05, +92.09750000015414, 1.7000000000075488, 0.05, +92.18250000015452, 1.7000000000075488, 0.05, +92.26750000015491, 1.700000000007833, 0.05, +92.35250000015529, 1.7000000000075488, 0.05, +92.43750000015567, 1.7000000000075488, 0.05, +92.52250000015606, 1.700000000007833, 0.05, +92.60750000015642, 1.7000000000072646, 0.05, +92.6925000001568, 1.7000000000075488, 0.05, +92.77750000015718, 1.7000000000075488, 0.05, +92.86250000015757, 1.700000000007833, 0.05, +92.94750000015794, 1.7000000000075488, 0.05, +93.03250000015834, 1.700000000007833, 0.05, +93.11750000015871, 1.7000000000075488, 0.05, +93.20250000015909, 1.7000000000075488, 0.05, +93.28750000015947, 1.7000000000075488, 0.05, +93.37250000015985, 1.7000000000075488, 0.05, +93.45750000016024, 1.700000000007833, 0.05, +93.54250000016062, 1.7000000000075488, 0.05, +93.62750000016099, 1.7000000000075488, 0.05, +93.71250000016137, 1.7000000000075488, 0.05, +93.79750000016176, 1.700000000007833, 0.05, +93.88250000016214, 1.7000000000075488, 0.05, +93.96750000016252, 1.7000000000075488, 0.05, +94.05250000016291, 1.700000000007833, 0.05, +94.13750000016329, 1.7000000000075488, 0.05, +94.22250000016365, 1.7000000000072646, 0.05, +94.30750000016403, 1.7000000000075488, 0.05, +94.39250000016442, 1.700000000007833, 0.05, +94.4775000001648, 1.7000000000075488, 0.05, +94.56250000016517, 1.7000000000075488, 0.05, +94.64750000016556, 1.700000000007833, 0.05, +94.73250000016594, 1.7000000000075488, 0.05, +94.81750000016632, 1.7000000000075488, 0.05, +94.9025000001667, 1.7000000000075488, 0.05, +94.98750000016709, 1.700000000007833, 0.05, +95.07250000016747, 1.7000000000075488, 0.05, +95.15750000016784, 1.7000000000075488, 0.05, +95.24250000016822, 1.7000000000075488, 0.05, +95.3275000001686, 1.7000000000075488, 0.05, +95.41250000016898, 1.7000000000075488, 0.05, +95.49750000016937, 1.700000000007833, 0.05, +95.58250000016976, 1.700000000007833, 0.05, +95.66750000017014, 1.7000000000075488, 0.05, +95.75250000017051, 1.7000000000075488, 0.05, +95.83750000017089, 1.7000000000075488, 0.05, +95.92250000017127, 1.7000000000075488, 0.05, +96.00750000017165, 1.7000000000075488, 0.05, +96.09250000017202, 1.7000000000075488, 0.05, +96.17750000017242, 1.700000000007833, 0.05, +96.26250000017279, 1.7000000000075488, 0.05, +96.34750000017317, 1.7000000000075488, 0.05, +96.43250000017355, 1.7000000000075488, 0.05, +96.51750000017394, 1.700000000007833, 0.05, +96.60250000017432, 1.7000000000075488, 0.05, +96.6875000001747, 1.7000000000075488, 0.05, +96.77250000017509, 1.700000000007833, 0.05, +96.85750000017546, 1.7000000000075488, 0.05, +96.94250000017583, 1.7000000000072646, 0.05, +97.0275000001762, 1.7000000000075488, 0.05, +97.1125000001766, 1.700000000007833, 0.05, +97.19750000017697, 1.7000000000075488, 0.05, +97.28250000017736, 1.700000000007833, 0.05, +97.36750000017774, 1.7000000000075488, 0.05, +97.45250000017813, 1.700000000007833, 0.05, +97.5375000001785, 1.7000000000072646, 0.05, +97.62250000017887, 1.7000000000075488, 0.05, +97.70750000017927, 1.700000000007833, 0.05, +97.79250000017964, 1.7000000000075488, 0.05, +97.87750000018002, 1.7000000000075488, 0.05, +97.9625000001804, 1.7000000000075488, 0.05, +98.04750000018078, 1.7000000000075488, 0.05, +98.13250000018117, 1.700000000007833, 0.05, +98.21750000018154, 1.7000000000075488, 0.05, +98.30250000018194, 1.700000000007833, 0.05, +98.38750000018231, 1.7000000000075488, 0.05, +98.47250000018269, 1.7000000000075488, 0.05, +98.55750000018305, 1.7000000000072646, 0.05, +98.64250000018345, 1.700000000007833, 0.05, +98.72750000018382, 1.7000000000075488, 0.05, +98.8125000001842, 1.7000000000075488, 0.05, +98.89750000018459, 1.700000000007833, 0.05, +98.98250000018497, 1.7000000000075488, 0.05, +99.06750000018536, 1.700000000007833, 0.05, +99.15250000018573, 1.7000000000072646, 0.05, +99.23750000018612, 1.700000000007833, 0.05, +99.3212058825338, 1.6741176469537322, 0.05, +99.40111764722877, 1.5982352938993927, 0.05, +99.47602941192372, 1.4982352938989152, 0.05, +99.54594117661864, 1.3982352938984377, 0.05, +99.61085294131355, 1.2982352938982444, 0.05, +99.67076470600844, 1.198235293897767, 0.05, +99.7256764707033, 1.0982352938972895, 0.05, +99.77558823539815, 0.998235293896812, 0.05, +99.82050000009296, 0.8982352938963345, 0.05, +99.86041176478777, 0.7982352938961412, 0.05, +99.89532352948254, 0.6982352938953795, 0.05, +99.92523529417728, 0.598235293894902, 0.05, +99.95014705887202, 0.4982352938947088, 0.05, +99.97005882356672, 0.3982352938939471, 0.05, +99.98497058826139, 0.2982352938934696, 0.05, +99.99488235295604, 0.1982352938929921, 0.05, +99.99979411765068, 0.09823529389279884, 0.05, +100.00099999999797, 0.02411764694585372, 0.05, +100.00099999999797, 0.0, 0.05, \ No newline at end of file From 5fb17cbfa5fd9cb6a26017933d83f05ef552df0c Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 15 Feb 2017 11:34:40 -0500 Subject: [PATCH 04/66] Invert right side velocity SP --- .../robot/drive/talonCluster/commands/ExecuteProfile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index d787c375..854a4420 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -156,7 +156,7 @@ private void startFilling() { for (int i = 0; i < rightProfile.data.length; ++i) { // Set all the fields of the profile point point.position = rightProfile.data[i][0] * 2048 / 4 * Math.PI ; - point.velocity = rightProfile.data[i][1] * 2048 / 4 * Math.PI ; + point.velocity = rightProfile.data[i][1] * 2048 / 4 * Math.PI * -1; point.timeDurMs = (int) rightProfile.data[i][2]; point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward From 28e05563ab6e0f1f75ea77cc215d6438c3abcf22 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Sun, 19 Feb 2017 23:48:45 -0500 Subject: [PATCH 05/66] Tune 2 sided MP for missing straight line path Tune for a left and right profile that only drive straight to the peg and stop. Those profile files were lost but can be easily regenerated. The current profile is supposed to go to the left side peg, however it appears to be off by a constant factor. --- build.gradle | 5 +- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../robot/components/UnitlessCANTalonSRX.java | 2 +- .../drive/talonCluster/TalonClusterDrive.java | 8 +- .../talonCluster/commands/ExecuteProfile.java | 26 +- .../talonCluster/TalonClusterDrive.proto | 1 + src/main/resources/leftProfile.csv | 2343 ++++++++--------- src/main/resources/map.cfg | 71 +- src/main/resources/rightProfile.csv | 2343 ++++++++--------- 10 files changed, 2355 insertions(+), 2446 deletions(-) diff --git a/build.gradle b/build.gradle index 0a5f807b..223edb1d 100644 --- a/build.gradle +++ b/build.gradle @@ -94,8 +94,9 @@ task convertFiles{ } frc { - //deployers += [to: "/home/lvuser/map.cfg", from: './src/main/resources/map.cfg'] - //deployers += [to: "/home/lvuser/profile.csv", from: './src/main/resources/profile.csv'] +// deployers += [to: "/home/lvuser/map.cfg", from: './src/main/resources/map.cfg'] +// deployers += [to: "/home/lvuser/profile.csv", from: './src/main/resources/profile.csv'] +// deployers += [to: "/home/lvuser/profile.csv", from: './src/main/resources/profile.csv'] team = '449' robotClass = "org.usfirst.frc.team449.robot.Robot" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2abf394885481560b29e12e0fec86fb50d8a5047..12f5e648374b5c34afcab4aef2987d5fff210f10 100644 GIT binary patch delta 26 gcmX@GocX|V<_*z@m>VYsZ;m@8BnV no position servo just velocity feedforward @@ -155,8 +157,8 @@ private void startFilling() { for (int i = 0; i < rightProfile.data.length; ++i) { // Set all the fields of the profile point - point.position = rightProfile.data[i][0] * 2048 / 4 * Math.PI ; - point.velocity = rightProfile.data[i][1] * 2048 / 4 * Math.PI * -1; + point.position = -inchesToNative(rightProfile.data[i][0]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); + point.velocity = -inchesToNative(rightProfile.data[i][1]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); point.timeDurMs = (int) rightProfile.data[i][2]; point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward @@ -165,6 +167,8 @@ private void startFilling() { // Send the point to the Talon's buffer tcd.rightMaster.canTalon.pushMotionProfileTrajectory(point); + + System.out.println("RIGHT POINT VEL: " + point.velocity); } @@ -174,4 +178,14 @@ private void startFilling() { mpProcessNotifier = new Notifier(updaterProcess); System.out.println("Finished loading points"); } + + private double nativeToInches(double nativeUnits){ + double rotations = nativeUnits / (tcd.leftMaster.encoderCPR*4); + return rotations * (WHEEL_DIAMETER*Math.PI); + } + + private double inchesToNative(double inches){ + double rotations = inches / (WHEEL_DIAMETER*Math.PI); + return rotations * (tcd.leftMaster.encoderCPR*4); + } } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto index b1c73ed4..829dc492 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto @@ -7,6 +7,7 @@ option java_package = "maps.org.usfirst.frc.team449.robot.drive.talonCluster"; option java_outer_classname = "TalonClusterDriveMap"; message TalonClusterDrive { + required double l2r = 9; required Drive drive = 1; required ToleranceBufferAnglePID turn_PID = 6; required ToleranceBufferAnglePID straight_PID = 7; diff --git a/src/main/resources/leftProfile.csv b/src/main/resources/leftProfile.csv index fa391a2b..6cf265ed 100644 --- a/src/main/resources/leftProfile.csv +++ b/src/main/resources/leftProfile.csv @@ -1,1196 +1,1147 @@ -1195 -0.0025, 0.09999999999999999, 0.05, -0.010000000000000002, 0.15000000000000002, 0.05, -0.0225, 0.24999999999999994, 0.05, -0.03999999999999996, 0.3499999999999992, 0.05, -0.06249999999999989, 0.44999999999999857, 0.05, -0.08999999999999982, 0.5499999999999985, 0.05, -0.12249999999999973, 0.6499999999999984, 0.05, -0.15999999999999967, 0.7499999999999987, 0.05, -0.2024999999999996, 0.8499999999999985, 0.05, -0.24999999999999944, 0.949999999999997, 0.05, -0.30249999999999927, 1.0499999999999965, 0.05, -0.3599999999999991, 1.1499999999999966, 0.05, -0.4225000000000003, 1.2500000000000244, 0.05, -0.49000000000000316, 1.3500000000000567, 0.05, -0.5625000000000061, 1.450000000000059, 0.05, -0.6400000000000093, 1.5500000000000647, 0.05, -0.7225000000000127, 1.650000000000067, 0.05, -0.8075000000000162, 1.7000000000000703, 0.05, -0.8925000000000195, 1.700000000000066, 0.05, -0.9775000000000228, 1.700000000000066, 0.05, -1.0625000000000266, 1.7000000000000748, 0.05, -1.14750000000003, 1.700000000000066, 0.05, -1.2325000000000335, 1.7000000000000703, 0.05, -1.3175000000000368, 1.700000000000066, 0.05, -1.4025000000000403, 1.7000000000000703, 0.05, -1.4875000000000436, 1.700000000000066, 0.05, -1.5725000000000473, 1.7000000000000748, 0.05, -1.6575000000000504, 1.7000000000000615, 0.05, -1.742500000000054, 1.7000000000000703, 0.05, -1.8275000000000574, 1.7000000000000703, 0.05, -1.912500000000061, 1.7000000000000703, 0.05, -1.9975000000000642, 1.700000000000066, 0.05, -2.082500000000068, 1.7000000000000703, 0.05, -2.167500000000071, 1.7000000000000615, 0.05, -2.2525000000000746, 1.7000000000000703, 0.05, -2.3375000000000776, 1.7000000000000615, 0.05, -2.422500000000081, 1.7000000000000703, 0.05, -2.5075000000000847, 1.7000000000000703, 0.05, -2.592500000000088, 1.7000000000000703, 0.05, -2.6775000000000917, 1.7000000000000703, 0.05, -2.762500000000095, 1.7000000000000703, 0.05, -2.8475000000000987, 1.7000000000000703, 0.05, -2.9325000000001022, 1.7000000000000703, 0.05, -3.0175000000001058, 1.7000000000000703, 0.05, -3.102500000000109, 1.7000000000000615, 0.05, -3.187500000000091, 1.699999999999644, 0.05, -3.2725000000000644, 1.6999999999994664, 0.05, -3.357500000000039, 1.699999999999493, 0.05, -3.4425000000000123, 1.6999999999994664, 0.05, -3.527499999999986, 1.6999999999994753, 0.05, -3.6124999999999603, 1.6999999999994841, 0.05, -3.697499999999934, 1.6999999999994753, 0.05, -3.7824999999999083, 1.6999999999994841, 0.05, -3.867499999999882, 1.6999999999994753, 0.05, -3.9524999999998562, 1.6999999999994841, 0.05, -4.03749999999983, 1.6999999999994753, 0.05, -4.122499999999803, 1.6999999999994664, 0.05, -4.207499999999778, 1.699999999999502, 0.05, -4.292499999999752, 1.6999999999994664, 0.05, -4.377499999999726, 1.6999999999994841, 0.05, -4.462499999999699, 1.6999999999994664, 0.05, -4.5474999999996735, 1.6999999999994841, 0.05, -4.632499999999648, 1.6999999999994841, 0.05, -4.717499999999621, 1.6999999999994664, 0.05, -4.802499999999595, 1.6999999999994841, 0.05, -4.8874999999995685, 1.6999999999994664, 0.05, -4.972499999999544, 1.699999999999502, 0.05, -5.057499999999517, 1.6999999999994664, 0.05, -5.142499999999491, 1.6999999999994841, 0.05, -5.2274999999994645, 1.6999999999994664, 0.05, -5.31249999999944, 1.699999999999502, 0.05, -5.397499999999413, 1.6999999999994664, 0.05, -5.482499999999387, 1.6999999999994841, 0.05, -5.56749999999936, 1.6999999999994664, 0.05, -5.652499999999335, 1.6999999999994841, 0.05, -5.737499999999309, 1.6999999999994841, 0.05, -5.822499999999282, 1.6999999999994664, 0.05, -5.907499999999256, 1.6999999999994841, 0.05, -5.9924999999992306, 1.6999999999994841, 0.05, -6.077499999999205, 1.6999999999994841, 0.05, -6.162499999999178, 1.6999999999994664, 0.05, -6.247499999999151, 1.6999999999994664, 0.05, -6.332499999999184, 1.7000000000006565, 0.05, -6.417499999999218, 1.7000000000006743, 0.05, -6.502499999999248, 1.7000000000006033, 0.05, -6.587499999999282, 1.7000000000006743, 0.05, -6.6724999999993155, 1.7000000000006743, 0.05, -6.757499999999349, 1.7000000000006743, 0.05, -6.84249999999938, 1.700000000000621, 0.05, -6.927499999999414, 1.7000000000006743, 0.05, -7.012499999999448, 1.7000000000006743, 0.05, -7.09749999999948, 1.7000000000006388, 0.05, -7.1824999999995125, 1.7000000000006565, 0.05, -7.267499999999546, 1.7000000000006743, 0.05, -7.35249999999958, 1.7000000000006743, 0.05, -7.437499999999612, 1.7000000000006388, 0.05, -7.522499999999644, 1.7000000000006388, 0.05, -7.6074999999996775, 1.7000000000006743, 0.05, -7.69249999999971, 1.7000000000006565, 0.05, -7.777499999999744, 1.7000000000006743, 0.05, -7.862499999999776, 1.7000000000006388, 0.05, -7.94749999999981, 1.7000000000006743, 0.05, -8.032499999999843, 1.7000000000006388, 0.05, -8.117499999999877, 1.700000000000692, 0.05, -8.20249999999991, 1.7000000000006565, 0.05, -8.287499999999945, 1.700000000000692, 0.05, -8.37249999999998, 1.700000000000692, 0.05, -8.457500000000012, 1.7000000000006565, 0.05, -8.542500000000047, 1.700000000000692, 0.05, -8.62750000000008, 1.7000000000006565, 0.05, -8.712500000000114, 1.700000000000692, 0.05, -8.797500000000149, 1.700000000000692, 0.05, -8.882500000000181, 1.7000000000006565, 0.05, -8.967500000000214, 1.7000000000006565, 0.05, -9.052500000000249, 1.700000000000692, 0.05, -9.137500000000284, 1.700000000000692, 0.05, -9.222500000000315, 1.700000000000621, 0.05, -9.307500000000351, 1.7000000000007276, 0.05, -9.392500000000384, 1.7000000000006565, 0.05, -9.477500000000417, 1.7000000000006565, 0.05, -9.562500000000451, 1.700000000000692, 0.05, -9.647500000000486, 1.700000000000692, 0.05, -9.73250000000052, 1.700000000000692, 0.05, -9.817500000000553, 1.7000000000006565, 0.05, -9.902500000000586, 1.7000000000006565, 0.05, -9.98750000000062, 1.700000000000692, 0.05, -10.072500000000655, 1.700000000000692, 0.05, -10.157500000000686, 1.700000000000621, 0.05, -10.242500000000723, 1.7000000000007276, 0.05, -10.327500000000756, 1.7000000000006565, 0.05, -10.41250000000079, 1.700000000000692, 0.05, -10.497500000000823, 1.7000000000006565, 0.05, -10.582500000000858, 1.700000000000692, 0.05, -10.667500000000892, 1.700000000000692, 0.05, -10.752500000000925, 1.7000000000006565, 0.05, -10.837500000000958, 1.7000000000006565, 0.05, -10.922500000000992, 1.700000000000692, 0.05, -11.007500000001027, 1.700000000000692, 0.05, -11.09250000000106, 1.7000000000006565, 0.05, -11.177500000001094, 1.700000000000692, 0.05, -11.262500000001127, 1.7000000000006565, 0.05, -11.347500000001162, 1.700000000000692, 0.05, -11.432500000001196, 1.700000000000692, 0.05, -11.517500000001228, 1.700000000000621, 0.05, -11.602500000001262, 1.700000000000692, 0.05, -11.687500000001297, 1.700000000000692, 0.05, -11.772500000001331, 1.700000000000692, 0.05, -11.857500000001364, 1.7000000000006565, 0.05, -11.942500000001399, 1.700000000000692, 0.05, -12.027500000001432, 1.7000000000006565, 0.05, -12.112500000001466, 1.700000000000692, 0.05, -12.197500000001499, 1.7000000000006565, 0.05, -12.282500000001532, 1.7000000000006565, 0.05, -12.367500000001568, 1.7000000000007276, 0.05, -12.452500000001601, 1.7000000000006565, 0.05, -12.537500000001584, 1.6999999999996618, 0.05, -12.622500000001496, 1.6999999999982407, 0.05, -12.707500000001412, 1.6999999999983118, 0.05, -12.792500000001331, 1.6999999999983828, 0.05, -12.877500000001243, 1.6999999999982407, 0.05, -12.962500000001162, 1.6999999999983828, 0.05, -13.047500000001078, 1.6999999999983118, 0.05, -13.132500000000991, 1.6999999999982762, 0.05, -13.217500000000909, 1.6999999999983473, 0.05, -13.302500000000824, 1.6999999999983118, 0.05, -13.38750000000074, 1.6999999999983118, 0.05, -13.472500000000656, 1.6999999999983118, 0.05, -13.557500000000573, 1.6999999999983473, 0.05, -13.64250000000049, 1.6999999999983473, 0.05, -13.727500000000404, 1.6999999999982762, 0.05, -13.81250000000032, 1.6999999999983118, 0.05, -13.897500000000237, 1.6999999999983473, 0.05, -13.982500000000151, 1.6999999999982762, 0.05, -14.067500000000067, 1.6999999999983118, 0.05, -14.152499999999986, 1.6999999999983828, 0.05, -14.237499999999898, 1.6999999999982407, 0.05, -14.322499999999813, 1.6999999999983118, 0.05, -14.407499999999732, 1.6999999999983828, 0.05, -14.492499999999644, 1.6999999999982407, 0.05, -14.577499999999564, 1.6999999999983828, 0.05, -14.66249999999948, 1.6999999999983118, 0.05, -14.747499999999391, 1.6999999999982407, 0.05, -14.83249999999931, 1.6999999999983828, 0.05, -14.917499999999226, 1.6999999999983118, 0.05, -15.00249999999914, 1.6999999999982762, 0.05, -15.087499999999057, 1.6999999999983473, 0.05, -15.172499999998973, 1.6999999999983118, 0.05, -15.257499999998888, 1.6999999999983118, 0.05, -15.342499999998804, 1.6999999999983118, 0.05, -15.42749999999872, 1.6999999999983118, 0.05, -15.512499999998639, 1.6999999999983828, 0.05, -15.597499999998552, 1.6999999999982762, 0.05, -15.682499999998468, 1.6999999999983118, 0.05, -15.767499999998385, 1.6999999999983473, 0.05, -15.8524999999983, 1.6999999999982762, 0.05, -15.937499999998217, 1.6999999999983473, 0.05, -16.02249999999813, 1.6999999999982407, 0.05, -16.107499999998044, 1.6999999999983118, 0.05, -16.19249999999796, 1.6999999999983118, 0.05, -16.27749999999788, 1.6999999999983828, 0.05, -16.362499999997794, 1.6999999999983118, 0.05, -16.44749999999771, 1.6999999999983118, 0.05, -16.532499999997626, 1.6999999999983118, 0.05, -16.61749999999754, 1.6999999999983118, 0.05, -16.702499999997457, 1.6999999999983118, 0.05, -16.787499999997372, 1.6999999999983118, 0.05, -16.87249999999729, 1.6999999999983828, 0.05, -16.957499999997204, 1.6999999999982407, 0.05, -17.04249999999712, 1.6999999999983118, 0.05, -17.12749999999704, 1.6999999999983828, 0.05, -17.21249999999695, 1.6999999999982407, 0.05, -17.29749999999687, 1.6999999999983828, 0.05, -17.382499999996785, 1.6999999999983118, 0.05, -17.4674999999967, 1.6999999999983118, 0.05, -17.552499999996616, 1.6999999999983118, 0.05, -17.637499999996532, 1.6999999999983118, 0.05, -17.722499999996447, 1.6999999999983118, 0.05, -17.807499999996363, 1.6999999999983118, 0.05, -17.89249999999628, 1.6999999999983118, 0.05, -17.977499999996198, 1.6999999999983828, 0.05, -18.06249999999611, 1.6999999999982407, 0.05, -18.147499999996025, 1.6999999999983118, 0.05, -18.232499999995945, 1.6999999999983828, 0.05, -18.317499999995857, 1.6999999999982407, 0.05, -18.402499999995772, 1.6999999999983118, 0.05, -18.48749999999569, 1.6999999999983828, 0.05, -18.572499999995603, 1.6999999999982407, 0.05, -18.657499999995522, 1.6999999999983828, 0.05, -18.742499999995438, 1.6999999999983118, 0.05, -18.82749999999535, 1.6999999999982407, 0.05, -18.91249999999527, 1.6999999999983828, 0.05, -18.997499999995185, 1.6999999999983118, 0.05, -19.082499999995097, 1.6999999999982407, 0.05, -19.167499999995016, 1.6999999999983828, 0.05, -19.25249999999493, 1.6999999999983118, 0.05, -19.337499999994844, 1.6999999999982407, 0.05, -19.422499999994763, 1.6999999999983828, 0.05, -19.50749999999468, 1.6999999999983118, 0.05, -19.592499999994597, 1.6999999999983828, 0.05, -19.67749999999451, 1.6999999999982407, 0.05, -19.762499999994425, 1.6999999999983118, 0.05, -19.847499999994344, 1.6999999999983828, 0.05, -19.932499999994256, 1.6999999999982407, 0.05, -20.017499999994172, 1.6999999999983118, 0.05, -20.10249999999409, 1.6999999999983828, 0.05, -20.187499999994007, 1.6999999999983118, 0.05, -20.272499999993922, 1.6999999999983118, 0.05, -20.357499999993838, 1.6999999999983118, 0.05, -20.442499999993753, 1.6999999999983118, 0.05, -20.52749999999367, 1.6999999999983118, 0.05, -20.612499999993585, 1.6999999999983118, 0.05, -20.6974999999935, 1.6999999999983118, 0.05, -20.78249999999342, 1.6999999999983828, 0.05, -20.867499999993335, 1.6999999999983118, 0.05, -20.95249999999325, 1.6999999999983118, 0.05, -21.037499999993166, 1.6999999999983118, 0.05, -21.12249999999308, 1.6999999999983118, 0.05, -21.207499999992997, 1.6999999999983118, 0.05, -21.292499999992913, 1.6999999999983118, 0.05, -21.37749999999283, 1.6999999999983118, 0.05, -21.462499999992744, 1.6999999999983118, 0.05, -21.54749999999266, 1.6999999999983118, 0.05, -21.63249999999258, 1.6999999999983828, 0.05, -21.717499999992494, 1.6999999999983118, 0.05, -21.802499999992406, 1.6999999999982407, 0.05, -21.887499999992325, 1.6999999999983828, 0.05, -21.97249999999224, 1.6999999999983118, 0.05, -22.057499999992153, 1.6999999999982407, 0.05, -22.142499999992072, 1.6999999999983828, 0.05, -22.227499999991988, 1.6999999999983118, 0.05, -22.312499999991903, 1.6999999999983118, 0.05, -22.39749999999182, 1.6999999999983118, 0.05, -22.482499999991735, 1.6999999999983118, 0.05, -22.56749999999165, 1.6999999999983118, 0.05, -22.652499999991566, 1.6999999999983118, 0.05, -22.73749999999148, 1.6999999999983118, 0.05, -22.822499999991397, 1.6999999999983118, 0.05, -22.907499999991312, 1.6999999999983118, 0.05, -22.99249999999123, 1.6999999999983828, 0.05, -23.077499999991144, 1.6999999999982407, 0.05, -23.16249999999106, 1.6999999999983118, 0.05, -23.24749999999098, 1.6999999999983828, 0.05, -23.33249999999089, 1.6999999999982407, 0.05, -23.417499999990806, 1.6999999999983118, 0.05, -23.502499999990725, 1.6999999999983828, 0.05, -23.587499999990637, 1.6999999999982407, 0.05, -23.672499999990556, 1.6999999999983828, 0.05, -23.757499999990472, 1.6999999999983118, 0.05, -23.842499999990387, 1.6999999999983118, 0.05, -23.927499999990303, 1.6999999999983118, 0.05, -24.01249999999022, 1.6999999999983118, 0.05, -24.097499999990134, 1.6999999999983118, 0.05, -24.18249999999005, 1.6999999999983118, 0.05, -24.267499999989965, 1.6999999999983118, 0.05, -24.35249999998988, 1.6999999999983118, 0.05, -24.437499999989797, 1.6999999999983118, 0.05, -24.522499999989712, 1.6999999999983118, 0.05, -24.60749999998963, 1.6999999999983828, 0.05, -24.692499999989547, 1.6999999999983118, 0.05, -24.777499999989463, 1.6999999999983118, 0.05, -24.862499999989378, 1.6999999999983118, 0.05, -24.947499999989294, 1.6999999999983118, 0.05, -25.03249999998921, 1.6999999999983118, 0.05, -25.117499999989125, 1.6999999999983118, 0.05, -25.20249999998904, 1.6999999999983118, 0.05, -25.287499999988956, 1.6999999999983118, 0.05, -25.372499999988875, 1.6999999999983828, 0.05, -25.45749999998879, 1.6999999999983118, 0.05, -25.542499999988706, 1.6999999999983118, 0.05, -25.62749999998862, 1.6999999999982407, 0.05, -25.712499999988538, 1.6999999999983828, 0.05, -25.79749999998845, 1.6999999999982407, 0.05, -25.88249999998837, 1.6999999999983828, 0.05, -25.967499999988288, 1.6999999999983828, 0.05, -26.0524999999882, 1.6999999999982407, 0.05, -26.137499999988112, 1.6999999999982407, 0.05, -26.22249999998803, 1.6999999999983828, 0.05, -26.30749999998795, 1.6999999999983828, 0.05, -26.392499999987862, 1.6999999999982407, 0.05, -26.47749999998778, 1.6999999999983828, 0.05, -26.5624999999877, 1.6999999999983828, 0.05, -26.647499999987605, 1.6999999999980986, 0.05, -26.732499999987525, 1.6999999999983828, 0.05, -26.817499999987444, 1.6999999999983828, 0.05, -26.902499999987356, 1.6999999999982407, 0.05, -26.987499999987275, 1.6999999999983828, 0.05, -27.072499999987194, 1.6999999999983828, 0.05, -27.157499999987106, 1.6999999999982407, 0.05, -27.242499999987018, 1.6999999999982407, 0.05, -27.327499999986937, 1.6999999999983828, 0.05, -27.41249999998685, 1.6999999999982407, 0.05, -27.49749999998677, 1.6999999999983828, 0.05, -27.582499999986688, 1.6999999999983828, 0.05, -27.667499999986607, 1.6999999999983828, 0.05, -27.75249999998651, 1.6999999999980986, 0.05, -27.83749999998643, 1.6999999999983828, 0.05, -27.92249999998635, 1.6999999999983828, 0.05, -28.007499999986262, 1.6999999999982407, 0.05, -28.09249999998618, 1.6999999999983828, 0.05, -28.1774999999861, 1.6999999999983828, 0.05, -28.26249999998601, 1.6999999999981696, 0.05, -28.347499999985924, 1.6999999999983118, 0.05, -28.432499999985843, 1.6999999999983828, 0.05, -28.517499999985755, 1.6999999999982407, 0.05, -28.602499999985675, 1.6999999999983828, 0.05, -28.687499999985594, 1.6999999999983828, 0.05, -28.772499999985502, 1.6999999999981696, 0.05, -28.85749999998542, 1.6999999999983828, 0.05, -28.942499999985337, 1.6999999999983118, 0.05, -29.027499999985253, 1.6999999999983118, 0.05, -29.11249999998517, 1.6999999999983828, 0.05, -29.197499999985087, 1.6999999999983118, 0.05, -29.282499999985006, 1.6999999999983828, 0.05, -29.367499999984915, 1.6999999999981696, 0.05, -29.452499999984834, 1.6999999999983828, 0.05, -29.53749999998475, 1.6999999999983118, 0.05, -29.622499999984665, 1.6999999999983118, 0.05, -29.70749999998458, 1.6999999999983118, 0.05, -29.7924999999845, 1.6999999999983828, 0.05, -29.87749999998441, 1.6999999999981696, 0.05, -29.962499999984328, 1.6999999999983828, 0.05, -30.047499999984247, 1.6999999999983828, 0.05, -30.13249999998416, 1.6999999999982407, 0.05, -30.217499999984078, 1.6999999999983828, 0.05, -30.302499999983997, 1.6999999999983828, 0.05, -30.387499999983902, 1.6999999999980986, 0.05, -30.47249999998382, 1.6999999999983828, 0.05, -30.55749999998374, 1.6999999999983828, 0.05, -30.64249999998366, 1.6999999999983828, 0.05, -30.72749999998357, 1.6999999999982407, 0.05, -30.81249999998349, 1.6999999999983828, 0.05, -30.897499999983403, 1.6999999999982407, 0.05, -30.982499999983315, 1.6999999999982407, 0.05, -31.067499999983234, 1.6999999999983828, 0.05, -31.152499999983153, 1.6999999999983828, 0.05, -31.237499999983065, 1.6999999999982407, 0.05, -31.322499999982984, 1.6999999999983828, 0.05, -31.407499999982903, 1.6999999999983828, 0.05, -31.492499999982808, 1.6999999999980986, 0.05, -31.577499999982727, 1.6999999999983828, 0.05, -31.662499999982646, 1.6999999999983828, 0.05, -31.74749999998256, 1.6999999999982407, 0.05, -31.832499999982478, 1.6999999999983828, 0.05, -31.917499999982397, 1.6999999999983828, 0.05, -32.002499999982305, 1.6999999999982407, 0.05, -32.08749999998222, 1.6999999999983118, 0.05, -32.17249999998213, 1.6999999999981696, 0.05, -32.25749999998205, 1.6999999999984539, 0.05, -32.34249999998196, 1.6999999999981696, 0.05, -32.42749999998188, 1.6999999999984539, 0.05, -32.5124999999818, 1.6999999999983118, 0.05, -32.597499999981714, 1.6999999999983118, 0.05, -32.68249999998162, 1.6999999999981696, 0.05, -32.767499999981545, 1.6999999999984539, 0.05, -32.852499999981454, 1.6999999999981696, 0.05, -32.93749999998138, 1.6999999999984539, 0.05, -33.02249999998129, 1.6999999999983118, 0.05, -33.10749999998121, 1.6999999999983118, 0.05, -33.19249999998112, 1.6999999999983118, 0.05, -33.27749999998104, 1.6999999999983118, 0.05, -33.362499999980955, 1.6999999999983118, 0.05, -33.44749999998087, 1.6999999999983118, 0.05, -33.532499999980786, 1.6999999999983118, 0.05, -33.61749999998071, 1.6999999999984539, 0.05, -33.70249999998062, 1.6999999999981696, 0.05, -33.78749999998053, 1.6999999999983118, 0.05, -33.87249999998045, 1.6999999999983118, 0.05, -33.957499999980364, 1.6999999999983118, 0.05, -34.04249999998028, 1.6999999999983118, 0.05, -34.1274999999802, 1.6999999999984539, 0.05, -34.21249999998011, 1.6999999999981696, 0.05, -34.297499999980026, 1.6999999999983118, 0.05, -34.38249999997995, 1.6999999999984539, 0.05, -34.46749999997986, 1.6999999999981696, 0.05, -34.55249999997978, 1.6999999999984539, 0.05, -34.637499999979696, 1.6999999999983118, 0.05, -34.72249999997961, 1.6999999999983118, 0.05, -34.80749999997952, 1.6999999999981696, 0.05, -34.89249999997944, 1.6999999999984539, 0.05, -34.97749999997936, 1.6999999999983118, 0.05, -35.06249999997927, 1.6999999999983118, 0.05, -35.14749999997919, 1.6999999999983118, 0.05, -35.232499999979105, 1.6999999999983118, 0.05, -35.31749999997902, 1.6999999999983118, 0.05, -35.402499999978936, 1.6999999999983118, 0.05, -35.48749999997885, 1.6999999999983118, 0.05, -35.57249999997877, 1.6999999999983118, 0.05, -35.65749999997868, 1.6999999999983118, 0.05, -35.742499999978605, 1.6999999999984539, 0.05, -35.827499999978514, 1.6999999999981696, 0.05, -35.91249999997843, 1.6999999999983118, 0.05, -35.997499999978345, 1.6999999999983118, 0.05, -36.08249999997826, 1.6999999999983118, 0.05, -36.167499999978176, 1.6999999999983118, 0.05, -36.2524999999781, 1.6999999999984539, 0.05, -36.337499999978014, 1.6999999999983118, 0.05, -36.42249999997792, 1.6999999999981696, 0.05, -36.50749999997784, 1.6999999999983118, 0.05, -36.59249999997776, 1.6999999999984539, 0.05, -36.67749999997767, 1.6999999999981696, 0.05, -36.76249999997759, 1.6999999999984539, 0.05, -36.84749999997751, 1.6999999999983118, 0.05, -36.932499999977416, 1.6999999999981696, 0.05, -37.01749999997733, 1.6999999999983118, 0.05, -37.102499999977255, 1.6999999999984539, 0.05, -37.18749999997716, 1.6999999999981696, 0.05, -37.272499999977086, 1.6999999999984539, 0.05, -37.357499999977, 1.6999999999983118, 0.05, -37.44249999997692, 1.6999999999983118, 0.05, -37.527499999976826, 1.6999999999981696, 0.05, -37.61249999997675, 1.6999999999984539, 0.05, -37.697499999976664, 1.6999999999983118, 0.05, -37.78249999997658, 1.6999999999983118, 0.05, -37.867499999976495, 1.6999999999983118, 0.05, -37.95249999997642, 1.6999999999984539, 0.05, -38.037499999976326, 1.6999999999981696, 0.05, -38.12249999997624, 1.6999999999983118, 0.05, -38.20749999997616, 1.6999999999983118, 0.05, -38.29249999997607, 1.6999999999983118, 0.05, -38.37749999997599, 1.6999999999983118, 0.05, -38.46249999997591, 1.6999999999984539, 0.05, -38.54749999997582, 1.6999999999981696, 0.05, -38.632499999975735, 1.6999999999983118, 0.05, -38.71749999997565, 1.6999999999983118, 0.05, -38.802499999975566, 1.6999999999983118, 0.05, -38.88749999997548, 1.6999999999983118, 0.05, -38.972499999975405, 1.6999999999984539, 0.05, -39.05749999997531, 1.6999999999981696, 0.05, -39.14249999997523, 1.6999999999983118, 0.05, -39.22749999997515, 1.6999999999984539, 0.05, -39.31249999997507, 1.6999999999983118, 0.05, -39.39749999997498, 1.6999999999983118, 0.05, -39.4824999999749, 1.6999999999983118, 0.05, -39.567499999974814, 1.6999999999983118, 0.05, -39.65249999997472, 1.6999999999981696, 0.05, -39.737499999974645, 1.6999999999984539, 0.05, -39.82249999997456, 1.6999999999983118, 0.05, -39.907499999974476, 1.6999999999983118, 0.05, -39.99249999997439, 1.6999999999983118, 0.05, -40.077499999974314, 1.6999999999984539, 0.05, -40.162499999974216, 1.6999999999980275, 0.05, -40.24749999997414, 1.6999999999984539, 0.05, -40.332499999974054, 1.6999999999983118, 0.05, -40.41749999997397, 1.6999999999983118, 0.05, -40.502499999973885, 1.6999999999983118, 0.05, -40.58749999997381, 1.6999999999984539, 0.05, -40.67249999997372, 1.6999999999981696, 0.05, -40.75749999997363, 1.6999999999983118, 0.05, -40.84249999997355, 1.6999999999983118, 0.05, -40.92749999997347, 1.6999999999984539, 0.05, -41.01249999997338, 1.6999999999981696, 0.05, -41.0974999999733, 1.6999999999984539, 0.05, -41.18249999997321, 1.6999999999981696, 0.05, -41.267499999973126, 1.6999999999983118, 0.05, -41.35249999997304, 1.6999999999983118, 0.05, -41.437499999972964, 1.6999999999984539, 0.05, -41.52249999997287, 1.6999999999981696, 0.05, -41.607499999972795, 1.6999999999984539, 0.05, -41.69249999997271, 1.6999999999983118, 0.05, -41.77749999997262, 1.6999999999981696, 0.05, -41.862499999972535, 1.6999999999983118, 0.05, -41.94749999997246, 1.6999999999984539, 0.05, -42.03249999997237, 1.6999999999983118, 0.05, -42.11749999997229, 1.6999999999983118, 0.05, -42.202499999972204, 1.6999999999983118, 0.05, -42.28749999997212, 1.6999999999983118, 0.05, -42.372499999972035, 1.6999999999983118, 0.05, -42.45749999997195, 1.6999999999983118, 0.05, -42.54249999997187, 1.6999999999983118, 0.05, -42.62749999997178, 1.6999999999983118, 0.05, -42.7124999999717, 1.6999999999983118, 0.05, -42.79749999997161, 1.6999999999983118, 0.05, -42.88249999997153, 1.6999999999983118, 0.05, -42.967499999971444, 1.6999999999983118, 0.05, -43.05249999997136, 1.6999999999983118, 0.05, -43.137499999971276, 1.6999999999983118, 0.05, -43.22249999997119, 1.6999999999983118, 0.05, -43.30749999997111, 1.6999999999983118, 0.05, -43.39249999997102, 1.6999999999983118, 0.05, -43.47749999997094, 1.6999999999983118, 0.05, -43.56249999997086, 1.6999999999984539, 0.05, -43.647499999970776, 1.6999999999983118, 0.05, -43.73249999997069, 1.6999999999983118, 0.05, -43.81749999997061, 1.6999999999983118, 0.05, -43.90249999997052, 1.6999999999983118, 0.05, -43.98749999997043, 1.6999999999981696, 0.05, -44.072499999970354, 1.6999999999984539, 0.05, -44.15749999997027, 1.6999999999983118, 0.05, -44.242499999970185, 1.6999999999983118, 0.05, -44.3274999999701, 1.6999999999983118, 0.05, -44.41249999997002, 1.6999999999983118, 0.05, -44.497499999969925, 1.6999999999981696, 0.05, -44.58249999996985, 1.6999999999984539, 0.05, -44.66749999996976, 1.6999999999983118, 0.05, -44.75249999996968, 1.6999999999983118, 0.05, -44.837499999969594, 1.6999999999983118, 0.05, -44.92249999996951, 1.6999999999983118, 0.05, -45.007499999969426, 1.6999999999983118, 0.05, -45.09249999996934, 1.6999999999983118, 0.05, -45.17749999996926, 1.6999999999983118, 0.05, -45.26249999996918, 1.6999999999984539, 0.05, -45.34749999996909, 1.6999999999981696, 0.05, -45.432499999969004, 1.6999999999983118, 0.05, -45.51749999996892, 1.6999999999983118, 0.05, -45.602499999968835, 1.6999999999983118, 0.05, -45.68749999996875, 1.6999999999983118, 0.05, -45.77249999996867, 1.6999999999984539, 0.05, -45.85749999996858, 1.6999999999981696, 0.05, -45.942499999968504, 1.6999999999984539, 0.05, -46.02749999996841, 1.6999999999981696, 0.05, -46.11249999996833, 1.6999999999983118, 0.05, -46.197499999968244, 1.6999999999983118, 0.05, -46.28249999996817, 1.6999999999984539, 0.05, -46.36749999996808, 1.6999999999983118, 0.05, -46.452499999968, 1.6999999999983118, 0.05, -46.537499999967906, 1.6999999999981696, 0.05, -46.62249999996783, 1.6999999999984539, 0.05, -46.707499999967744, 1.6999999999983118, 0.05, -46.79249999996766, 1.6999999999983118, 0.05, -46.877499999967576, 1.6999999999983118, 0.05, -46.96249999996749, 1.6999999999983118, 0.05, -47.04749999996741, 1.6999999999983118, 0.05, -47.13249999996732, 1.6999999999983118, 0.05, -47.21749999996724, 1.6999999999983118, 0.05, -47.302499999967154, 1.6999999999983118, 0.05, -47.38749999996707, 1.6999999999983118, 0.05, -47.472499999966985, 1.6999999999983118, 0.05, -47.5574999999669, 1.6999999999983118, 0.05, -47.642499999966816, 1.6999999999983118, 0.05, -47.72749999996673, 1.6999999999983118, 0.05, -47.81249999996665, 1.6999999999983118, 0.05, -47.89749999996656, 1.6999999999983118, 0.05, -47.982499999966485, 1.6999999999984539, 0.05, -48.0674999999664, 1.6999999999983118, 0.05, -48.15249999996631, 1.6999999999981696, 0.05, -48.23749999996623, 1.6999999999984539, 0.05, -48.32249999996614, 1.6999999999981696, 0.05, -48.40749999996606, 1.6999999999984539, 0.05, -48.49249999996598, 1.6999999999983118, 0.05, -48.577499999965895, 1.6999999999983118, 0.05, -48.6624999999658, 1.6999999999981696, 0.05, -48.747499999965726, 1.6999999999984539, 0.05, -48.832499999965634, 1.6999999999981696, 0.05, -48.91749999996556, 1.6999999999984539, 0.05, -49.00249999996547, 1.6999999999983118, 0.05, -49.08749999996539, 1.6999999999983118, 0.05, -49.1724999999653, 1.6999999999981696, 0.05, -49.25749999996522, 1.6999999999984539, 0.05, -49.342499999965135, 1.6999999999983118, 0.05, -49.42749999996505, 1.6999999999983118, 0.05, -49.512499999964966, 1.6999999999983118, 0.05, -49.59749999996489, 1.6999999999984539, 0.05, -49.68249999996479, 1.6999999999980275, 0.05, -49.76749999996471, 1.6999999999984539, 0.05, -49.85249999996463, 1.6999999999983118, 0.05, -49.937499999964544, 1.6999999999983118, 0.05, -50.02249999996459, 1.7000000000008697, 0.05, -50.10749999996498, 1.700000000007833, 0.05, -50.19249999996537, 1.700000000007833, 0.05, -50.27749999996576, 1.700000000007833, 0.05, -50.36249999996614, 1.7000000000075488, 0.05, -50.44749999996653, 1.700000000007833, 0.05, -50.53249999996691, 1.7000000000075488, 0.05, -50.6174999999673, 1.700000000007833, 0.05, -50.70249999996769, 1.700000000007833, 0.05, -50.78749999996808, 1.700000000007691, 0.05, -50.87249999996846, 1.700000000007691, 0.05, -50.95749999996885, 1.700000000007833, 0.05, -51.04249999996924, 1.700000000007691, 0.05, -51.12749999996963, 1.700000000007833, 0.05, -51.21249999997002, 1.700000000007833, 0.05, -51.29749999997041, 1.700000000007833, 0.05, -51.382499999970804, 1.700000000007833, 0.05, -51.46749999997118, 1.7000000000075488, 0.05, -51.55249999997156, 1.7000000000075488, 0.05, -51.63749999997195, 1.700000000007833, 0.05, -51.72249999997234, 1.700000000007833, 0.05, -51.80749999997273, 1.700000000007691, 0.05, -51.89249999997312, 1.700000000007833, 0.05, -51.9774999999735, 1.700000000007691, 0.05, -52.06249999997389, 1.700000000007691, 0.05, -52.14749999997428, 1.700000000007833, 0.05, -52.23249999997467, 1.700000000007833, 0.05, -52.31749999997506, 1.700000000007833, 0.05, -52.402499999975454, 1.700000000007833, 0.05, -52.48749999997583, 1.7000000000075488, 0.05, -52.57249999997622, 1.700000000007833, 0.05, -52.6574999999766, 1.7000000000075488, 0.05, -52.74249999997699, 1.700000000007833, 0.05, -52.827499999977384, 1.700000000007833, 0.05, -52.91249999997777, 1.700000000007691, 0.05, -52.99749999997816, 1.700000000007833, 0.05, -53.08249999997854, 1.7000000000075488, 0.05, -53.16749999997893, 1.700000000007833, 0.05, -53.25249999997932, 1.700000000007833, 0.05, -53.33749999997971, 1.700000000007833, 0.05, -53.422499999980104, 1.700000000007833, 0.05, -53.50749999998049, 1.700000000007691, 0.05, -53.59249999998087, 1.700000000007691, 0.05, -53.67749999998125, 1.7000000000075488, 0.05, -53.76249999998164, 1.700000000007833, 0.05, -53.847499999982034, 1.700000000007833, 0.05, -53.93249999998242, 1.700000000007691, 0.05, -54.01749999998281, 1.700000000007833, 0.05, -54.10249999998319, 1.7000000000075488, 0.05, -54.18749999998358, 1.700000000007833, 0.05, -54.27249999998397, 1.700000000007833, 0.05, -54.35749999998436, 1.700000000007833, 0.05, -54.442499999984754, 1.700000000007833, 0.05, -54.527499999985146, 1.700000000007833, 0.05, -54.61249999998553, 1.700000000007691, 0.05, -54.697499999985915, 1.700000000007691, 0.05, -54.78249999998629, 1.7000000000075488, 0.05, -54.867499999986684, 1.700000000007833, 0.05, -54.952499999987076, 1.700000000007833, 0.05, -55.03749999998746, 1.700000000007691, 0.05, -55.12249999998785, 1.700000000007833, 0.05, -55.20749999998823, 1.7000000000075488, 0.05, -55.29249999998862, 1.700000000007833, 0.05, -55.37749999998901, 1.700000000007833, 0.05, -55.462499999989404, 1.700000000007833, 0.05, -55.547499999989796, 1.700000000007833, 0.05, -55.63249999999018, 1.700000000007691, 0.05, -55.71749999999057, 1.700000000007833, 0.05, -55.80249999999094, 1.7000000000074067, 0.05, -55.887499999991334, 1.700000000007833, 0.05, -55.972499999991726, 1.700000000007833, 0.05, -56.05749999999211, 1.700000000007691, 0.05, -56.1424999999925, 1.700000000007833, 0.05, -56.227499999992894, 1.700000000007833, 0.05, -56.31249999999327, 1.7000000000075488, 0.05, -56.39749999999366, 1.700000000007833, 0.05, -56.482499999994054, 1.700000000007833, 0.05, -56.567499999994446, 1.700000000007833, 0.05, -56.65249999999484, 1.700000000007833, 0.05, -56.73749999999522, 1.700000000007691, 0.05, -56.82249999999561, 1.700000000007691, 0.05, -56.907499999995984, 1.7000000000075488, 0.05, -56.992499999996376, 1.700000000007833, 0.05, -57.07749999999676, 1.700000000007691, 0.05, -57.16249999999715, 1.700000000007833, 0.05, -57.247499999997544, 1.700000000007833, 0.05, -57.332499999997935, 1.700000000007833, 0.05, -57.41749999999831, 1.7000000000075488, 0.05, -57.502499999998705, 1.700000000007833, 0.05, -57.587499999999096, 1.700000000007833, 0.05, -57.67249999999949, 1.700000000007833, 0.05, -57.75749999999987, 1.700000000007691, 0.05, -57.842500000000264, 1.700000000007833, 0.05, -57.927500000000634, 1.7000000000074067, 0.05, -58.012500000001026, 1.700000000007833, 0.05, -58.09750000000141, 1.700000000007691, 0.05, -58.1825000000018, 1.700000000007833, 0.05, -58.267500000002194, 1.700000000007833, 0.05, -58.352500000002586, 1.700000000007833, 0.05, -58.43750000000296, 1.7000000000075488, 0.05, -58.522500000003355, 1.700000000007833, 0.05, -58.607500000003746, 1.700000000007833, 0.05, -58.69250000000414, 1.700000000007833, 0.05, -58.77750000000452, 1.700000000007691, 0.05, -58.862500000004914, 1.700000000007833, 0.05, -58.947500000005306, 1.700000000007833, 0.05, -59.032500000005676, 1.7000000000074067, 0.05, -59.11750000000607, 1.700000000007833, 0.05, -59.20250000000645, 1.700000000007691, 0.05, -59.287500000006844, 1.700000000007833, 0.05, -59.372500000007236, 1.700000000007833, 0.05, -59.45750000000763, 1.700000000007833, 0.05, -59.542500000008005, 1.7000000000075488, 0.05, -59.627500000008396, 1.700000000007833, 0.05, -59.71250000000879, 1.700000000007833, 0.05, -59.79750000000917, 1.700000000007691, 0.05, -59.882500000009564, 1.700000000007833, 0.05, -59.967500000009956, 1.700000000007833, 0.05, -60.05250000001033, 1.7000000000075488, 0.05, -60.13750000001072, 1.700000000007691, 0.05, -60.2225000000111, 1.700000000007691, 0.05, -60.307500000011494, 1.700000000007833, 0.05, -60.392500000011886, 1.700000000007833, 0.05, -60.47750000001228, 1.700000000007833, 0.05, -60.56250000001267, 1.700000000007833, 0.05, -60.647500000013046, 1.7000000000075488, 0.05, -60.73250000001344, 1.700000000007833, 0.05, -60.81750000001383, 1.700000000007833, 0.05, -60.902500000014214, 1.700000000007691, 0.05, -60.987500000014606, 1.700000000007833, 0.05, -61.072500000015, 1.700000000007833, 0.05, -61.15750000001537, 1.7000000000074067, 0.05, -61.24250000001576, 1.700000000007833, 0.05, -61.327500000016144, 1.700000000007691, 0.05, -61.412500000016536, 1.700000000007833, 0.05, -61.49750000001693, 1.700000000007833, 0.05, -61.58250000001732, 1.700000000007833, 0.05, -61.66750000001771, 1.700000000007833, 0.05, -61.75250000001809, 1.7000000000075488, 0.05, -61.83750000001848, 1.700000000007833, 0.05, -61.922500000018864, 1.700000000007691, 0.05, -62.007500000019256, 1.700000000007833, 0.05, -62.09250000001965, 1.700000000007833, 0.05, -62.177500000020025, 1.7000000000075488, 0.05, -62.26250000002041, 1.700000000007691, 0.05, -62.347500000020794, 1.700000000007691, 0.05, -62.432500000021186, 1.700000000007833, 0.05, -62.51750000002158, 1.700000000007833, 0.05, -62.60250000002197, 1.700000000007833, 0.05, -62.68750000002236, 1.700000000007833, 0.05, -62.77250000002274, 1.7000000000075488, 0.05, -62.85750000002313, 1.700000000007833, 0.05, -62.94250000002352, 1.700000000007833, 0.05, -63.027500000023906, 1.700000000007691, 0.05, -63.1125000000243, 1.700000000007833, 0.05, -63.19750000002469, 1.700000000007833, 0.05, -63.28250000002507, 1.7000000000075488, 0.05, -63.367500000025444, 1.7000000000075488, 0.05, -63.452500000025836, 1.700000000007833, 0.05, -63.53750000002623, 1.700000000007833, 0.05, -63.62250000002662, 1.700000000007833, 0.05, -63.70750000002701, 1.700000000007833, 0.05, -63.792500000027395, 1.700000000007691, 0.05, -63.87750000002778, 1.700000000007691, 0.05, -63.96250000002817, 1.700000000007833, 0.05, -64.04750000002855, 1.700000000007691, 0.05, -64.13250000002893, 1.7000000000075488, 0.05, -64.2175000000293, 1.7000000000075488, 0.05, -64.3025000000297, 1.700000000007833, 0.05, -64.38750000003007, 1.7000000000075488, 0.05, -64.47250000003045, 1.7000000000075488, 0.05, -64.55750000003083, 1.7000000000075488, 0.05, -64.64250000003122, 1.700000000007833, 0.05, -64.7275000000316, 1.7000000000075488, 0.05, -64.81250000003197, 1.7000000000075488, 0.05, -64.89750000003237, 1.700000000007833, 0.05, -64.98250000003273, 1.7000000000072646, 0.05, -65.0675000000331, 1.7000000000075488, 0.05, -65.1525000000335, 1.700000000007833, 0.05, -65.23750000003388, 1.7000000000075488, 0.05, -65.32250000003427, 1.700000000007833, 0.05, -65.40750000003464, 1.7000000000075488, 0.05, -65.49250000003501, 1.7000000000072646, 0.05, -65.5775000000354, 1.700000000007833, 0.05, -65.66250000003578, 1.7000000000075488, 0.05, -65.74750000003615, 1.7000000000075488, 0.05, -65.83250000003655, 1.700000000007833, 0.05, -65.91750000003692, 1.7000000000075488, 0.05, -66.0025000000373, 1.7000000000075488, 0.05, -66.08750000003768, 1.7000000000075488, 0.05, -66.17250000003807, 1.700000000007833, 0.05, -66.25750000003845, 1.7000000000075488, 0.05, -66.34250000003883, 1.7000000000075488, 0.05, -66.42750000003922, 1.700000000007833, 0.05, -66.5125000000396, 1.7000000000075488, 0.05, -66.59750000003996, 1.7000000000072646, 0.05, -66.68250000004033, 1.7000000000075488, 0.05, -66.76750000004073, 1.700000000007833, 0.05, -66.8525000000411, 1.7000000000075488, 0.05, -66.9375000000415, 1.700000000007833, 0.05, -67.02250000004187, 1.7000000000075488, 0.05, -67.10750000004226, 1.700000000007833, 0.05, -67.19250000004263, 1.7000000000072646, 0.05, -67.277500000043, 1.7000000000075488, 0.05, -67.3625000000434, 1.700000000007833, 0.05, -67.44750000004377, 1.7000000000075488, 0.05, -67.53250000004415, 1.7000000000075488, 0.05, -67.61750000004453, 1.7000000000075488, 0.05, -67.7025000000449, 1.7000000000075488, 0.05, -67.7875000000453, 1.700000000007833, 0.05, -67.87250000004568, 1.7000000000075488, 0.05, -67.95750000004607, 1.700000000007833, 0.05, -68.04250000004645, 1.7000000000075488, 0.05, -68.12750000004682, 1.7000000000075488, 0.05, -68.21250000004719, 1.7000000000072646, 0.05, -68.29750000004758, 1.700000000007833, 0.05, -68.38250000004795, 1.7000000000075488, 0.05, -68.46750000004833, 1.7000000000075488, 0.05, -68.55250000004872, 1.700000000007833, 0.05, -68.6375000000491, 1.7000000000075488, 0.05, -68.7225000000495, 1.700000000007833, 0.05, -68.80750000004986, 1.7000000000072646, 0.05, -68.89250000005025, 1.700000000007833, 0.05, -68.97750000005063, 1.7000000000075488, 0.05, -69.062500000051, 1.7000000000075488, 0.05, -69.1475000000514, 1.700000000007833, 0.05, -69.23250000005177, 1.7000000000075488, 0.05, -69.31750000005214, 1.7000000000072646, 0.05, -69.40250000005253, 1.700000000007833, 0.05, -69.4875000000529, 1.7000000000075488, 0.05, -69.5725000000533, 1.700000000007833, 0.05, -69.65750000005367, 1.7000000000075488, 0.05, -69.74250000005405, 1.7000000000075488, 0.05, -69.82750000005443, 1.7000000000075488, 0.05, -69.9125000000548, 1.7000000000075488, 0.05, -69.99750000005518, 1.7000000000075488, 0.05, -70.08250000005557, 1.700000000007833, 0.05, -70.16750000005595, 1.7000000000075488, 0.05, -70.25250000005633, 1.7000000000075488, 0.05, -70.3375000000567, 1.7000000000075488, 0.05, -70.4225000000571, 1.700000000007833, 0.05, -70.50750000005748, 1.7000000000075488, 0.05, -70.59250000005785, 1.7000000000075488, 0.05, -70.67750000005825, 1.700000000007833, 0.05, -70.76250000005862, 1.7000000000075488, 0.05, -70.847500000059, 1.7000000000075488, 0.05, -70.93250000005936, 1.7000000000072646, 0.05, -71.01750000005975, 1.700000000007833, 0.05, -71.10250000006013, 1.7000000000075488, 0.05, -71.18750000006052, 1.700000000007833, 0.05, -71.2725000000609, 1.7000000000075488, 0.05, -71.3575000000613, 1.700000000007833, 0.05, -71.44250000006167, 1.7000000000075488, 0.05, -71.52750000006203, 1.7000000000072646, 0.05, -71.61250000006243, 1.700000000007833, 0.05, -71.6975000000628, 1.7000000000075488, 0.05, -71.78250000006318, 1.7000000000075488, 0.05, -71.86750000006356, 1.7000000000075488, 0.05, -71.95250000006395, 1.700000000007833, 0.05, -72.03750000006433, 1.7000000000075488, 0.05, -72.1225000000647, 1.7000000000075488, 0.05, -72.2075000000651, 1.700000000007833, 0.05, -72.29250000006547, 1.7000000000075488, 0.05, -72.37750000006585, 1.7000000000075488, 0.05, -72.46250000006623, 1.7000000000075488, 0.05, -72.5475000000666, 1.7000000000075488, 0.05, -72.63250000006698, 1.7000000000075488, 0.05, -72.71750000006736, 1.7000000000075488, 0.05, -72.80250000006775, 1.700000000007833, 0.05, -72.88750000006813, 1.7000000000075488, 0.05, -72.97250000006851, 1.7000000000075488, 0.05, -73.0575000000689, 1.700000000007833, 0.05, -73.14250000006928, 1.7000000000075488, 0.05, -73.22750000006965, 1.7000000000075488, 0.05, -73.31250000007003, 1.7000000000075488, 0.05, -73.39750000007042, 1.700000000007833, 0.05, -73.4825000000708, 1.7000000000075488, 0.05, -73.56750000007118, 1.7000000000075488, 0.05, -73.65250000007154, 1.7000000000072646, 0.05, -73.73750000007193, 1.700000000007833, 0.05, -73.82250000007231, 1.7000000000075488, 0.05, -73.9075000000727, 1.700000000007833, 0.05, -73.99250000007308, 1.7000000000075488, 0.05, -74.07750000007347, 1.700000000007833, 0.05, -74.16250000007383, 1.7000000000072646, 0.05, -74.24750000007421, 1.7000000000075488, 0.05, -74.3325000000746, 1.700000000007833, 0.05, -74.41750000007498, 1.7000000000075488, 0.05, -74.50250000007536, 1.7000000000075488, 0.05, -74.58750000007574, 1.7000000000075488, 0.05, -74.67250000007613, 1.700000000007833, 0.05, -74.7575000000765, 1.7000000000075488, 0.05, -74.84250000007688, 1.7000000000075488, 0.05, -74.92750000007727, 1.700000000007833, 0.05, -75.01250000007765, 1.7000000000075488, 0.05, -75.09750000007803, 1.7000000000075488, 0.05, -75.1825000000784, 1.7000000000075488, 0.05, -75.26750000007878, 1.7000000000075488, 0.05, -75.35250000007916, 1.7000000000075488, 0.05, -75.43750000007954, 1.7000000000075488, 0.05, -75.52250000007993, 1.700000000007833, 0.05, -75.60750000008031, 1.7000000000075488, 0.05, -75.6925000000807, 1.700000000007833, 0.05, -75.77750000008108, 1.7000000000075488, 0.05, -75.86250000008145, 1.7000000000075488, 0.05, -75.94750000008183, 1.7000000000075488, 0.05, -76.03250000008221, 1.7000000000075488, 0.05, -76.11750000008259, 1.7000000000075488, 0.05, -76.20250000008298, 1.700000000007833, 0.05, -76.28750000008336, 1.7000000000075488, 0.05, -76.37250000008373, 1.7000000000075488, 0.05, -76.45750000008412, 1.700000000007833, 0.05, -76.5425000000845, 1.7000000000075488, 0.05, -76.62750000008488, 1.7000000000075488, 0.05, -76.71250000008526, 1.7000000000075488, 0.05, -76.79750000008565, 1.700000000007833, 0.05, -76.88250000008601, 1.7000000000072646, 0.05, -76.96750000008639, 1.7000000000075488, 0.05, -77.05250000008678, 1.700000000007833, 0.05, -77.13750000008716, 1.7000000000075488, 0.05, -77.22250000008754, 1.7000000000075488, 0.05, -77.30750000008793, 1.700000000007833, 0.05, -77.3925000000883, 1.7000000000075488, 0.05, -77.47750000008868, 1.7000000000075488, 0.05, -77.56250000008906, 1.7000000000075488, 0.05, -77.64750000008945, 1.700000000007833, 0.05, -77.73250000008983, 1.7000000000075488, 0.05, -77.8175000000902, 1.7000000000075488, 0.05, -77.90250000009058, 1.7000000000075488, 0.05, -77.98750000009096, 1.7000000000075488, 0.05, -78.07250000009134, 1.7000000000075488, 0.05, -78.15750000009173, 1.700000000007833, 0.05, -78.24250000009211, 1.7000000000075488, 0.05, -78.3275000000925, 1.700000000007833, 0.05, -78.41250000009288, 1.7000000000075488, 0.05, -78.49750000009324, 1.7000000000072646, 0.05, -78.58250000009363, 1.700000000007833, 0.05, -78.66750000009401, 1.7000000000075488, 0.05, -78.75250000009439, 1.7000000000075488, 0.05, -78.83750000009476, 1.7000000000075488, 0.05, -78.92250000009516, 1.700000000007833, 0.05, -79.00750000009553, 1.7000000000075488, 0.05, -79.09250000009591, 1.7000000000075488, 0.05, -79.1775000000963, 1.700000000007833, 0.05, -79.26250000009668, 1.7000000000075488, 0.05, -79.34750000009706, 1.7000000000075488, 0.05, -79.43250000009743, 1.7000000000075488, 0.05, -79.51750000009783, 1.700000000007833, 0.05, -79.60250000009819, 1.7000000000072646, 0.05, -79.68750000009857, 1.7000000000075488, 0.05, -79.77250000009896, 1.700000000007833, 0.05, -79.85750000009934, 1.7000000000075488, 0.05, -79.94250000009973, 1.700000000007833, 0.05, -80.0275000001001, 1.7000000000075488, 0.05, -80.1125000001005, 1.700000000007833, 0.05, -80.19750000010086, 1.7000000000072646, 0.05, -80.28250000010124, 1.7000000000075488, 0.05, -80.36750000010161, 1.7000000000075488, 0.05, -80.452500000102, 1.700000000007833, 0.05, -80.53750000010238, 1.7000000000075488, 0.05, -80.62250000010276, 1.7000000000075488, 0.05, -80.70750000010314, 1.7000000000075488, 0.05, -80.79250000010353, 1.700000000007833, 0.05, -80.87750000010391, 1.7000000000075488, 0.05, -80.96250000010428, 1.7000000000075488, 0.05, -81.04750000010468, 1.700000000007833, 0.05, -81.13250000010505, 1.7000000000075488, 0.05, -81.21750000010542, 1.7000000000072646, 0.05, -81.30250000010581, 1.700000000007833, 0.05, -81.38750000010619, 1.7000000000075488, 0.05, -81.47250000010656, 1.7000000000075488, 0.05, -81.55750000010694, 1.7000000000075488, 0.05, -81.64250000010733, 1.700000000007833, 0.05, -81.72750000010772, 1.700000000007833, 0.05, -81.81250000010809, 1.7000000000072646, 0.05, -81.89750000010848, 1.700000000007833, 0.05, -81.98250000010886, 1.7000000000075488, 0.05, -82.06750000010923, 1.7000000000075488, 0.05, -82.15250000010961, 1.7000000000075488, 0.05, -82.23750000011, 1.700000000007833, 0.05, -82.32250000011037, 1.7000000000072646, 0.05, -82.40750000011074, 1.7000000000075488, 0.05, -82.49250000011114, 1.700000000007833, 0.05, -82.57750000011153, 1.700000000007833, 0.05, -82.6625000001119, 1.7000000000075488, 0.05, -82.74750000011228, 1.7000000000075488, 0.05, -82.83250000011266, 1.7000000000075488, 0.05, -82.91750000011304, 1.7000000000075488, 0.05, -83.00250000011341, 1.7000000000075488, 0.05, -83.08750000011379, 1.7000000000075488, 0.05, -83.17250000011418, 1.700000000007833, 0.05, -83.25750000011456, 1.7000000000075488, 0.05, -83.34250000011494, 1.7000000000075488, 0.05, -83.42750000011533, 1.700000000007833, 0.05, -83.51250000011571, 1.7000000000075488, 0.05, -83.59750000011609, 1.7000000000075488, 0.05, -83.68250000011646, 1.7000000000075488, 0.05, -83.76750000011685, 1.700000000007833, 0.05, -83.85250000011723, 1.7000000000075488, 0.05, -83.9375000001176, 1.7000000000072646, 0.05, -84.02250000011799, 1.700000000007833, 0.05, -84.10750000011836, 1.7000000000075488, 0.05, -84.19250000011874, 1.7000000000075488, 0.05, -84.27750000011913, 1.700000000007833, 0.05, -84.36250000011951, 1.7000000000075488, 0.05, -84.4475000001199, 1.700000000007833, 0.05, -84.53250000012027, 1.7000000000072646, 0.05, -84.61750000012064, 1.7000000000075488, 0.05, -84.70250000012103, 1.700000000007833, 0.05, -84.78750000012141, 1.7000000000075488, 0.05, -84.87250000012179, 1.7000000000075488, 0.05, -84.95750000012218, 1.700000000007833, 0.05, -85.04250000012256, 1.7000000000075488, 0.05, -85.12750000012294, 1.7000000000075488, 0.05, -85.21250000012331, 1.7000000000075488, 0.05, -85.2975000001237, 1.700000000007833, 0.05, -85.38250000012408, 1.7000000000075488, 0.05, -85.46750000012446, 1.7000000000075488, 0.05, -85.55250000012484, 1.7000000000075488, 0.05, -85.63750000012521, 1.7000000000075488, 0.05, -85.72250000012559, 1.7000000000075488, 0.05, -85.80750000012597, 1.7000000000075488, 0.05, -85.89250000012636, 1.700000000007833, 0.05, -85.97750000012674, 1.7000000000075488, 0.05, -86.06250000012713, 1.700000000007833, 0.05, -86.14750000012751, 1.7000000000075488, 0.05, -86.23250000012789, 1.7000000000075488, 0.05, -86.31750000012826, 1.7000000000075488, 0.05, -86.40250000012864, 1.7000000000075488, 0.05, -86.48750000012903, 1.700000000007833, 0.05, -86.57250000012941, 1.7000000000075488, 0.05, -86.65750000012977, 1.7000000000072646, 0.05, -86.74250000013016, 1.700000000007833, 0.05, -86.82750000013054, 1.7000000000075488, 0.05, -86.91250000013093, 1.700000000007833, 0.05, -86.99750000013131, 1.7000000000075488, 0.05, -87.0825000001317, 1.700000000007833, 0.05, -87.16750000013207, 1.7000000000072646, 0.05, -87.25250000013244, 1.7000000000075488, 0.05, -87.33750000013282, 1.7000000000075488, 0.05, -87.42250000013321, 1.700000000007833, 0.05, -87.50750000013359, 1.7000000000075488, 0.05, -87.59250000013397, 1.7000000000075488, 0.05, -87.67750000013436, 1.700000000007833, 0.05, -87.76250000013474, 1.7000000000075488, 0.05, -87.84750000013511, 1.7000000000075488, 0.05, -87.93250000013549, 1.7000000000075488, 0.05, -88.01750000013588, 1.700000000007833, 0.05, -88.10250000013626, 1.7000000000075488, 0.05, -88.18750000013664, 1.7000000000075488, 0.05, -88.27250000013701, 1.7000000000075488, 0.05, -88.35750000013739, 1.7000000000075488, 0.05, -88.44250000013777, 1.7000000000075488, 0.05, -88.52750000013816, 1.700000000007833, 0.05, -88.61250000013854, 1.7000000000075488, 0.05, -88.69750000013893, 1.700000000007833, 0.05, -88.78250000013931, 1.7000000000075488, 0.05, -88.86750000013967, 1.7000000000072646, 0.05, -88.95250000014006, 1.700000000007833, 0.05, -89.03750000014044, 1.7000000000075488, 0.05, -89.12250000014082, 1.7000000000075488, 0.05, -89.20750000014121, 1.700000000007833, 0.05, -89.29250000014159, 1.7000000000075488, 0.05, -89.37750000014196, 1.7000000000075488, 0.05, -89.46250000014234, 1.7000000000075488, 0.05, -89.54750000014273, 1.700000000007833, 0.05, -89.63250000014311, 1.7000000000075488, 0.05, -89.71750000014349, 1.7000000000075488, 0.05, -89.80250000014388, 1.700000000007833, 0.05, -89.88750000014424, 1.7000000000072646, 0.05, -89.97250000014462, 1.7000000000075488, 0.05, -90.057500000145, 1.7000000000075488, 0.05, -90.14250000014539, 1.700000000007833, 0.05, -90.22750000014577, 1.7000000000075488, 0.05, -90.31250000014616, 1.700000000007833, 0.05, -90.39750000014654, 1.7000000000075488, 0.05, -90.48250000014691, 1.7000000000075488, 0.05, -90.56750000014729, 1.7000000000075488, 0.05, -90.65250000014767, 1.7000000000075488, 0.05, -90.73750000014806, 1.700000000007833, 0.05, -90.82250000014844, 1.7000000000075488, 0.05, -90.90750000014881, 1.7000000000075488, 0.05, -90.99250000014918, 1.7000000000072646, 0.05, -91.07750000014957, 1.700000000007833, 0.05, -91.16250000014996, 1.700000000007833, 0.05, -91.24750000015034, 1.7000000000075488, 0.05, -91.33250000015073, 1.700000000007833, 0.05, -91.41750000015111, 1.7000000000075488, 0.05, -91.50250000015147, 1.7000000000072646, 0.05, -91.58750000015185, 1.7000000000075488, 0.05, -91.67250000015224, 1.700000000007833, 0.05, -91.75750000015262, 1.7000000000075488, 0.05, -91.842500000153, 1.7000000000075488, 0.05, -91.92750000015339, 1.700000000007833, 0.05, -92.01250000015376, 1.7000000000075488, 0.05, -92.09750000015414, 1.7000000000075488, 0.05, -92.18250000015452, 1.7000000000075488, 0.05, -92.26750000015491, 1.700000000007833, 0.05, -92.35250000015529, 1.7000000000075488, 0.05, -92.43750000015567, 1.7000000000075488, 0.05, -92.52250000015606, 1.700000000007833, 0.05, -92.60750000015642, 1.7000000000072646, 0.05, -92.6925000001568, 1.7000000000075488, 0.05, -92.77750000015718, 1.7000000000075488, 0.05, -92.86250000015757, 1.700000000007833, 0.05, -92.94750000015794, 1.7000000000075488, 0.05, -93.03250000015834, 1.700000000007833, 0.05, -93.11750000015871, 1.7000000000075488, 0.05, -93.20250000015909, 1.7000000000075488, 0.05, -93.28750000015947, 1.7000000000075488, 0.05, -93.37250000015985, 1.7000000000075488, 0.05, -93.45750000016024, 1.700000000007833, 0.05, -93.54250000016062, 1.7000000000075488, 0.05, -93.62750000016099, 1.7000000000075488, 0.05, -93.71250000016137, 1.7000000000075488, 0.05, -93.79750000016176, 1.700000000007833, 0.05, -93.88250000016214, 1.7000000000075488, 0.05, -93.96750000016252, 1.7000000000075488, 0.05, -94.05250000016291, 1.700000000007833, 0.05, -94.13750000016329, 1.7000000000075488, 0.05, -94.22250000016365, 1.7000000000072646, 0.05, -94.30750000016403, 1.7000000000075488, 0.05, -94.39250000016442, 1.700000000007833, 0.05, -94.4775000001648, 1.7000000000075488, 0.05, -94.56250000016517, 1.7000000000075488, 0.05, -94.64750000016556, 1.700000000007833, 0.05, -94.73250000016594, 1.7000000000075488, 0.05, -94.81750000016632, 1.7000000000075488, 0.05, -94.9025000001667, 1.7000000000075488, 0.05, -94.98750000016709, 1.700000000007833, 0.05, -95.07250000016747, 1.7000000000075488, 0.05, -95.15750000016784, 1.7000000000075488, 0.05, -95.24250000016822, 1.7000000000075488, 0.05, -95.3275000001686, 1.7000000000075488, 0.05, -95.41250000016898, 1.7000000000075488, 0.05, -95.49750000016937, 1.700000000007833, 0.05, -95.58250000016976, 1.700000000007833, 0.05, -95.66750000017014, 1.7000000000075488, 0.05, -95.75250000017051, 1.7000000000075488, 0.05, -95.83750000017089, 1.7000000000075488, 0.05, -95.92250000017127, 1.7000000000075488, 0.05, -96.00750000017165, 1.7000000000075488, 0.05, -96.09250000017202, 1.7000000000075488, 0.05, -96.17750000017242, 1.700000000007833, 0.05, -96.26250000017279, 1.7000000000075488, 0.05, -96.34750000017317, 1.7000000000075488, 0.05, -96.43250000017355, 1.7000000000075488, 0.05, -96.51750000017394, 1.700000000007833, 0.05, -96.60250000017432, 1.7000000000075488, 0.05, -96.6875000001747, 1.7000000000075488, 0.05, -96.77250000017509, 1.700000000007833, 0.05, -96.85750000017546, 1.7000000000075488, 0.05, -96.94250000017583, 1.7000000000072646, 0.05, -97.0275000001762, 1.7000000000075488, 0.05, -97.1125000001766, 1.700000000007833, 0.05, -97.19750000017697, 1.7000000000075488, 0.05, -97.28250000017736, 1.700000000007833, 0.05, -97.36750000017774, 1.7000000000075488, 0.05, -97.45250000017813, 1.700000000007833, 0.05, -97.5375000001785, 1.7000000000072646, 0.05, -97.62250000017887, 1.7000000000075488, 0.05, -97.70750000017927, 1.700000000007833, 0.05, -97.79250000017964, 1.7000000000075488, 0.05, -97.87750000018002, 1.7000000000075488, 0.05, -97.9625000001804, 1.7000000000075488, 0.05, -98.04750000018078, 1.7000000000075488, 0.05, -98.13250000018117, 1.700000000007833, 0.05, -98.21750000018154, 1.7000000000075488, 0.05, -98.30250000018194, 1.700000000007833, 0.05, -98.38750000018231, 1.7000000000075488, 0.05, -98.47250000018269, 1.7000000000075488, 0.05, -98.55750000018305, 1.7000000000072646, 0.05, -98.64250000018345, 1.700000000007833, 0.05, -98.72750000018382, 1.7000000000075488, 0.05, -98.8125000001842, 1.7000000000075488, 0.05, -98.89750000018459, 1.700000000007833, 0.05, -98.98250000018497, 1.7000000000075488, 0.05, -99.06750000018536, 1.700000000007833, 0.05, -99.15250000018573, 1.7000000000072646, 0.05, -99.23750000018612, 1.700000000007833, 0.05, -99.3212058825338, 1.6741176469537322, 0.05, -99.40111764722877, 1.5982352938993927, 0.05, -99.47602941192372, 1.4982352938989152, 0.05, -99.54594117661864, 1.3982352938984377, 0.05, -99.61085294131355, 1.2982352938982444, 0.05, -99.67076470600844, 1.198235293897767, 0.05, -99.7256764707033, 1.0982352938972895, 0.05, -99.77558823539815, 0.998235293896812, 0.05, -99.82050000009296, 0.8982352938963345, 0.05, -99.86041176478777, 0.7982352938961412, 0.05, -99.89532352948254, 0.6982352938953795, 0.05, -99.92523529417728, 0.598235293894902, 0.05, -99.95014705887202, 0.4982352938947088, 0.05, -99.97005882356672, 0.3982352938939471, 0.05, -99.98497058826139, 0.2982352938934696, 0.05, -99.99488235295604, 0.1982352938929921, 0.05, -99.99979411765068, 0.09823529389279884, 0.05, -100.00099999999797, 0.02411764694585372, 0.05, -100.00099999999797, 0.0, 0.05, \ No newline at end of file +1146 +6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, +6.3979198129539205E-6, 2.958396259078418E-6, 0.05, +6.730740121155927E-6, 6.656406164040121E-6, 0.05, +7.322423161052439E-6, 1.183366079793024E-5, 0.05, +8.246934296921023E-6, 1.8490222717371686E-5, 0.05, +9.57824401438665E-6, 2.6626194349312525E-5, 0.05, +1.1390330412650036E-5, 3.6241727965267745E-5, 0.05, +1.1875918015446259E-4, 0.002147376994836251, 0.05, +6.280089398381212E-4, 0.01018499519367317, 0.05, +0.0012567026777572114, 0.012573874758381804, 0.05, +0.002017431972318667, 0.015214585891229114, 0.05, +0.0029227595681079704, 0.018106551915786067, 0.05, +0.003985261117987896, 0.02125003099759851, 0.05, +0.005217512828680155, 0.024645034213845195, 0.05, +0.0066320879759502955, 0.0282915029454028, 0.05, +0.008241556133923744, 0.03218936315946897, 0.05, +0.010058508581897597, 0.03633904895947706, 0.05, +0.012095501341973444, 0.04073985520151695, 0.05, +0.014365116708072067, 0.045392307321972435, 0.05, +0.016879931725120832, 0.05029630034097527, 0.05, +0.019652517140557123, 0.05545170830872583, 0.05, +0.022695449986514158, 0.060858656919140726, 0.05, +0.026021303429899653, 0.0665170688677099, 0.05, +0.029642659341512792, 0.07242711823226275, 0.05, +0.03357209063182697, 0.0785886258062836, 0.05, +0.037822167073197195, 0.08500152882740443, 0.05, +0.04240547149136748, 0.09166608836340573, 0.05, +0.04733458488670139, 0.09858226790667822, 0.05, +0.05262207573279082, 0.10574981692178856, 0.05, +0.05828052567006848, 0.11316899874555318, 0.05, +0.06432250903264987, 0.12083966725162787, 0.05, +0.07076060571954848, 0.12876193373797215, 0.05, +0.07760739287855278, 0.1369357431800861, 0.05, +0.08487545820028788, 0.1453613064347019, 0.05, +0.0925773708178224, 0.1540382523506904, 0.05, +0.1007257146281926, 0.16296687620740422, 0.05, +0.10933306556260158, 0.1721470186881797, 0.05, +0.11841201454540108, 0.18157897965599004, 0.05, +0.12797513210619893, 0.1912623512159571, 0.05, +0.13803501422512007, 0.20119764237842275, 0.05, +0.1486042302357135, 0.21138432021186856, 0.05, +0.15969536463259137, 0.22182268793755752, 0.05, +0.1713210099916747, 0.23251290718166678, 0.05, +0.18349375464082635, 0.2434548929830326, 0.05, +0.19622617153420227, 0.2546483378675185, 0.05, +0.2095308552477164, 0.26609367427028213, 0.05, +0.22342039270940064, 0.277790749233685, 0.05, +0.2379073665090541, 0.28973947599306915, 0.05, +0.2530043790864321, 0.301940251547559, 0.05, +0.26872401712933514, 0.3143927608580605, 0.05, +0.2850788664938086, 0.32709698728946945, 0.05, +0.30208151833816227, 0.340053036887074, 0.05, +0.3197445814559274, 0.35326126235530203, 0.05, +0.3380806368277916, 0.3667211074372846, 0.05, +0.35710229373287333, 0.3804331381016345, 0.05, +0.37682213971336304, 0.3943969196097941, 0.05, +0.3972527767947034, 0.4086127416268066, 0.05, +0.41840681024522025, 0.42308066901033714, 0.05, +0.4402968389843224, 0.43780057478204387, 0.05, +0.4629354772603121, 0.4527727655197929, 0.05, +0.486335316076348, 0.4679967763207178, 0.05, +0.5105089730204545, 0.48347313888213017, 0.05, +0.5354690535880451, 0.49920161135181146, 0.05, +0.5612281736539645, 0.5151824013183874, 0.05, +0.5877989430925765, 0.5314153887722415, 0.05, +0.615193979230141, 0.5479007227512891, 0.05, +0.6434258966664346, 0.5646383487258714, 0.05, +0.672507323906018, 0.5816285447916678, 0.05, +0.7024508778929578, 0.5988710797387962, 0.05, +0.7332691811929336, 0.6163660659995158, 0.05, +0.7649748684535395, 0.6341137452121176, 0.05, +0.7975805641029408, 0.6521139129880261, 0.05, +0.8310989038869503, 0.6703667956801913, 0.05, +0.8655425199153364, 0.688872320567722, 0.05, +0.900924054157387, 0.7076306848410128, 0.05, +0.9372561486115136, 0.7266418890825328, 0.05, +0.9745514463436292, 0.7459059546423114, 0.05, +1.0128225924405525, 0.7654229219384675, 0.05, +1.052082249958503, 0.7851931503590105, 0.05, +1.0923430623111199, 0.8052162470523379, 0.05, +1.1336176952569021, 0.8254926589156464, 0.05, +1.1759188063771011, 0.8460222224039812, 0.05, +1.219259070668237, 0.8668052858227163, 0.05, +1.2636511458098392, 0.8878415028320471, 0.05, +1.3091077265085667, 0.9091316139745503, 0.05, +1.3556414730016828, 0.9306749298623248, 0.05, +1.4032650848459998, 0.9524722368863382, 0.05, +1.4519912376557675, 0.974523056195355, 0.05, +1.5018326421922084, 0.996828090728816, 0.05, +1.552801984245657, 1.0193868410689757, 0.05, +1.604911972665261, 1.0421997683920798, 0.05, +1.6581753208324825, 1.0652669633444312, 0.05, +1.712604745912607, 1.0885885016024877, 0.05, +1.768212967958101, 1.1121644409098752, 0.05, +1.8250127112249173, 1.135994865336328, 0.05, +1.8830167246279743, 1.1600802680611406, 0.05, +1.9422377401939006, 1.1844203113185274, 0.05, +2.002688507842786, 1.2090153529777063, 0.05, +2.064381787645844, 1.233865596061159, 0.05, +2.127330342687189, 1.2589711008268962, 0.05, +2.1915406521018403, 1.284206188293029, 0.05, +2.2570129035830844, 1.3094450296248776, 0.05, +2.3237472931909666, 1.3346877921576445, 0.05, +2.39174402109802, 1.359934558141063, 0.05, +2.4610032913732267, 1.385185405504138, 0.05, +2.5315253320163, 1.4104408128614667, 0.05, +2.6033103519630783, 1.435700398935568, 0.05, +2.6763585817199815, 1.4609645951380645, 0.05, +2.750670266876076, 1.4862337031218877, 0.05, +2.826245642070152, 1.5115075038815213, 0.05, +2.9030849619543044, 1.5367863976830483, 0.05, +2.9811884874262455, 1.5620705094388194, 0.05, +3.0605564914996033, 1.5873600814671556, 0.05, +3.1411892411795526, 1.612654993598988, 0.05, +3.2230870306515054, 1.637955789439055, 0.05, +3.3062501466966565, 1.663262320903025, 0.05, +3.3906789029367963, 1.6885751248027958, 0.05, +3.4763736025873806, 1.7138939930116903, 0.05, +3.5633345795268303, 1.739219538788993, 0.05, +3.6515621629283586, 1.7645516680305664, 0.05, +3.7410566926145767, 1.7898905937243652, 0.05, +3.8318185346636984, 1.8152368409824289, 0.05, +3.9238480439189165, 1.8405901851043651, 0.05, +4.017145602992347, 1.8659511814686083, 0.05, +4.111711607674137, 1.89132009363581, 0.05, +4.207546448138892, 1.916696809295091, 0.05, +4.304650544604839, 1.94208192931895, 0.05, +4.403024320744308, 1.9674755227893703, 0.05, +4.502668220017966, 1.99287798547318, 0.05, +4.603582698998242, 2.0182895796055043, 0.05, +4.705768216458246, 2.043710349200075, 0.05, +4.809225263869548, 2.0691409482260372, 0.05, +4.913954330611866, 2.0945813348463593, 0.05, +5.019955929092724, 2.120031969617159, 0.05, +5.127230594682832, 2.1454933118021557, 0.05, +5.235778859480314, 2.1709652959496495, 0.05, +5.345601286606766, 2.1964485425290357, 0.05, +5.456698453729011, 2.221943342444893, 0.05, +5.569070952604388, 2.2474499775075394, 0.05, +5.6827193907184395, 2.272968762281027, 0.05, +5.797638077973191, 2.298373745095026, 0.05, +5.913815038485048, 2.323539210237139, 0.05, +6.03123827854955, 2.348464801290041, 0.05, +6.149895848673903, 2.3731514024870584, 0.05, +6.269775781055619, 2.397598647634335, 0.05, +6.390866143315396, 2.421807245195522, 0.05, +6.513154999746663, 2.445777128625344, 0.05, +6.636630425582836, 2.469508516723454, 0.05, +6.761280517625209, 2.4930018408474495, 0.05, +6.887093371533744, 2.5162570781707174, 0.05, +7.014057091289094, 2.5392743951069887, 0.05, +7.142159802825238, 2.562054230722878, 0.05, +7.271389625011424, 2.5845964437237248, 0.05, +7.40173469191208, 2.606901338013116, 0.05, +7.533183143762812, 2.6289690370146395, 0.05, +7.665723125852412, 2.650799641791997, 0.05, +7.799342783129276, 2.6723931455372942, 0.05, +7.934030270451534, 2.6937497464451567, 0.05, +8.069773743730002, 2.714869465569363, 0.05, +8.206561357375227, 2.7357522729044916, 0.05, +8.344381263606428, 2.7563981246240163, 0.05, +8.483221608916388, 2.776806906199213, 0.05, +8.62307054101827, 2.7969786420376535, 0.05, +8.763916193857947, 2.816913056793522, 0.05, +8.905746701576625, 2.8366101543735733, 0.05, +9.048550174628117, 2.8560694610298447, 0.05, +9.192314717638297, 2.8752908602036102, 0.05, +9.337028405173243, 2.8942737506989182, 0.05, +9.482679305639058, 2.9130180093163265, 0.05, +9.629255450083829, 2.931522888895411, 0.05, +9.776744846671017, 2.9497879317437503, 0.05, +9.925135472403085, 2.9678125146413694, 0.05, +10.074415264240324, 2.985595836744779, 0.05, +10.22457212232436, 3.003137161680717, 0.05, +10.375593894858973, 3.0204354506922613, 0.05, +10.527468391062335, 3.0374899240672497, 0.05, +10.68018334809913, 3.0542991407358904, 0.05, +10.83372645820601, 3.0708622021376297, 0.05, +10.988085343141737, 3.0871776987145294, 0.05, +11.143247549391845, 3.103244125002147, 0.05, +11.299200549371346, 3.1190599995900095, 0.05, +11.45593173461112, 3.134623704795488, 0.05, +11.613428409677965, 3.149933501336901, 0.05, +11.771677782852198, 3.164987463484632, 0.05, +11.93066696295578, 3.1797836020716512, 0.05, +12.09038296254623, 3.1943199918090053, 0.05, +12.250812676341166, 3.2085942758987382, 0.05, +12.41194288958147, 3.222604264806077, 0.05, +12.573760269808881, 3.23634760454823, 0.05, +12.736251362432514, 3.2498218524726497, 0.05, +12.89940258981839, 3.2630245477175217, 0.05, +13.063200246352752, 3.275953130687249, 0.05, +13.22763049405748, 3.28860495409459, 0.05, +13.392679367661703, 3.300977472084448, 0.05, +13.55833277381989, 3.3130681231637453, 0.05, +13.724576484761068, 3.3248742188235596, 0.05, +13.891396146354356, 3.3363932318657783, 0.05, +14.058777280584184, 3.34762268459657, 0.05, +14.22670528753728, 3.3585601390619195, 0.05, +14.395165449459228, 3.3692032384389363, 0.05, +14.564142939596193, 3.379549802739298, 0.05, +14.73362282803055, 3.389597768687124, 0.05, +14.903590089862675, 3.399345236642494, 0.05, +15.074029613268142, 3.4087904681093466, 0.05, +15.244926212287702, 3.417931980391219, 0.05, +15.416264635588243, 3.42676846601084, 0.05, +15.588029578237354, 3.435298852982203, 0.05, +15.760205694122321, 3.4435223176993373, 0.05, +15.932777610170726, 3.451438320968077, 0.05, +16.105729938231224, 3.45904656120994, 0.05, +16.279047288473507, 3.4663470048456655, 0.05, +16.452714282209435, 3.4733398747185595, 0.05, +16.62671556577745, 3.480025671360277, 0.05, +16.80103582310917, 3.4864051466344494, 0.05, +16.975659789509912, 3.4924793280148205, 0.05, +17.150572260854158, 3.4982494268849305, 0.05, +17.325758107420103, 3.503716931318886, 0.05, +17.501202282661822, 3.5088835048343636, 0.05, +17.676889833626, 3.5137510192835197, 0.05, +17.852805908975117, 3.5183215069823537, 0.05, +18.02893576677717, 3.5225971560410785, 0.05, +18.20526478082631, 3.526580280982806, 0.05, +18.381778445377286, 3.530273291019497, 0.05, +18.558462381159075, 3.5336787156357596, 0.05, +18.73530233552554, 3.536799087329295, 0.05, +18.912284188114537, 3.539637051779944, 0.05, +19.089393948536173, 3.542195208432765, 0.05, +19.266617759382576, 3.5444762169280386, 0.05, +19.443941892052887, 3.5464826534062053, 0.05, +19.621352749354635, 3.5482171460349363, 0.05, +19.798836858592185, 3.5496821847509885, 0.05, +19.976380873393353, 3.5508802960233665, 0.05, +20.153971564749174, 3.55181382711643, 0.05, +20.331595822060503, 3.552485146226557, 0.05, +20.50924064342828, 3.552896427355561, 0.05, +20.68689313513452, 3.5530498341248338, 0.05, +20.86454050554216, 3.55294740815277, 0.05, +21.04217005598813, 3.5525910089194013, 0.05, +21.2197691811172, 3.5519825025813865, 0.05, +21.39732535893241, 3.5511235563041814, 0.05, +21.574832485867706, 3.550142538705933, 0.05, +21.752290861831813, 3.549167519282149, 0.05, +21.92970083969293, 3.5481995572223233, 0.05, +22.107062824324096, 3.5472396926233287, 0.05, +22.284377264233175, 3.5462887981815903, 0.05, +22.46164464609821, 3.5453476373007247, 0.05, +22.638865495918413, 3.544416996404019, 0.05, +22.816040366355853, 3.543497408748834, 0.05, +22.99316984108256, 3.5425894945340644, 0.05, +23.170254525417715, 3.5416936867030917, 0.05, +23.347295047898402, 3.5408104496137387, 0.05, +23.5242920497133, 3.5399400362979265, 0.05, +23.70124618924031, 3.5390827905402635, 0.05, +23.87815813355485, 3.5382388862908067, 0.05, +24.0550285622988, 3.5374085748789863, 0.05, +24.231858156851516, 3.5365918910542558, 0.05, +24.408647606012092, 3.535788983211511, 0.05, +24.58539759953282, 3.534999870414505, 0.05, +24.762108825398183, 3.53422451730727, 0.05, +24.938781974579133, 3.5334629836189984, 0.05, +25.11541773121135, 3.5327151326442983, 0.05, +25.292016777037393, 3.531980916520859, 0.05, +25.46857978974245, 3.531260254101131, 0.05, +25.645107437020663, 3.5305529455642346, 0.05, +25.82160038229661, 3.529858905518886, 0.05, +25.9980592785467, 3.5291779250018753, 0.05, +26.174484773227594, 3.5285098936178683, 0.05, +26.350877500248654, 3.5278545404212234, 0.05, +26.5272380854491, 3.527211704008906, 0.05, +26.70356714403893, 3.5265811717966624, 0.05, +26.87986527944048, 3.5259627080309768, 0.05, +27.056133084407364, 3.5253560993376967, 0.05, +27.23237113932636, 3.5247610983799342, 0.05, +27.408580013711354, 3.524177487699871, 0.05, +27.58476026526972, 3.5236050311672984, 0.05, +27.76091243668213, 3.5230434282481946, 0.05, +27.93703706210508, 3.522492508459035, 0.05, +28.113134661514668, 3.5219519881917236, 0.05, +28.28920574353, 3.521421640306699, 0.05, +28.465250802994074, 3.520901189281458, 0.05, +28.641270324700532, 3.5203904341291428, 0.05, +28.817264779391966, 3.5198890938286707, 0.05, +28.99323462667478, 3.5193969456562657, 0.05, +29.16918031437369, 3.5189137539782265, 0.05, +29.34510227717211, 3.5184392559684152, 0.05, +29.52100094009565, 3.51797325847081, 0.05, +29.696876714304118, 3.5175154841693455, 0.05, +29.87273000188501, 3.517065751617844, 0.05, +30.04856119137097, 3.516623789719194, 0.05, +30.22437066253721, 3.5161894233248616, 0.05, +30.40015878170896, 3.5157623834349527, 0.05, +30.57592590745935, 3.5153425150078066, 0.05, +30.751672384423227, 3.5149295392775364, 0.05, +30.92739854875162, 3.514523286567801, 0.05, +31.103104727480215, 3.514123574571908, 0.05, +31.27879123610967, 3.513730172589083, 0.05, +31.454458379525793, 3.5133428683224763, 0.05, +31.630106455227683, 3.512961514037774, 0.05, +31.80573574941552, 3.5125858837567345, 0.05, +31.981346539997567, 3.512215811640961, 0.05, +32.15693909484465, 3.5118510969416863, 0.05, +32.33251367469987, 3.5114915971043614, 0.05, +32.508070529146465, 3.511137088931991, 0.05, +32.683609900270966, 3.5107874224900497, 0.05, +32.85913202346365, 3.5104424638537384, 0.05, +33.034637122430674, 3.5101019793404435, 0.05, +33.210125415117055, 3.5097658537276497, 0.05, +33.38559711144566, 3.5094339265721843, 0.05, +33.56105241267125, 3.509106024511802, 0.05, +33.73649151314774, 3.508782009529825, 0.05, +33.91191459917421, 3.5084617205293265, 0.05, +34.08732184953442, 3.5081450072042086, 0.05, +34.26271343636099, 3.507831736531382, 0.05, +34.438089524633014, 3.507521765440454, 0.05, +34.61345027160478, 3.5072149394354124, 0.05, +34.7887958285082, 3.506911138068247, 0.05, +34.96412633910717, 3.506610211979427, 0.05, +35.13944194121154, 3.5063120420874254, 0.05, +35.31474276572218, 3.5060164902128443, 0.05, +35.490028936554054, 3.5057234166374966, 0.05, +35.665300572418, 3.505432717278806, 0.05, +35.840557784543265, 3.5051442425053945, 0.05, +36.01580067901866, 3.504857889507863, 0.05, +36.19102935524603, 3.5045735245474345, 0.05, +36.366243906787986, 3.5042910308391284, 0.05, +36.541444421080655, 3.5040102858534494, 0.05, +36.71663097965668, 3.50373117152039, 0.05, +36.891803658786884, 3.5034535826041817, 0.05, +37.06696252824649, 3.5031773891921825, 0.05, +37.24210765241769, 3.5029024834238442, 0.05, +37.417239090205264, 3.5026287557515006, 0.05, +37.59235689466807, 3.502356089256091, 0.05, +37.76746111334091, 3.502084373456687, 0.05, +37.942551788248814, 3.501813498158127, 0.05, +38.11762895592269, 3.5015433534774996, 0.05, +38.292692647417255, 3.501273829891357, 0.05, +38.46774288827548, 3.501004817164589, 0.05, +38.64277969869344, 3.5007362083591076, 0.05, +38.817803093492685, 3.5004678959848756, 0.05, +38.99281308201056, 3.500199770357473, 0.05, +39.1678096682081, 3.499931723950845, 0.05, +39.342792850694686, 3.4996636497317017, 0.05, +39.51776262263562, 3.4993954388186754, 0.05, +39.69271897180699, 3.499126983427309, 0.05, +39.867661880717, 3.4988581782002983, 0.05, +40.04259132627216, 3.498588911103103, 0.05, +40.21750727999094, 3.498319074375585, 0.05, +40.39240970796033, 3.4980485593879034, 0.05, +40.56729857078203, 3.4977772564339076, 0.05, +40.7421738235277, 3.497505054913367, 0.05, +40.91703541568415, 3.4972318431289096, 0.05, +41.091883291160975, 3.4969575095365304, 0.05, +41.266717388632095, 3.4966819494224546, 0.05, +41.44153764008152, 3.496405028988563, 0.05, +41.616343973031746, 3.4961266590044535, 0.05, +41.791136308011424, 3.495846699593588, 0.05, +41.96591456047607, 3.495565049292991, 0.05, +42.140678639893466, 3.495281588347833, 0.05, +42.315428449601065, 3.4949961941520256, 0.05, +42.49016388664554, 3.4947087408895494, 0.05, +42.66488484196497, 3.4944191063885204, 0.05, +42.839591200999614, 3.4941271806928733, 0.05, +43.01428284205662, 3.493832821140149, 0.05, +43.188959637125585, 3.493535901379224, 0.05, +43.363621451870046, 3.493236294889218, 0.05, +43.53826814607129, 3.4929338840248385, 0.05, +43.712899571088094, 3.4926285003361346, 0.05, +43.88751557287801, 3.4923200357982354, 0.05, +44.06211599008876, 3.492008344215045, 0.05, +44.23670065350329, 3.4916932682905566, 0.05, +44.41126938893725, 3.4913747086791282, 0.05, +44.58582201207402, 3.4910524627353716, 0.05, +44.76035833251453, 3.490726408810208, 0.05, +44.934878153409, 3.4903964178895355, 0.05, +45.10938126770335, 3.4900622858868546, 0.05, +45.28386746197585, 3.489723885450072, 0.05, +45.4583365148348, 3.489381057178958, 0.05, +45.63278819602547, 3.4890336238134823, 0.05, +45.807222268067655, 3.488681440843652, 0.05, +45.98163848304661, 3.488324299579092, 0.05, +46.156036586613155, 3.487962071330856, 0.05, +46.33041631352784, 3.4875945382936826, 0.05, +46.5047773916177, 3.4872215617971722, 0.05, +46.67911953720004, 3.486842911646706, 0.05, +46.85344245895385, 3.486458435076277, 0.05, +47.027745854948215, 3.486067919887349, 0.05, +47.20202941506159, 3.485671202267398, 0.05, +47.3762928163952, 3.4852680266722107, 0.05, +47.55053572949649, 3.484858262025833, 0.05, +47.724757811454, 3.484441639150214, 0.05, +47.89895871073408, 3.484017985601674, 0.05, +48.07313806531431, 3.483587091604665, 0.05, +48.247295500387935, 3.4831487014725515, 0.05, +48.42143063121722, 3.482702616585651, 0.05, +48.595543063418795, 3.4822486440314697, 0.05, +48.76963238990426, 3.4817865297092734, 0.05, +48.94369819061454, 3.481316014205571, 0.05, +49.11774003515789, 3.4808368908668808, 0.05, +49.29175748333474, 3.480348963537117, 0.05, +49.46575007982856, 3.479851929876291, 0.05, +49.63971735808767, 3.4793455651822316, 0.05, +49.81365884171478, 3.4788296725422105, 0.05, +49.98757403857062, 3.47830393711673, 0.05, +50.161462446553266, 3.4777681596528973, 0.05, +50.33532355128915, 3.477222094717705, 0.05, +50.50915682418191, 3.4766654578550957, 0.05, +50.682961727320304, 3.476098062767985, 0.05, +50.85673770701692, 3.475519593932282, 0.05, +51.03048420143246, 3.474929888310742, 0.05, +51.20420063377375, 3.4743286468258496, 0.05, +51.377886416570256, 3.473715655930069, 0.05, +51.551540950670706, 3.4730906820090643, 0.05, +51.725163625127884, 3.4724534891435512, 0.05, +51.89875382070951, 3.4718039116325428, 0.05, +52.07231090381736, 3.4711416621570015, 0.05, +52.24583423317543, 3.470466587161398, 0.05, +52.41932315883531, 3.469778513197608, 0.05, +52.59277702010128, 3.46907722531938, 0.05, +52.76619515120864, 3.4683626221472608, 0.05, +52.93957687743139, 3.4676345244549713, 0.05, +53.1129215168484, 3.4668927883401683, 0.05, +53.286228386640516, 3.4661373958422836, 0.05, +53.459496797196536, 3.4653682111203965, 0.05, +53.63272605910957, 3.464585238260789, 0.05, +53.80591547821341, 3.463788382076732, 0.05, +53.979064367680095, 3.462977789333799, 0.05, +54.15217203819325, 3.462153410263135, 0.05, +54.325237808972034, 3.461315415575658, 0.05, +54.49826100510444, 3.4604639226480596, 0.05, +54.67124096187436, 3.459599135398476, 0.05, +54.84417702700686, 3.458721302649955, 0.05, +55.01706856389976, 3.457830737858063, 0.05, +55.18991495452366, 3.4569278124778706, 0.05, +55.362715603205025, 3.4560129736273284, 0.05, +55.535469939306395, 3.45508672202736, 0.05, +55.708177420793994, 3.4541496297519645, 0.05, +55.88083754185665, 3.4532024212530734, 0.05, +56.05344982989846, 3.4522457608361954, 0.05, +56.22601385911259, 3.4512805842825336, 0.05, +56.39852924914606, 3.4503078006693237, 0.05, +56.57099567004684, 3.4493284180156905, 0.05, +56.74341285120145, 3.448343623092145, 0.05, +56.915780583173095, 3.447354639432983, 0.05, +57.0880987252682, 3.446362841902152, 0.05, +57.26036721013822, 3.445369697400359, 0.05, +57.43258605048212, 3.444376806878037, 0.05, +57.60475534233376, 3.4433858370327335, 0.05, +57.776875273173125, 3.4423986167872975, 0.05, +57.94894612668902, 3.441417070317949, 0.05, +58.12096828854003, 3.440443237020113, 0.05, +58.29294225181309, 3.4394792654612587, 0.05, +58.46486861977756, 3.438527359289524, 0.05, +58.63674811390771, 3.4375898826028437, 0.05, +58.808581576349745, 3.4366692488407327, 0.05, +58.98036997387629, 3.435767950530967, 0.05, +59.15211439983641, 3.4348885192022176, 0.05, +59.3238160795407, 3.434033594085808, 0.05, +59.4954763684998, 3.433205779182089, 0.05, +59.66709675574019, 3.432407744807814, 0.05, +59.838678862037206, 3.4316421259403667, 0.05, +60.01022444030753, 3.4309115654065114, 0.05, +60.181735372247026, 3.430218638789886, 0.05, +60.35321366586769, 3.4295658724132805, 0.05, +60.52466145086524, 3.428955699950889, 0.05, +60.696080973333686, 3.4283904493689654, 0.05, +60.86747458914486, 3.42787231622346, 0.05, +61.038844756058, 3.427403338262718, 0.05, +61.210194025818474, 3.426985395209595, 0.05, +61.38152503297516, 3.4266201431337473, 0.05, +61.55284048658388, 3.426309072174401, 0.05, +61.72414315697205, 3.426053407763299, 0.05, +61.89543586277698, 3.425854116098547, 0.05, +62.066721460990706, 3.425711964274567, 0.05, +62.238002832903696, 3.425627438259853, 0.05, +62.40928286923692, 3.4256007266644226, 0.05, +62.58056445888293, 3.4256317929202362, 0.05, +62.751850471199674, 3.425720246334883, 0.05, +62.92314375093542, 3.425865594714864, 0.05, +63.09444709687288, 3.42606691874926, 0.05, +63.265763251602564, 3.4263230945937138, 0.05, +63.43709489489339, 3.4266328658165355, 0.05, +63.60844462747891, 3.4269946517103067, 0.05, +63.77981495979846, 3.4274066463908808, 0.05, +63.951208309606756, 3.427866996165932, 0.05, +64.12262698402536, 3.428373488372068, 0.05, +64.29407318405332, 3.4289240005592605, 0.05, +64.46554898545295, 3.429516027992872, 0.05, +64.63705634941721, 3.4301472792849763, 0.05, +64.80859710320378, 3.43081507573156, 0.05, +64.98017294905783, 3.4315169170809448, 0.05, +65.15178545340025, 3.4322500868484234, 0.05, +65.32343605570874, 3.4330120461697846, 0.05, +65.49512606190659, 3.433800123957056, 0.05, +65.66685664588282, 3.434611679524442, 0.05, +65.83862885851455, 3.4354442526347997, 0.05, +66.01044362055414, 3.4362952407918805, 0.05, +66.1823017327108, 3.43716224313325, 0.05, +66.3542038763499, 3.438042872782139, 0.05, +66.52615062132114, 3.4389348994247224, 0.05, +66.69814242408215, 3.439836055220369, 0.05, +66.87017964341558, 3.4407443866687437, 0.05, +67.04226253280808, 3.4416577878501022, 0.05, +67.21439125858775, 3.4425745155933387, 0.05, +67.3865658933919, 3.443492696082894, 0.05, +67.55878643657454, 3.4444108636526387, 0.05, +67.73105279826385, 3.4453272337861423, 0.05, +67.90336483020802, 3.44624063888357, 0.05, +68.07572230999442, 3.4471495957278684, 0.05, +68.24812496230702, 3.448053046251879, 0.05, +68.42057245436109, 3.448949841081579, 0.05, +68.59306439577108, 3.4498388281996215, 0.05, +68.76560036442508, 3.450719373080061, 0.05, +68.9381798917143, 3.451590545784254, 0.05, +69.1108024640203, 3.4524514461200617, 0.05, +69.28346755297558, 3.4533017791057277, 0.05, +69.4561745851942, 3.4541406443724485, 0.05, +69.628922976862, 3.454967833355843, 0.05, +69.80171211667985, 3.455782796356973, 0.05, +69.97454137001044, 3.456585066611717, 0.05, +70.14741010050578, 3.457374609906813, 0.05, +70.32031764399488, 3.45815086978203, 0.05, +70.49326334198099, 3.4589139597222576, 0.05, +70.66624651729948, 3.459663506369917, 0.05, +70.83926649479695, 3.460399549949205, 0.05, +71.01232259329957, 3.4611219700524125, 0.05, +71.18541412671587, 3.4618306683258835, 0.05, +71.3585404197692, 3.462525861066559, 0.05, +71.53170078645171, 3.4632073336500846, 0.05, +71.70489455420285, 3.4638753550228256, 0.05, +71.87812104730517, 3.4645298620463025, 0.05, +72.05137960033484, 3.4651710605933883, 0.05, +72.22466955058638, 3.465799005030812, 0.05, +72.39799024693843, 3.466413927041072, 0.05, +72.57134103747485, 3.467015810728425, 0.05, +72.74472129035587, 3.4676050576202924, 0.05, +72.9181303791826, 3.4681817765346916, 0.05, +73.0915676714403, 3.46874584515397, 0.05, +73.2650325712494, 3.4692979961820036, 0.05, +73.43852447677844, 3.4698381105805836, 0.05, +73.61204279944691, 3.4703664533694853, 0.05, +73.78558695658627, 3.4708831427873474, 0.05, +73.95915638601865, 3.4713885886475815, 0.05, +74.13275053239045, 3.4718829274360776, 0.05, +74.30636885119992, 3.472366376189547, 0.05, +74.48001080817652, 3.4728391395319855, 0.05, +74.65367587533848, 3.473301343239124, 0.05, +74.82736355130349, 3.473753519300394, 0.05, +75.00107333219563, 3.4741956178428848, 0.05, +75.17480472261069, 3.4746278083011792, 0.05, +75.348557251517, 3.47505057812617, 0.05, +75.52233045057586, 3.475463981177465, 0.05, +75.69612386296889, 3.4758682478604186, 0.05, +75.86993704287788, 3.4762635981797385, 0.05, +76.04376955502964, 3.4766502430353476, 0.05, +76.21762096977949, 3.4770282949970768, 0.05, +76.3914908740637, 3.4773980856842037, 0.05, +76.56537886485937, 3.4777598159133083, 0.05, +76.73928454654227, 3.47811363365798, 0.05, +76.91320753283028, 3.4784597257604637, 0.05, +77.08714744676234, 3.4787982786411553, 0.05, +77.61551483113402, 10.567347687433397, 0.05, +77.79011512372797, 3.4920058518789077, 0.05, +77.96471207455849, 3.49193901661038, 0.05, +78.13930564664088, 3.491871441647769, 0.05, +78.31389579525204, 3.491802972223198, 0.05, +78.48848248164528, 3.4917337278647684, 0.05, +78.66306565368826, 3.491663440859799, 0.05, +78.83764527436907, 3.4915924136160257, 0.05, +79.01222129221334, 3.491520356885444, 0.05, +79.18679366488469, 3.4914474534270243, 0.05, +79.36136234253897, 3.491373553085565, 0.05, +79.53592727699291, 3.491298689078862, 0.05, +79.71048842530257, 3.491222966193375, 0.05, +79.8850457302743, 3.4911460994346335, 0.05, +80.05959914412247, 3.491068276963457, 0.05, +80.23414862192362, 3.490989556023108, 0.05, +80.40869410204255, 3.4909096023785655, 0.05, +80.58323553250466, 3.490828609242154, 0.05, +80.75777286728773, 3.4907466956614384, 0.05, +80.93230604410152, 3.4906635362760423, 0.05, +81.10683501135641, 3.4905793450977756, 0.05, +81.28135971185993, 3.4904940100705093, 0.05, +81.45588008725376, 3.490407507876444, 0.05, +81.63039607701442, 3.4903197952133933, 0.05, +81.8049076296081, 3.4902310518734168, 0.05, +81.97941467408698, 3.4901408895777966, 0.05, +82.1539171557147, 3.4900496325543386, 0.05, +82.32841500871392, 3.489957059984523, 0.05, +82.50290816623041, 3.4898631503298083, 0.05, +82.67739657240051, 3.4897681234019156, 0.05, +82.85188015817367, 3.4896717154632375, 0.05, +83.02635885184243, 3.4895738733750785, 0.05, +83.20083258800071, 3.4894747231656087, 0.05, +83.37530129825258, 3.4893742050374024, 0.05, +83.54976490859484, 3.4892722068450763, 0.05, +83.72422335030672, 3.4891688342374816, 0.05, +83.89867655477765, 3.4890640894185903, 0.05, +84.07312443794302, 3.4889576633074193, 0.05, +84.2475669299015, 3.4888498391693967, 0.05, +84.42200395196063, 3.4887404411826197, 0.05, +84.59643542546844, 3.488629470156285, 0.05, +84.7708612724319, 3.488516939269202, 0.05, +84.9452814100989, 3.4884027533399307, 0.05, +85.11969575527864, 3.488286903594953, 0.05, +85.29410422687174, 3.4881694318619916, 0.05, +85.46850673626682, 3.4880501879017, 0.05, +85.64290319901899, 3.4879292550433587, 0.05, +85.81729352315709, 3.4878064827619992, 0.05, +85.9916776221127, 3.4876819791121605, 0.05, +86.1660554032117, 3.487555621979957, 0.05, +86.34042677373148, 3.4874274103954908, 0.05, +86.51479163579887, 3.487297241347776, 0.05, +86.68914989484722, 3.4871651809669, 0.05, +86.86350145013127, 3.4870311056808276, 0.05, +87.03784620782463, 3.486895153867269, 0.05, +87.21218405707391, 3.486756984985746, 0.05, +87.38651490079744, 3.4866168744703594, 0.05, +87.5608386334815, 3.4864746536811997, 0.05, +87.7351551407575, 3.4863301455200695, 0.05, +87.90946432227362, 3.486183630322562, 0.05, +88.08376606266503, 3.4860348078281342, 0.05, +88.25806024732466, 3.485883693192525, 0.05, +88.4323467617524, 3.485730288554661, 0.05, +88.60662548814338, 3.485574527819575, 0.05, +88.78089630797295, 3.4854163965915195, 0.05, +88.95515910431568, 3.485255926854529, 0.05, +89.12941374776528, 3.485092868991893, 0.05, +89.30366011467017, 3.4849273380976356, 0.05, +89.4778980756016, 3.4847592186287772, 0.05, +89.65212750119599, 3.4845885118878552, 0.05, +89.82634826028173, 3.484415181714833, 0.05, +90.00056021783304, 3.484239151026141, 0.05, +90.17476323981296, 3.484060439598374, 0.05, +90.34895717993244, 3.4838788023894662, 0.05, +90.52314190347192, 3.483694470789579, 0.05, +90.69731726072855, 3.4835071451326285, 0.05, +90.87148311238845, 3.4833170331977317, 0.05, +91.0456392996602, 3.4831237454349426, 0.05, +91.21978568029304, 3.482927612657077, 0.05, +91.393922097095, 3.4827283360390626, 0.05, +91.56804839526878, 3.4825259634754113, 0.05, +91.74216440962661, 3.4823202871566177, 0.05, +91.91626998451866, 3.4821114978411143, 0.05, +92.09036495482597, 3.4818994061461974, 0.05, +92.26444915682148, 3.481684039910265, 0.05, +92.43852241532925, 3.481465170155241, 0.05, +92.6125845613884, 3.4812429211831444, 0.05, +92.7866354186244, 3.481017144719847, 0.05, +92.96067481243269, 3.480787876165836, 0.05, +93.13470256281656, 3.480555007677524, 0.05, +93.30871848481934, 3.4803184400554743, 0.05, +93.48272239488372, 3.4800782012877867, 0.05, +93.65671410505625, 3.4798342034504914, 0.05, +93.83069342717835, 3.4795864424419287, 0.05, +94.00466016491463, 3.4793347547255964, 0.05, +94.17861412369679, 3.4790791756433386, 0.05, +94.3525551051132, 3.4788196283282518, 0.05, +94.5264829072268, 3.4785560422717943, 0.05, +94.70039733386949, 3.4782885328539614, 0.05, +94.87429817078183, 3.4780167382466396, 0.05, +95.04818521491185, 3.4777408826005045, 0.05, +95.22205825171875, 3.4774607361378287, 0.05, +95.39591707571157, 3.477176479856252, 0.05, +95.56976146534144, 3.4768877925975974, 0.05, +95.74359120486605, 3.4765947904921477, 0.05, +95.91740607622485, 3.4762974271758798, 0.05, +96.09120586175062, 3.4759957105155523, 0.05, +96.2649903352426, 3.4756894698394625, 0.05, +96.4387592725715, 3.475378746577946, 0.05, +96.61251244794484, 3.4750635074668104, 0.05, +96.78624963409146, 3.474743722932466, 0.05, +96.95997060244252, 3.474419367021272, 0.05, +97.13367512331072, 3.474090417364067, 0.05, +97.30736296606928, 3.473756855170969, 0.05, +97.48103389933249, 3.4734186652642567, 0.05, +97.6546876911403, 3.4730758361562684, 0.05, +97.82832410963258, 3.47272836984565, 0.05, +98.00194292652357, 3.472376337819728, 0.05, +98.17554390574037, 3.47201958433606, 0.05, +98.34912681514487, 3.471658188090113, 0.05, +98.52269142954995, 3.471292288101614, 0.05, +98.69623751586859, 3.470921726372662, 0.05, +98.86976484926274, 3.470546667883013, 0.05, +99.04327320038782, 3.470167022501598, 0.05, +99.2167623528915, 3.4697830500735054, 0.05, +99.39023208171749, 3.469394576519987, 0.05, +99.56368217015994, 3.469001768849045, 0.05, +99.73711240495126, 3.4686046958266505, 0.05, +99.91052257613718, 3.468203423718333, 0.05, +100.08391248339203, 3.467798145097012, 0.05, +100.25728192248908, 3.4673887819411635, 0.05, +100.43063070264735, 3.466975603165268, 0.05, +100.60395863424037, 3.4665586318605133, 0.05, +100.77726553933117, 3.466138101815993, 0.05, +100.9505512463615, 3.465714140606566, 0.05, +101.12381559077843, 3.465286888338667, 0.05, +101.29705841570978, 3.464856498627119, 0.05, +101.47027957754757, 3.464423236755708, 0.05, +101.64347894017556, 3.463987252559795, 0.05, +101.81665638435031, 3.4635488834952297, 0.05, +101.98981179535639, 3.4631082201216343, 0.05, +102.16294507713543, 3.4626656355809935, 0.05, +102.33605614558597, 3.4622213690107344, 0.05, +102.50914492811803, 3.46177565064114, 0.05, +102.6822113744426, 3.4613289264915164, 0.05, +102.85525544624669, 3.46088143608175, 0.05, +103.02827712217089, 3.4604335184839945, 0.05, +103.20127640279448, 3.459985612471671, 0.05, +103.37425330434613, 3.4595380310328916, 0.05, +103.54720786384928, 3.4590911900629666, 0.05, +103.7201401400943, 3.4586455249003016, 0.05, +103.89305021547226, 3.45820150755918, 0.05, +104.06593819398168, 3.457759570188327, 0.05, +104.23880420232695, 3.457320166905409, 0.05, +104.41164839100495, 3.4568837735600897, 0.05, +104.58447094053592, 3.4564509906196696, 0.05, +104.75727205197259, 3.4560222287334668, 0.05, +104.93005195949253, 3.455598150398638, 0.05, +105.10281092078117, 3.4551792257727767, 0.05, +105.27554922262992, 3.454766036974993, 0.05, +105.44826718177318, 3.4543591828652445, 0.05, +105.62096514600918, 3.453959284720086, 0.05, +105.79364348933429, 3.45356686650197, 0.05, +105.96630261773225, 3.4531825679594106, 0.05, +106.13894297227058, 3.452807090766744, 0.05, +106.311565017643, 3.452440907448321, 0.05, +106.48416925598495, 3.45208476683897, 0.05, +106.65675621633964, 3.4517392070938993, 0.05, +106.82932646169756, 3.451404907158325, 0.05, +107.00188058391892, 3.4510824444272616, 0.05, +107.17441920580602, 3.450772437742049, 0.05, +107.34694298204809, 3.4504755248414076, 0.05, +107.51945259327263, 3.450192224490729, 0.05, +107.69194875144998, 3.4499231635471785, 0.05, +107.86443219622336, 3.449668895467631, 0.05, +108.0369036937785, 3.4494299511026814, 0.05, +108.2093640355835, 3.4492068361002373, 0.05, +108.38181403827632, 3.449000053856276, 0.05, +108.55425454221954, 3.448810078864508, 0.05, +108.72668640947722, 3.448637345153742, 0.05, +108.89911052211295, 3.4484822527143533, 0.05, +109.07152778047171, 3.448345167175298, 0.05, +109.24393910225447, 3.448226435655118, 0.05, +109.4163454194235, 3.4481263433803235, 0.05, +109.58874767878156, 3.4480451871612887, 0.05, +109.76114683550361, 3.4479831344411007, 0.05, +109.93354385494645, 3.4479403888568747, 0.05, +110.10593970993088, 3.4479170996886404, 0.05, +110.27833537728853, 3.4479133471529235, 0.05, +110.45073183487231, 3.447929151675802, 0.05, +110.62313006189417, 3.4479645404370483, 0.05, +110.79553103619129, 3.4480194859423077, 0.05, +110.96793572994315, 3.448093875037109, 0.05, +111.14034510921002, 3.4481875853372133, 0.05, +111.31276013159788, 3.4483004477574366, 0.05, +111.48518174361345, 3.4484322403112864, 0.05, +111.65761087985929, 3.4485827249168035, 0.05, +111.83004845876653, 3.448751578144683, 0.05, +112.00249538322012, 3.4489384890720145, 0.05, +112.17495253728906, 3.449143081378752, 0.05, +112.3474207847585, 3.449364949388728, 0.05, +112.51990096767456, 3.4496036583211533, 0.05, +112.6923939051051, 3.449858748611059, 0.05, +112.86490039113501, 3.4501297205980195, 0.05, +113.0374211942661, 3.450416062621818, 0.05, +113.20995705589729, 3.4507172326238833, 0.05, +113.38250868945161, 3.4510326710864248, 0.05, +113.55507677970502, 3.4513618050682386, 0.05, +113.7276619815365, 3.4517040366296974, 0.05, +113.90026492011431, 3.452058771556282, 0.05, +114.072886189699, 3.4524253916939878, 0.05, +114.24552635345434, 3.4528032751065543, 0.05, +114.41818594354366, 3.453191801786455, 0.05, +114.5908654606237, 3.4535903416008527, 0.05, +114.76356537450917, 3.453998277709387, 0.05, +114.93628612280196, 3.4544149658557335, 0.05, +115.10902811305611, 3.4548398050829903, 0.05, +115.28179172173277, 3.4552721735332157, 0.05, +115.45457729412811, 3.455711447906694, 0.05, +115.62738514711505, 3.456157059738639, 0.05, +115.8002155672113, 3.4566084019249304, 0.05, +115.97306881240804, 3.4570649039348598, 0.05, +116.14594511258015, 3.457526003442184, 0.05, +116.31884467003134, 3.457991149023861, 0.05, +116.49176766126244, 3.4584598246219738, 0.05, +116.66471423584818, 3.458931491714765, 0.05, +116.83768451954893, 3.45940567401508, 0.05, +117.01067861298316, 3.4598818686845783, 0.05, +117.1836965942447, 3.4603596252308604, 0.05, +117.35673851941601, 3.460838503426445, 0.05, +117.52980442220982, 3.4613180558761556, 0.05, +117.70289431733438, 3.4617979024913086, 0.05, +117.87600819893828, 3.462277632078056, 0.05, +118.04914604306462, 3.462756882526891, 0.05, +118.22230780844481, 3.4632353076036084, 0.05, +118.39549343622674, 3.4637125556386974, 0.05, +118.5687028535234, 3.4641883459333327, 0.05, +118.74193597000331, 3.4646623295981454, 0.05, +118.91519268363481, 3.465134272630189, 0.05, +119.08847287888412, 3.4656039049860365, 0.05, +119.26177642731245, 3.46607096856679, 0.05, +119.43510318936245, 3.4665352409997783, 0.05, +119.60845301441144, 3.4669965009796737, 0.05, +119.78182574306406, 3.4674545730526027, 0.05, +119.95522120583887, 3.4679092554961346, 0.05, +120.12863922506362, 3.468360384495182, 0.05, +120.30207961549588, 3.468807808645358, 0.05, +120.47554218535538, 3.4692513971900305, 0.05, +120.64902673491058, 3.4696909911038647, 0.05, +120.8225330596852, 3.4701264954922943, 0.05, +120.9960609509434, 3.470557825163992, 0.05, +121.16961019387377, 3.4709848586071588, 0.05, +121.34318056987148, 3.4714075199542154, 0.05, +121.51677185705594, 3.4718257436893465, 0.05, +121.69038383066571, 3.4722394721953536, 0.05, +121.86401626196822, 3.4726486260500997, 0.05, +122.03766892088028, 3.4730531782413085, 0.05, +122.21134157635608, 3.4734531095160706, 0.05, +122.38503399465532, 3.4738483659849084, 0.05, +122.55874594101952, 3.474238927284133, 0.05, +122.73247718054755, 3.474624790560442, 0.05, +122.90622747772811, 3.4750059436113214, 0.05, +123.07999659614075, 3.4753823682528275, 0.05, +123.2537843004172, 3.4757540855289264, 0.05, +123.42759035534966, 3.476121098649381, 0.05, +123.60141452705605, 3.476483434127625, 0.05, +123.77525657979233, 3.4768410547255257, 0.05, +123.94911628266097, 3.4771940573728, 0.05, +124.12299340314027, 3.4775424095860683, 0.05, +124.29688771222294, 3.477886181653416, 0.05, +124.47079897978506, 3.4782253512424997, 0.05, +124.64472698104717, 3.4785600252422566, 0.05, +124.81867149002419, 3.478890179540373, 0.05, +124.99263228446391, 3.4792158887945255, 0.05, +125.166609144288, 3.4795371964819175, 0.05, +125.34060184965423, 3.479854107324525, 0.05, +125.51461018434446, 3.480166693804508, 0.05, +125.6886339361932, 3.480475036974722, 0.05, +125.86267289394812, 3.480779155098331, 0.05, +126.03672684752067, 3.481079071451155, 0.05, +126.21079559081556, 3.481374865898034, 0.05, +126.38487892189518, 3.4816666215921868, 0.05, +126.55897663997688, 3.481954361634063, 0.05, +126.73308854571195, 3.4822381147014436, 0.05, +126.90721444426723, 3.482517971105552, 0.05, +127.08135414423283, 3.482793999312031, 0.05, +127.25550745531814, 3.4830662217062436, 0.05, +127.42967419091514, 3.483334711939936, 0.05, +127.60385416756999, 3.483599533097084, 0.05, +127.77804720326029, 3.483860713805982, 0.05, +127.95225312096828, 3.484118354159784, 0.05, +128.12647174434366, 3.484372467507583, 0.05, +128.30070290173134, 3.4846231477538523, 0.05, +128.47494642371402, 3.4848704396537338, 0.05, +128.64920214271933, 3.4851143801062747, 0.05, +128.8234698945845, 3.4853550373031665, 0.05, +128.99774951951346, 3.4855924985791997, 0.05, +129.17204085821666, 3.4858267740638116, 0.05, +129.3463437559963, 3.4860579555922713, 0.05, +129.52065805911033, 3.48628606228092, 0.05, +129.69498361785307, 3.4865111748548383, 0.05, +129.86932028526226, 3.4867333481838907, 0.05, +130.04366791669372, 3.486952628629403, 0.05, +130.2180263698997, 3.4871690641193536, 0.05, +130.39239550576224, 3.487382717251021, 0.05, +130.56677518760532, 3.487593636861359, 0.05, +130.74116528113015, 3.487801870496922, 0.05, +130.9155656550705, 3.4880074788072943, 0.05, +131.08997618075327, 3.4882105136553254, 0.05, +131.26439673060415, 3.4884109970176413, 0.05, +131.43882718127574, 3.488609013431737, 0.05, +131.61326741059543, 3.4888045863937327, 0.05, +131.78771730012932, 3.4889977906779994, 0.05, +131.96217673283587, 3.4891886541312886, 0.05, +132.1366455939468, 3.489377222218523, 0.05, +132.3111237715422, 3.4895635519081734, 0.05, +132.485611155137, 3.489747671895768, 0.05, +132.6601076379956, 3.4899296571716323, 0.05, +132.83461311366105, 3.4901095133089486, 0.05, +133.009127479774, 3.4902873222590713, 0.05, +133.18365063445884, 3.4904630936965555, 0.05, +133.35818247965176, 3.4906369038581624, 0.05, +133.53272291743465, 3.490808755657705, 0.05, +133.7072718531586, 3.4909787144787257, 0.05, +133.88182919514608, 3.491146839749518, 0.05, +134.0563948512257, 3.4913131215918907, 0.05, +134.23096873313548, 3.491477638195596, 0.05, +134.40555075371842, 3.491640411658837, 0.05, +134.58014082871128, 3.491801499857169, 0.05, +134.75473887451568, 3.4919609160877587, 0.05, +134.92934480984337, 3.4921187065535784, 0.05, +135.10395855602377, 3.492274923607768, 0.05, +135.27858003416344, 3.492429562793505, 0.05, +135.45320916955055, 3.4925827077422786, 0.05, +135.62784588806073, 3.4927343702038747, 0.05, +135.80249011662423, 3.492884571269928, 0.05, +135.97714178571917, 3.4930333818990627, 0.05, +136.15180082542867, 3.493180794190026, 0.05, +136.32646716877977, 3.4933268670221445, 0.05, +136.50114074992985, 3.493471623001584, 0.05, +136.67582150574873, 3.493615116377875, 0.05, +136.8505093723683, 3.4937573323914637, 0.05, +137.0252042898206, 3.4938983490464537, 0.05, +137.19990619869026, 3.49403817739281, 0.05, +137.3746150404236, 3.4941768346667383, 0.05, +137.5493279309735, 3.4942578109979707, 0.05, +137.72403574536852, 3.4941562879003873, 0.05, +137.89872594846412, 3.493804061911642, 0.05, +138.0733860040687, 3.4932011120917026, 0.05, +138.24800337510743, 3.4923474207745655, 0.05, +138.42256552528394, 3.491243003530074, 0.05, +138.59705991640436, 3.4898878224083694, 0.05, +138.77147401084247, 3.488281888762145, 0.05, +138.94579527059085, 3.486425194967736, 0.05, +139.12001115700795, 3.4843177283420235, 0.05, +139.29410913117408, 3.4819594833225835, 0.05, +139.46807665399248, 3.479350456368222, 0.05, +139.64190118505795, 3.4764906213091837, 0.05, +139.81557018513774, 3.4733800015958374, 0.05, +139.9890711135403, 3.4700185680508513, 0.05, +140.16239142994365, 3.466406328067185, 0.05, +140.33551859286996, 3.4625432585263898, 0.05, +140.50844006140568, 3.4584293707145353, 0.05, +140.6811432938632, 3.454064649150231, 0.05, +140.85361574853897, 3.449449093515823, 0.05, +141.02584488257668, 3.4445826807543933, 0.05, +141.19781815407552, 3.4394654299770546, 0.05, +141.36952301964047, 3.434097311298921, 0.05, +141.5409469364837, 3.4284783368647553, 0.05, +141.71207736105328, 3.4226084913914554, 0.05, +141.88290174928682, 3.4164877646709706, 0.05, +142.05340755701647, 3.4101161545931533, 0.05, +142.22358224000055, 3.403493659681717, 0.05, +142.39341325344938, 3.396620268976825, 0.05, +142.5628880518733, 3.3894959684784136, 0.05, +142.73199408981577, 3.3821207588495206, 0.05, +142.90071882166842, 3.374494637052812, 0.05, +143.06904970114383, 3.3666175895079236, 0.05, +143.2369741814641, 3.3584896064054526, 0.05, +143.40447971591573, 3.3501106890325913, 0.05, +143.57155375684937, 3.3414808186729372, 0.05, +143.7381837568027, 3.33259999906635, 0.05, +143.90435716752214, 3.323468214388885, 0.05, +144.07006144048984, 3.314085459354048, 0.05, +144.23528402663263, 3.304451722855562, 0.05, +144.40001237669384, 3.2945670012240735, 0.05, +144.56423394070538, 3.284431280230931, 0.05, +144.7279361684362, 3.2740445546162293, 0.05, +144.89110650905351, 3.263406812346144, 0.05, +145.05373241137485, 3.2525180464269092, 0.05, +145.2158013236501, 3.241378245505185, 0.05, +145.3773006936267, 3.2299873995318467, 0.05, +145.53821796856317, 3.2183454987295526, 0.05, +145.69854059516922, 3.2064525321211867, 0.05, +145.85825601964052, 3.194308489425739, 0.05, +146.01735168760325, 3.1819133592544824, 0.05, +146.17581504412226, 3.1692671303803253, 0.05, +146.3336335336723, 3.1563697910008757, 0.05, +146.4907946001533, 3.143221329619957, 0.05, +146.64728568682696, 3.1298217334734644, 0.05, +146.80309423639434, 3.116170991347638, 0.05, +146.95820769083394, 3.1022690887918833, 0.05, +147.11261349162177, 3.0881160157564405, 0.05, +147.2662990793976, 3.0737117555168574, 0.05, +147.41925189422452, 3.0590562965383428, 0.05, +147.571459375454, 3.044149624589654, 0.05, +147.72290896174133, 3.028991725746805, 0.05, +147.87358809118913, 3.0135825889560413, 0.05, +148.02348420079642, 2.997922192145601, 0.05, +148.17258472714173, 2.982010526906148, 0.05, +148.32087710600365, 2.9658475772386796, 0.05, +148.4683487722293, 2.9494333245128046, 0.05, +148.6149871601496, 2.932767758406333, 0.05, +148.7607797030445, 2.9158508578976488, 0.05, +148.90571383360475, 2.898682611204734, 0.05, +149.0497769835544, 2.881262998993134, 0.05, +149.19295658396882, 2.863592008288167, 0.05, +149.33524006472902, 2.845669615204002, 0.05, +149.47661485562796, 2.827495817978606, 0.05, +149.6170683847052, 2.809070581544913, 0.05, +149.75658807963438, 2.7903938985839196, 0.05, +149.89516136720198, 2.7714657513521224, 0.05, +150.03277567326805, 2.752286121321137, 0.05, +150.169418422718, 2.732854988999145, 0.05, +150.3050770397177, 2.713172339993879, 0.05, +150.4397389475242, 2.693238156130265, 0.05, +150.57339156841664, 2.6730524178487203, 0.05, +150.70602232368554, 2.6526151053780604, 0.05, +150.8376186338147, 2.6319262025835193, 0.05, +150.96816791857893, 2.610985695284521, 0.05, +151.0976575963908, 2.5897935562373764, 0.05, +151.2260750853715, 2.5683497796139956, 0.05, +151.35340780227367, 2.5466543380435294, 0.05, +151.4796431629943, 2.5247072144126594, 0.05, +151.604768582602, 2.5025083921535387, 0.05, +151.72877147514654, 2.480057850891322, 0.05, +151.85163925415205, 2.4573555801101494, 0.05, +151.9733593317688, 2.4344015523350118, 0.05, +152.09391911977298, 2.411195760083801, 0.05, +152.2133060283637, 2.3877381718143478, 0.05, +152.33150746778944, 2.3640287885150646, 0.05, +152.44851084673292, 2.3400675788696867, 0.05, +152.56430357326684, 2.315854530678677, 0.05, +152.678873054393, 2.2913896225228743, 0.05, +152.792206697059, 2.2666728533199363, 0.05, +152.9042947439239, 2.241760937298442, 0.05, +153.015133695596, 2.2167790334417816, 0.05, +153.12472347562698, 2.1917956006194736, 0.05, +153.23306400689196, 2.166810625299918, 0.05, +153.34015521341942, 2.1418241305493613, 0.05, +153.44599701946746, 2.11683612096044, 0.05, +153.55058934936122, 2.0918465978749627, 0.05, +153.653932128753, 2.066855587835866, 0.05, +153.75602528242496, 2.0418630734387944, 0.05, +153.85686873696386, 2.0168690907782083, 0.05, +153.95646241855252, 1.9918736317730024, 0.05, +154.05480625358624, 1.9668767006741157, 0.05, +154.15190016998523, 1.941878327979798, 0.05, +154.2477440948273, 1.9168784968417403, 0.05, +154.3423379564839, 1.8918772331316553, 0.05, +154.43568168379156, 1.8668745461530356, 0.05, +154.52777520540133, 1.8418704321954351, 0.05, +154.618618451367, 1.816864919313969, 0.05, +154.70821135212068, 1.7918580150736556, 0.05, +154.79655383737168, 1.7668497050200116, 0.05, +154.8836458382857, 1.741840018280283, 0.05, +154.9694872871241, 1.7168289767681204, 0.05, +155.0540781161507, 1.6918165805315843, 0.05, +155.137418257282, 1.6668028226260967, 0.05, +155.21950764399332, 1.641787734226347, 0.05, +155.30034621058286, 1.6167713317907266, 0.05, +155.3799338907145, 1.5917536026329429, 0.05, +155.45827062034425, 1.5667345925948999, 0.05, +155.53535633431667, 1.5417142794482455, 0.05, +155.61119096924867, 1.5166926986400724, 0.05, +155.6857744616045, 1.4916698471163161, 0.05, +155.759106749675, 1.4666457614102808, 0.05, +155.83118777064882, 1.4416204194767956, 0.05, +155.90201746403477, 1.4165938677190084, 0.05, +155.97159576900563, 1.3915660994173646, 0.05, +156.0399226256867, 1.3665371336214622, 0.05, +156.10699797554813, 1.3415069972284406, 0.05, +156.17282175976183, 1.3164756842740377, 0.05, +156.23739392088007, 1.2914432223647025, 0.05, +156.30071440258925, 1.2664096341837434, 0.05, +156.3627859872859, 1.2414316939330639, 0.05, +156.42361772382537, 1.2166347307898804, 0.05, +156.48322208599004, 1.1920872432930656, 0.05, +156.54161154871315, 1.1677892544620332, 0.05, +156.5987985897384, 1.1437408205054265, 0.05, +156.65479568684975, 1.1199419422267964, 0.05, +156.70961532028267, 1.096392668658006, 0.05, +156.76326997168022, 1.0730930279508895, 0.05, +156.81577212358306, 1.0500430380569414, 0.05, +156.86713426075758, 1.0272427434901839, 0.05, +156.91736886867344, 1.0046921583172996, 0.05, +156.96648843412538, 0.9823913090387104, 0.05, +157.01450544672585, 0.9603402520095686, 0.05, +157.06143239523684, 0.9385389702197862, 0.05, +157.10728177206295, 0.9169875365224487, 0.05, +157.15206606864714, 0.895685931684156, 0.05, +157.19579777903687, 0.8746342077945187, 0.05, +157.238489398825, 0.8538323957629484, 0.05, +157.28015342382162, 0.8332804999322319, 0.05, +157.320802352168, 0.8129785669272928, 0.05, +157.3604486822019, 0.7929266006782572, 0.05, +157.39910491422887, 0.7731246405392809, 0.05, +157.43678354911114, 0.7535726976451498, 0.05, +157.47349708949477, 0.7342708076724698, 0.05, +157.50925803851436, 0.7152189803920452, 0.05, +157.544078900698, 0.6964172436724583, 0.05, +157.5779721818552, 0.6778656231439146, 0.05, +157.61095038881697, 0.6595641392357313, 0.05, +157.643026028835, 0.6415128003607398, 0.05, +157.6742116106682, 0.6237116366638429, 0.05, +157.70451964391427, 0.6061606649209095, 0.05, +157.73396264026087, 0.5888599269322388, 0.05, +157.7625531099687, 0.5718093941569711, 0.05, +157.79030356613788, 0.5550091233835309, 0.05, +157.8172265222292, 0.5384591218262526, 0.05, +157.84333449249712, 0.5221594053585227, 0.05, +157.8686399917185, 0.5061099844278824, 0.05, +157.89315553687638, 0.4903109031573712, 0.05, +157.91689364336122, 0.4747621296965775, 0.05, +157.9398668302545, 0.459463737865137, 0.05, +157.96208761459724, 0.44441568685509125, 0.05, +157.98356851648632, 0.42961803778166957, 0.05, +158.00432205457398, 0.4150707617529963, 0.05, +158.02436075104686, 0.4007739294573375, 0.05, +158.0436971257615, 0.3867274942928964, 0.05, +158.0623437008568, 0.3729315019059113, 0.05, +158.08031299895774, 0.35938596201926465, 0.05, +158.09761754306336, 0.34609088211274625, 0.05, +158.1142698564906, 0.3330462685448864, 0.05, +158.1302824649644, 0.32025216947593255, 0.05, +158.14566789170152, 0.30770853474249193, 0.05, +158.16043866269558, 0.29541541988100534, 0.05, +158.17460730394438, 0.283372824976159, 0.05, +158.18818634119987, 0.27158074510974195, 0.05, +158.20118830244687, 0.26003922493978504, 0.05, +158.21362571398925, 0.24874823084766992, 0.05, +158.22551110365754, 0.23770779336605216, 0.05, +158.23685700027653, 0.22691793238008975, 0.05, +158.24767593170017, 0.21637862847258044, 0.05, +158.25798042734044, 0.20608991280543323, 0.05, +158.2677830158851, 0.19605177089298945, 0.05, +158.27709622772073, 0.18626423671280332, 0.05, +158.28593259303466, 0.17672730627875702, 0.05, +158.29430464106886, 0.16744096068396291, 0.05, +158.30222490344633, 0.15840524754924146, 0.05, +158.30970591000843, 0.14962013124215973, 0.05, +158.31676019312363, 0.14108566230406314, 0.05, +158.32340028411318, 0.132801819791087, 0.05, +158.32963871375003, 0.12476859273698947, 0.05, +158.33548801408446, 0.11698600668875087, 0.05, +158.34096071793132, 0.1094540769369918, 0.05, +158.3460693573415, 0.10217278820339898, 0.05, +158.35082646435617, 0.09514214029343969, 0.05, +158.35524457236443, 0.08836216016510229, 0.05, +158.35933621339865, 0.08183282068442677, 0.05, +158.36311392114587, 0.07555415494436629, 0.05, +158.36659022795678, 0.0695261362180786, 0.05, +158.36977766807766, 0.06374880241764591, 0.05, +158.3726887739951, 0.05822211834879498, 0.05, +158.37533608013345, 0.0529461227670181, 0.05, +158.37773211917295, 0.04792078078966447, 0.05, +158.37988942484913, 0.04314611352368738, 0.05, +158.38182053152542, 0.03862213352610901, 0.05, +158.3835379722399, 0.03434881428965432, 0.05, +158.3850542816484, 0.03032618816950158, 0.05, +158.3863819935112, 0.02655423725626589, 0.05, +158.3875336408725, 0.02303294722602248, 0.05, +158.3885217595247, 0.019762373044313164, 0.05, +158.38935888220087, 0.016742453523025287, 0.05, +158.39005754323387, 0.013973220660207248, 0.05, +158.39063027654993, 0.011454666321105962, 0.05, +158.3910896176726, 0.009186822453509741, 0.05, +158.3914480987667, 0.007169621881763663, 0.05, +158.39171825592268, 0.005403143120165395, 0.05, +158.39191262198196, 0.003887321185375532, 0.05, +158.39204373147106, 0.002622189782204382, 0.05, +158.39212411876687, 0.0016077459164547993, 0.05, +158.392166318149, 8.439876428297127E-4, 0.05, +158.3921828638411, 3.309138417764795E-4, 0.05, +158.3921862900402, 6.852398200665535E-5, 0.05, +158.3921862900402, 0.0, 0.05, diff --git a/src/main/resources/map.cfg b/src/main/resources/map.cfg index a8957012..85b45018 100644 --- a/src/main/resources/map.cfg +++ b/src/main/resources/map.cfg @@ -1,19 +1,10 @@ -oi { - oi {} +tank_oi { left_stick: 1 right_stick: 2 - joystick_deadband: 0.05 - button_pad: 0 - toggle_flywheel: 1 - climb_button: 6 - turnaround_button: 1 - turn_to_0_button: 3 - turn_to_30_button: 5 - turn_to_180_button: 2 - turn_to_330_button: 4 } drive { drive {} + l2r: 1 turn_PID { PID { p: 0.01 @@ -49,20 +40,20 @@ drive { deadband_enabled: false } right_master { - port: 5 + port: 2 feedback_device: QuadEncoder reverse_sensor: false - reverse_output: false - is_inverted: false + reverse_output: true + is_inverted: true nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 - kP0: 0.0005 + kP0: 0.0003 kI0: 0.1 kD0: 3.0 - kP1: 0.8 - kI1: 0.0 - kD1: 0.0 + kP1: 0.07 + kI1: 0.000008 + kD1: 0 max_speed: 12.0127 fwd_lim_norm_open: true rev_lim_norm_open: true @@ -76,20 +67,20 @@ drive { encoder_CPR: 512 } left_master{ - port: 6 + port: 7 feedback_device: QuadEncoder - reverse_sensor: false + reverse_sensor: true reverse_output: false is_inverted: true nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 - kP0: 0.0005 + kP0: 0.0003 kI0: 0.1 kD0: 3.0 - kP1: 0.8 - kI1: 0.0 - kD1: 0.0 + kP1: 0.07 + kI1: 0.000008 + kD1: 0 max_speed: 12.0127 fwd_lim_norm_open: true rev_lim_norm_open: true @@ -106,17 +97,17 @@ drive { port: 1 feedback_device: QuadEncoder reverse_sensor: false - reverse_output: false - is_inverted: false + reverse_output: true + is_inverted: true nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 kP0: 0.3 kI0: 0.00 kD0: 3.0 - kP1: 0.2 - kI1: 0.00 - kD1: 3.0 + kP1: 0 + kI1: 0 + kD1: 0 max_speed: 13.5 fwd_lim_norm_open: true rev_lim_norm_open: true @@ -130,20 +121,20 @@ drive { encoder_CPR: 512 } right_slave{ - port: 4 + port: 3 feedback_device: QuadEncoder reverse_sensor: false - reverse_output: false - is_inverted: false + reverse_output: true + is_inverted: true nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 kP0: 0.3 kI0: 0.00 kD0: 3.0 - kP1: 0.3 - kI1: 0.00 - kD1: 3.0 + kP1: 0 + kI1: 0 + kD1: 0 max_speed: 13.5 fwd_lim_norm_open: true rev_lim_norm_open: true @@ -157,10 +148,10 @@ drive { encoder_CPR: 512 } left_slave{ - port: 2 + port: 8 feedback_device: QuadEncoder reverse_sensor: false - reverse_output: false + reverse_output: true is_inverted: false nominal_out_voltage: 0.0 peak_out_voltage: 12.0 @@ -184,10 +175,10 @@ drive { encoder_CPR: 512 } left_slave{ - port: 3 + port: 6 feedback_device: QuadEncoder reverse_sensor: false - reverse_output: false + reverse_output: true is_inverted: false nominal_out_voltage: 0.0 peak_out_voltage: 12.0 @@ -214,7 +205,7 @@ drive { climber{ mechanism{} winch { - port: 3 + port: 5 feedback_device: QuadEncoder reverse_sensor: false reverse_output: false diff --git a/src/main/resources/rightProfile.csv b/src/main/resources/rightProfile.csv index fa391a2b..d349ebc7 100644 --- a/src/main/resources/rightProfile.csv +++ b/src/main/resources/rightProfile.csv @@ -1,1196 +1,1147 @@ -1195 -0.0025, 0.09999999999999999, 0.05, -0.010000000000000002, 0.15000000000000002, 0.05, -0.0225, 0.24999999999999994, 0.05, -0.03999999999999996, 0.3499999999999992, 0.05, -0.06249999999999989, 0.44999999999999857, 0.05, -0.08999999999999982, 0.5499999999999985, 0.05, -0.12249999999999973, 0.6499999999999984, 0.05, -0.15999999999999967, 0.7499999999999987, 0.05, -0.2024999999999996, 0.8499999999999985, 0.05, -0.24999999999999944, 0.949999999999997, 0.05, -0.30249999999999927, 1.0499999999999965, 0.05, -0.3599999999999991, 1.1499999999999966, 0.05, -0.4225000000000003, 1.2500000000000244, 0.05, -0.49000000000000316, 1.3500000000000567, 0.05, -0.5625000000000061, 1.450000000000059, 0.05, -0.6400000000000093, 1.5500000000000647, 0.05, -0.7225000000000127, 1.650000000000067, 0.05, -0.8075000000000162, 1.7000000000000703, 0.05, -0.8925000000000195, 1.700000000000066, 0.05, -0.9775000000000228, 1.700000000000066, 0.05, -1.0625000000000266, 1.7000000000000748, 0.05, -1.14750000000003, 1.700000000000066, 0.05, -1.2325000000000335, 1.7000000000000703, 0.05, -1.3175000000000368, 1.700000000000066, 0.05, -1.4025000000000403, 1.7000000000000703, 0.05, -1.4875000000000436, 1.700000000000066, 0.05, -1.5725000000000473, 1.7000000000000748, 0.05, -1.6575000000000504, 1.7000000000000615, 0.05, -1.742500000000054, 1.7000000000000703, 0.05, -1.8275000000000574, 1.7000000000000703, 0.05, -1.912500000000061, 1.7000000000000703, 0.05, -1.9975000000000642, 1.700000000000066, 0.05, -2.082500000000068, 1.7000000000000703, 0.05, -2.167500000000071, 1.7000000000000615, 0.05, -2.2525000000000746, 1.7000000000000703, 0.05, -2.3375000000000776, 1.7000000000000615, 0.05, -2.422500000000081, 1.7000000000000703, 0.05, -2.5075000000000847, 1.7000000000000703, 0.05, -2.592500000000088, 1.7000000000000703, 0.05, -2.6775000000000917, 1.7000000000000703, 0.05, -2.762500000000095, 1.7000000000000703, 0.05, -2.8475000000000987, 1.7000000000000703, 0.05, -2.9325000000001022, 1.7000000000000703, 0.05, -3.0175000000001058, 1.7000000000000703, 0.05, -3.102500000000109, 1.7000000000000615, 0.05, -3.187500000000091, 1.699999999999644, 0.05, -3.2725000000000644, 1.6999999999994664, 0.05, -3.357500000000039, 1.699999999999493, 0.05, -3.4425000000000123, 1.6999999999994664, 0.05, -3.527499999999986, 1.6999999999994753, 0.05, -3.6124999999999603, 1.6999999999994841, 0.05, -3.697499999999934, 1.6999999999994753, 0.05, -3.7824999999999083, 1.6999999999994841, 0.05, -3.867499999999882, 1.6999999999994753, 0.05, -3.9524999999998562, 1.6999999999994841, 0.05, -4.03749999999983, 1.6999999999994753, 0.05, -4.122499999999803, 1.6999999999994664, 0.05, -4.207499999999778, 1.699999999999502, 0.05, -4.292499999999752, 1.6999999999994664, 0.05, -4.377499999999726, 1.6999999999994841, 0.05, -4.462499999999699, 1.6999999999994664, 0.05, -4.5474999999996735, 1.6999999999994841, 0.05, -4.632499999999648, 1.6999999999994841, 0.05, -4.717499999999621, 1.6999999999994664, 0.05, -4.802499999999595, 1.6999999999994841, 0.05, -4.8874999999995685, 1.6999999999994664, 0.05, -4.972499999999544, 1.699999999999502, 0.05, -5.057499999999517, 1.6999999999994664, 0.05, -5.142499999999491, 1.6999999999994841, 0.05, -5.2274999999994645, 1.6999999999994664, 0.05, -5.31249999999944, 1.699999999999502, 0.05, -5.397499999999413, 1.6999999999994664, 0.05, -5.482499999999387, 1.6999999999994841, 0.05, -5.56749999999936, 1.6999999999994664, 0.05, -5.652499999999335, 1.6999999999994841, 0.05, -5.737499999999309, 1.6999999999994841, 0.05, -5.822499999999282, 1.6999999999994664, 0.05, -5.907499999999256, 1.6999999999994841, 0.05, -5.9924999999992306, 1.6999999999994841, 0.05, -6.077499999999205, 1.6999999999994841, 0.05, -6.162499999999178, 1.6999999999994664, 0.05, -6.247499999999151, 1.6999999999994664, 0.05, -6.332499999999184, 1.7000000000006565, 0.05, -6.417499999999218, 1.7000000000006743, 0.05, -6.502499999999248, 1.7000000000006033, 0.05, -6.587499999999282, 1.7000000000006743, 0.05, -6.6724999999993155, 1.7000000000006743, 0.05, -6.757499999999349, 1.7000000000006743, 0.05, -6.84249999999938, 1.700000000000621, 0.05, -6.927499999999414, 1.7000000000006743, 0.05, -7.012499999999448, 1.7000000000006743, 0.05, -7.09749999999948, 1.7000000000006388, 0.05, -7.1824999999995125, 1.7000000000006565, 0.05, -7.267499999999546, 1.7000000000006743, 0.05, -7.35249999999958, 1.7000000000006743, 0.05, -7.437499999999612, 1.7000000000006388, 0.05, -7.522499999999644, 1.7000000000006388, 0.05, -7.6074999999996775, 1.7000000000006743, 0.05, -7.69249999999971, 1.7000000000006565, 0.05, -7.777499999999744, 1.7000000000006743, 0.05, -7.862499999999776, 1.7000000000006388, 0.05, -7.94749999999981, 1.7000000000006743, 0.05, -8.032499999999843, 1.7000000000006388, 0.05, -8.117499999999877, 1.700000000000692, 0.05, -8.20249999999991, 1.7000000000006565, 0.05, -8.287499999999945, 1.700000000000692, 0.05, -8.37249999999998, 1.700000000000692, 0.05, -8.457500000000012, 1.7000000000006565, 0.05, -8.542500000000047, 1.700000000000692, 0.05, -8.62750000000008, 1.7000000000006565, 0.05, -8.712500000000114, 1.700000000000692, 0.05, -8.797500000000149, 1.700000000000692, 0.05, -8.882500000000181, 1.7000000000006565, 0.05, -8.967500000000214, 1.7000000000006565, 0.05, -9.052500000000249, 1.700000000000692, 0.05, -9.137500000000284, 1.700000000000692, 0.05, -9.222500000000315, 1.700000000000621, 0.05, -9.307500000000351, 1.7000000000007276, 0.05, -9.392500000000384, 1.7000000000006565, 0.05, -9.477500000000417, 1.7000000000006565, 0.05, -9.562500000000451, 1.700000000000692, 0.05, -9.647500000000486, 1.700000000000692, 0.05, -9.73250000000052, 1.700000000000692, 0.05, -9.817500000000553, 1.7000000000006565, 0.05, -9.902500000000586, 1.7000000000006565, 0.05, -9.98750000000062, 1.700000000000692, 0.05, -10.072500000000655, 1.700000000000692, 0.05, -10.157500000000686, 1.700000000000621, 0.05, -10.242500000000723, 1.7000000000007276, 0.05, -10.327500000000756, 1.7000000000006565, 0.05, -10.41250000000079, 1.700000000000692, 0.05, -10.497500000000823, 1.7000000000006565, 0.05, -10.582500000000858, 1.700000000000692, 0.05, -10.667500000000892, 1.700000000000692, 0.05, -10.752500000000925, 1.7000000000006565, 0.05, -10.837500000000958, 1.7000000000006565, 0.05, -10.922500000000992, 1.700000000000692, 0.05, -11.007500000001027, 1.700000000000692, 0.05, -11.09250000000106, 1.7000000000006565, 0.05, -11.177500000001094, 1.700000000000692, 0.05, -11.262500000001127, 1.7000000000006565, 0.05, -11.347500000001162, 1.700000000000692, 0.05, -11.432500000001196, 1.700000000000692, 0.05, -11.517500000001228, 1.700000000000621, 0.05, -11.602500000001262, 1.700000000000692, 0.05, -11.687500000001297, 1.700000000000692, 0.05, -11.772500000001331, 1.700000000000692, 0.05, -11.857500000001364, 1.7000000000006565, 0.05, -11.942500000001399, 1.700000000000692, 0.05, -12.027500000001432, 1.7000000000006565, 0.05, -12.112500000001466, 1.700000000000692, 0.05, -12.197500000001499, 1.7000000000006565, 0.05, -12.282500000001532, 1.7000000000006565, 0.05, -12.367500000001568, 1.7000000000007276, 0.05, -12.452500000001601, 1.7000000000006565, 0.05, -12.537500000001584, 1.6999999999996618, 0.05, -12.622500000001496, 1.6999999999982407, 0.05, -12.707500000001412, 1.6999999999983118, 0.05, -12.792500000001331, 1.6999999999983828, 0.05, -12.877500000001243, 1.6999999999982407, 0.05, -12.962500000001162, 1.6999999999983828, 0.05, -13.047500000001078, 1.6999999999983118, 0.05, -13.132500000000991, 1.6999999999982762, 0.05, -13.217500000000909, 1.6999999999983473, 0.05, -13.302500000000824, 1.6999999999983118, 0.05, -13.38750000000074, 1.6999999999983118, 0.05, -13.472500000000656, 1.6999999999983118, 0.05, -13.557500000000573, 1.6999999999983473, 0.05, -13.64250000000049, 1.6999999999983473, 0.05, -13.727500000000404, 1.6999999999982762, 0.05, -13.81250000000032, 1.6999999999983118, 0.05, -13.897500000000237, 1.6999999999983473, 0.05, -13.982500000000151, 1.6999999999982762, 0.05, -14.067500000000067, 1.6999999999983118, 0.05, -14.152499999999986, 1.6999999999983828, 0.05, -14.237499999999898, 1.6999999999982407, 0.05, -14.322499999999813, 1.6999999999983118, 0.05, -14.407499999999732, 1.6999999999983828, 0.05, -14.492499999999644, 1.6999999999982407, 0.05, -14.577499999999564, 1.6999999999983828, 0.05, -14.66249999999948, 1.6999999999983118, 0.05, -14.747499999999391, 1.6999999999982407, 0.05, -14.83249999999931, 1.6999999999983828, 0.05, -14.917499999999226, 1.6999999999983118, 0.05, -15.00249999999914, 1.6999999999982762, 0.05, -15.087499999999057, 1.6999999999983473, 0.05, -15.172499999998973, 1.6999999999983118, 0.05, -15.257499999998888, 1.6999999999983118, 0.05, -15.342499999998804, 1.6999999999983118, 0.05, -15.42749999999872, 1.6999999999983118, 0.05, -15.512499999998639, 1.6999999999983828, 0.05, -15.597499999998552, 1.6999999999982762, 0.05, -15.682499999998468, 1.6999999999983118, 0.05, -15.767499999998385, 1.6999999999983473, 0.05, -15.8524999999983, 1.6999999999982762, 0.05, -15.937499999998217, 1.6999999999983473, 0.05, -16.02249999999813, 1.6999999999982407, 0.05, -16.107499999998044, 1.6999999999983118, 0.05, -16.19249999999796, 1.6999999999983118, 0.05, -16.27749999999788, 1.6999999999983828, 0.05, -16.362499999997794, 1.6999999999983118, 0.05, -16.44749999999771, 1.6999999999983118, 0.05, -16.532499999997626, 1.6999999999983118, 0.05, -16.61749999999754, 1.6999999999983118, 0.05, -16.702499999997457, 1.6999999999983118, 0.05, -16.787499999997372, 1.6999999999983118, 0.05, -16.87249999999729, 1.6999999999983828, 0.05, -16.957499999997204, 1.6999999999982407, 0.05, -17.04249999999712, 1.6999999999983118, 0.05, -17.12749999999704, 1.6999999999983828, 0.05, -17.21249999999695, 1.6999999999982407, 0.05, -17.29749999999687, 1.6999999999983828, 0.05, -17.382499999996785, 1.6999999999983118, 0.05, -17.4674999999967, 1.6999999999983118, 0.05, -17.552499999996616, 1.6999999999983118, 0.05, -17.637499999996532, 1.6999999999983118, 0.05, -17.722499999996447, 1.6999999999983118, 0.05, -17.807499999996363, 1.6999999999983118, 0.05, -17.89249999999628, 1.6999999999983118, 0.05, -17.977499999996198, 1.6999999999983828, 0.05, -18.06249999999611, 1.6999999999982407, 0.05, -18.147499999996025, 1.6999999999983118, 0.05, -18.232499999995945, 1.6999999999983828, 0.05, -18.317499999995857, 1.6999999999982407, 0.05, -18.402499999995772, 1.6999999999983118, 0.05, -18.48749999999569, 1.6999999999983828, 0.05, -18.572499999995603, 1.6999999999982407, 0.05, -18.657499999995522, 1.6999999999983828, 0.05, -18.742499999995438, 1.6999999999983118, 0.05, -18.82749999999535, 1.6999999999982407, 0.05, -18.91249999999527, 1.6999999999983828, 0.05, -18.997499999995185, 1.6999999999983118, 0.05, -19.082499999995097, 1.6999999999982407, 0.05, -19.167499999995016, 1.6999999999983828, 0.05, -19.25249999999493, 1.6999999999983118, 0.05, -19.337499999994844, 1.6999999999982407, 0.05, -19.422499999994763, 1.6999999999983828, 0.05, -19.50749999999468, 1.6999999999983118, 0.05, -19.592499999994597, 1.6999999999983828, 0.05, -19.67749999999451, 1.6999999999982407, 0.05, -19.762499999994425, 1.6999999999983118, 0.05, -19.847499999994344, 1.6999999999983828, 0.05, -19.932499999994256, 1.6999999999982407, 0.05, -20.017499999994172, 1.6999999999983118, 0.05, -20.10249999999409, 1.6999999999983828, 0.05, -20.187499999994007, 1.6999999999983118, 0.05, -20.272499999993922, 1.6999999999983118, 0.05, -20.357499999993838, 1.6999999999983118, 0.05, -20.442499999993753, 1.6999999999983118, 0.05, -20.52749999999367, 1.6999999999983118, 0.05, -20.612499999993585, 1.6999999999983118, 0.05, -20.6974999999935, 1.6999999999983118, 0.05, -20.78249999999342, 1.6999999999983828, 0.05, -20.867499999993335, 1.6999999999983118, 0.05, -20.95249999999325, 1.6999999999983118, 0.05, -21.037499999993166, 1.6999999999983118, 0.05, -21.12249999999308, 1.6999999999983118, 0.05, -21.207499999992997, 1.6999999999983118, 0.05, -21.292499999992913, 1.6999999999983118, 0.05, -21.37749999999283, 1.6999999999983118, 0.05, -21.462499999992744, 1.6999999999983118, 0.05, -21.54749999999266, 1.6999999999983118, 0.05, -21.63249999999258, 1.6999999999983828, 0.05, -21.717499999992494, 1.6999999999983118, 0.05, -21.802499999992406, 1.6999999999982407, 0.05, -21.887499999992325, 1.6999999999983828, 0.05, -21.97249999999224, 1.6999999999983118, 0.05, -22.057499999992153, 1.6999999999982407, 0.05, -22.142499999992072, 1.6999999999983828, 0.05, -22.227499999991988, 1.6999999999983118, 0.05, -22.312499999991903, 1.6999999999983118, 0.05, -22.39749999999182, 1.6999999999983118, 0.05, -22.482499999991735, 1.6999999999983118, 0.05, -22.56749999999165, 1.6999999999983118, 0.05, -22.652499999991566, 1.6999999999983118, 0.05, -22.73749999999148, 1.6999999999983118, 0.05, -22.822499999991397, 1.6999999999983118, 0.05, -22.907499999991312, 1.6999999999983118, 0.05, -22.99249999999123, 1.6999999999983828, 0.05, -23.077499999991144, 1.6999999999982407, 0.05, -23.16249999999106, 1.6999999999983118, 0.05, -23.24749999999098, 1.6999999999983828, 0.05, -23.33249999999089, 1.6999999999982407, 0.05, -23.417499999990806, 1.6999999999983118, 0.05, -23.502499999990725, 1.6999999999983828, 0.05, -23.587499999990637, 1.6999999999982407, 0.05, -23.672499999990556, 1.6999999999983828, 0.05, -23.757499999990472, 1.6999999999983118, 0.05, -23.842499999990387, 1.6999999999983118, 0.05, -23.927499999990303, 1.6999999999983118, 0.05, -24.01249999999022, 1.6999999999983118, 0.05, -24.097499999990134, 1.6999999999983118, 0.05, -24.18249999999005, 1.6999999999983118, 0.05, -24.267499999989965, 1.6999999999983118, 0.05, -24.35249999998988, 1.6999999999983118, 0.05, -24.437499999989797, 1.6999999999983118, 0.05, -24.522499999989712, 1.6999999999983118, 0.05, -24.60749999998963, 1.6999999999983828, 0.05, -24.692499999989547, 1.6999999999983118, 0.05, -24.777499999989463, 1.6999999999983118, 0.05, -24.862499999989378, 1.6999999999983118, 0.05, -24.947499999989294, 1.6999999999983118, 0.05, -25.03249999998921, 1.6999999999983118, 0.05, -25.117499999989125, 1.6999999999983118, 0.05, -25.20249999998904, 1.6999999999983118, 0.05, -25.287499999988956, 1.6999999999983118, 0.05, -25.372499999988875, 1.6999999999983828, 0.05, -25.45749999998879, 1.6999999999983118, 0.05, -25.542499999988706, 1.6999999999983118, 0.05, -25.62749999998862, 1.6999999999982407, 0.05, -25.712499999988538, 1.6999999999983828, 0.05, -25.79749999998845, 1.6999999999982407, 0.05, -25.88249999998837, 1.6999999999983828, 0.05, -25.967499999988288, 1.6999999999983828, 0.05, -26.0524999999882, 1.6999999999982407, 0.05, -26.137499999988112, 1.6999999999982407, 0.05, -26.22249999998803, 1.6999999999983828, 0.05, -26.30749999998795, 1.6999999999983828, 0.05, -26.392499999987862, 1.6999999999982407, 0.05, -26.47749999998778, 1.6999999999983828, 0.05, -26.5624999999877, 1.6999999999983828, 0.05, -26.647499999987605, 1.6999999999980986, 0.05, -26.732499999987525, 1.6999999999983828, 0.05, -26.817499999987444, 1.6999999999983828, 0.05, -26.902499999987356, 1.6999999999982407, 0.05, -26.987499999987275, 1.6999999999983828, 0.05, -27.072499999987194, 1.6999999999983828, 0.05, -27.157499999987106, 1.6999999999982407, 0.05, -27.242499999987018, 1.6999999999982407, 0.05, -27.327499999986937, 1.6999999999983828, 0.05, -27.41249999998685, 1.6999999999982407, 0.05, -27.49749999998677, 1.6999999999983828, 0.05, -27.582499999986688, 1.6999999999983828, 0.05, -27.667499999986607, 1.6999999999983828, 0.05, -27.75249999998651, 1.6999999999980986, 0.05, -27.83749999998643, 1.6999999999983828, 0.05, -27.92249999998635, 1.6999999999983828, 0.05, -28.007499999986262, 1.6999999999982407, 0.05, -28.09249999998618, 1.6999999999983828, 0.05, -28.1774999999861, 1.6999999999983828, 0.05, -28.26249999998601, 1.6999999999981696, 0.05, -28.347499999985924, 1.6999999999983118, 0.05, -28.432499999985843, 1.6999999999983828, 0.05, -28.517499999985755, 1.6999999999982407, 0.05, -28.602499999985675, 1.6999999999983828, 0.05, -28.687499999985594, 1.6999999999983828, 0.05, -28.772499999985502, 1.6999999999981696, 0.05, -28.85749999998542, 1.6999999999983828, 0.05, -28.942499999985337, 1.6999999999983118, 0.05, -29.027499999985253, 1.6999999999983118, 0.05, -29.11249999998517, 1.6999999999983828, 0.05, -29.197499999985087, 1.6999999999983118, 0.05, -29.282499999985006, 1.6999999999983828, 0.05, -29.367499999984915, 1.6999999999981696, 0.05, -29.452499999984834, 1.6999999999983828, 0.05, -29.53749999998475, 1.6999999999983118, 0.05, -29.622499999984665, 1.6999999999983118, 0.05, -29.70749999998458, 1.6999999999983118, 0.05, -29.7924999999845, 1.6999999999983828, 0.05, -29.87749999998441, 1.6999999999981696, 0.05, -29.962499999984328, 1.6999999999983828, 0.05, -30.047499999984247, 1.6999999999983828, 0.05, -30.13249999998416, 1.6999999999982407, 0.05, -30.217499999984078, 1.6999999999983828, 0.05, -30.302499999983997, 1.6999999999983828, 0.05, -30.387499999983902, 1.6999999999980986, 0.05, -30.47249999998382, 1.6999999999983828, 0.05, -30.55749999998374, 1.6999999999983828, 0.05, -30.64249999998366, 1.6999999999983828, 0.05, -30.72749999998357, 1.6999999999982407, 0.05, -30.81249999998349, 1.6999999999983828, 0.05, -30.897499999983403, 1.6999999999982407, 0.05, -30.982499999983315, 1.6999999999982407, 0.05, -31.067499999983234, 1.6999999999983828, 0.05, -31.152499999983153, 1.6999999999983828, 0.05, -31.237499999983065, 1.6999999999982407, 0.05, -31.322499999982984, 1.6999999999983828, 0.05, -31.407499999982903, 1.6999999999983828, 0.05, -31.492499999982808, 1.6999999999980986, 0.05, -31.577499999982727, 1.6999999999983828, 0.05, -31.662499999982646, 1.6999999999983828, 0.05, -31.74749999998256, 1.6999999999982407, 0.05, -31.832499999982478, 1.6999999999983828, 0.05, -31.917499999982397, 1.6999999999983828, 0.05, -32.002499999982305, 1.6999999999982407, 0.05, -32.08749999998222, 1.6999999999983118, 0.05, -32.17249999998213, 1.6999999999981696, 0.05, -32.25749999998205, 1.6999999999984539, 0.05, -32.34249999998196, 1.6999999999981696, 0.05, -32.42749999998188, 1.6999999999984539, 0.05, -32.5124999999818, 1.6999999999983118, 0.05, -32.597499999981714, 1.6999999999983118, 0.05, -32.68249999998162, 1.6999999999981696, 0.05, -32.767499999981545, 1.6999999999984539, 0.05, -32.852499999981454, 1.6999999999981696, 0.05, -32.93749999998138, 1.6999999999984539, 0.05, -33.02249999998129, 1.6999999999983118, 0.05, -33.10749999998121, 1.6999999999983118, 0.05, -33.19249999998112, 1.6999999999983118, 0.05, -33.27749999998104, 1.6999999999983118, 0.05, -33.362499999980955, 1.6999999999983118, 0.05, -33.44749999998087, 1.6999999999983118, 0.05, -33.532499999980786, 1.6999999999983118, 0.05, -33.61749999998071, 1.6999999999984539, 0.05, -33.70249999998062, 1.6999999999981696, 0.05, -33.78749999998053, 1.6999999999983118, 0.05, -33.87249999998045, 1.6999999999983118, 0.05, -33.957499999980364, 1.6999999999983118, 0.05, -34.04249999998028, 1.6999999999983118, 0.05, -34.1274999999802, 1.6999999999984539, 0.05, -34.21249999998011, 1.6999999999981696, 0.05, -34.297499999980026, 1.6999999999983118, 0.05, -34.38249999997995, 1.6999999999984539, 0.05, -34.46749999997986, 1.6999999999981696, 0.05, -34.55249999997978, 1.6999999999984539, 0.05, -34.637499999979696, 1.6999999999983118, 0.05, -34.72249999997961, 1.6999999999983118, 0.05, -34.80749999997952, 1.6999999999981696, 0.05, -34.89249999997944, 1.6999999999984539, 0.05, -34.97749999997936, 1.6999999999983118, 0.05, -35.06249999997927, 1.6999999999983118, 0.05, -35.14749999997919, 1.6999999999983118, 0.05, -35.232499999979105, 1.6999999999983118, 0.05, -35.31749999997902, 1.6999999999983118, 0.05, -35.402499999978936, 1.6999999999983118, 0.05, -35.48749999997885, 1.6999999999983118, 0.05, -35.57249999997877, 1.6999999999983118, 0.05, -35.65749999997868, 1.6999999999983118, 0.05, -35.742499999978605, 1.6999999999984539, 0.05, -35.827499999978514, 1.6999999999981696, 0.05, -35.91249999997843, 1.6999999999983118, 0.05, -35.997499999978345, 1.6999999999983118, 0.05, -36.08249999997826, 1.6999999999983118, 0.05, -36.167499999978176, 1.6999999999983118, 0.05, -36.2524999999781, 1.6999999999984539, 0.05, -36.337499999978014, 1.6999999999983118, 0.05, -36.42249999997792, 1.6999999999981696, 0.05, -36.50749999997784, 1.6999999999983118, 0.05, -36.59249999997776, 1.6999999999984539, 0.05, -36.67749999997767, 1.6999999999981696, 0.05, -36.76249999997759, 1.6999999999984539, 0.05, -36.84749999997751, 1.6999999999983118, 0.05, -36.932499999977416, 1.6999999999981696, 0.05, -37.01749999997733, 1.6999999999983118, 0.05, -37.102499999977255, 1.6999999999984539, 0.05, -37.18749999997716, 1.6999999999981696, 0.05, -37.272499999977086, 1.6999999999984539, 0.05, -37.357499999977, 1.6999999999983118, 0.05, -37.44249999997692, 1.6999999999983118, 0.05, -37.527499999976826, 1.6999999999981696, 0.05, -37.61249999997675, 1.6999999999984539, 0.05, -37.697499999976664, 1.6999999999983118, 0.05, -37.78249999997658, 1.6999999999983118, 0.05, -37.867499999976495, 1.6999999999983118, 0.05, -37.95249999997642, 1.6999999999984539, 0.05, -38.037499999976326, 1.6999999999981696, 0.05, -38.12249999997624, 1.6999999999983118, 0.05, -38.20749999997616, 1.6999999999983118, 0.05, -38.29249999997607, 1.6999999999983118, 0.05, -38.37749999997599, 1.6999999999983118, 0.05, -38.46249999997591, 1.6999999999984539, 0.05, -38.54749999997582, 1.6999999999981696, 0.05, -38.632499999975735, 1.6999999999983118, 0.05, -38.71749999997565, 1.6999999999983118, 0.05, -38.802499999975566, 1.6999999999983118, 0.05, -38.88749999997548, 1.6999999999983118, 0.05, -38.972499999975405, 1.6999999999984539, 0.05, -39.05749999997531, 1.6999999999981696, 0.05, -39.14249999997523, 1.6999999999983118, 0.05, -39.22749999997515, 1.6999999999984539, 0.05, -39.31249999997507, 1.6999999999983118, 0.05, -39.39749999997498, 1.6999999999983118, 0.05, -39.4824999999749, 1.6999999999983118, 0.05, -39.567499999974814, 1.6999999999983118, 0.05, -39.65249999997472, 1.6999999999981696, 0.05, -39.737499999974645, 1.6999999999984539, 0.05, -39.82249999997456, 1.6999999999983118, 0.05, -39.907499999974476, 1.6999999999983118, 0.05, -39.99249999997439, 1.6999999999983118, 0.05, -40.077499999974314, 1.6999999999984539, 0.05, -40.162499999974216, 1.6999999999980275, 0.05, -40.24749999997414, 1.6999999999984539, 0.05, -40.332499999974054, 1.6999999999983118, 0.05, -40.41749999997397, 1.6999999999983118, 0.05, -40.502499999973885, 1.6999999999983118, 0.05, -40.58749999997381, 1.6999999999984539, 0.05, -40.67249999997372, 1.6999999999981696, 0.05, -40.75749999997363, 1.6999999999983118, 0.05, -40.84249999997355, 1.6999999999983118, 0.05, -40.92749999997347, 1.6999999999984539, 0.05, -41.01249999997338, 1.6999999999981696, 0.05, -41.0974999999733, 1.6999999999984539, 0.05, -41.18249999997321, 1.6999999999981696, 0.05, -41.267499999973126, 1.6999999999983118, 0.05, -41.35249999997304, 1.6999999999983118, 0.05, -41.437499999972964, 1.6999999999984539, 0.05, -41.52249999997287, 1.6999999999981696, 0.05, -41.607499999972795, 1.6999999999984539, 0.05, -41.69249999997271, 1.6999999999983118, 0.05, -41.77749999997262, 1.6999999999981696, 0.05, -41.862499999972535, 1.6999999999983118, 0.05, -41.94749999997246, 1.6999999999984539, 0.05, -42.03249999997237, 1.6999999999983118, 0.05, -42.11749999997229, 1.6999999999983118, 0.05, -42.202499999972204, 1.6999999999983118, 0.05, -42.28749999997212, 1.6999999999983118, 0.05, -42.372499999972035, 1.6999999999983118, 0.05, -42.45749999997195, 1.6999999999983118, 0.05, -42.54249999997187, 1.6999999999983118, 0.05, -42.62749999997178, 1.6999999999983118, 0.05, -42.7124999999717, 1.6999999999983118, 0.05, -42.79749999997161, 1.6999999999983118, 0.05, -42.88249999997153, 1.6999999999983118, 0.05, -42.967499999971444, 1.6999999999983118, 0.05, -43.05249999997136, 1.6999999999983118, 0.05, -43.137499999971276, 1.6999999999983118, 0.05, -43.22249999997119, 1.6999999999983118, 0.05, -43.30749999997111, 1.6999999999983118, 0.05, -43.39249999997102, 1.6999999999983118, 0.05, -43.47749999997094, 1.6999999999983118, 0.05, -43.56249999997086, 1.6999999999984539, 0.05, -43.647499999970776, 1.6999999999983118, 0.05, -43.73249999997069, 1.6999999999983118, 0.05, -43.81749999997061, 1.6999999999983118, 0.05, -43.90249999997052, 1.6999999999983118, 0.05, -43.98749999997043, 1.6999999999981696, 0.05, -44.072499999970354, 1.6999999999984539, 0.05, -44.15749999997027, 1.6999999999983118, 0.05, -44.242499999970185, 1.6999999999983118, 0.05, -44.3274999999701, 1.6999999999983118, 0.05, -44.41249999997002, 1.6999999999983118, 0.05, -44.497499999969925, 1.6999999999981696, 0.05, -44.58249999996985, 1.6999999999984539, 0.05, -44.66749999996976, 1.6999999999983118, 0.05, -44.75249999996968, 1.6999999999983118, 0.05, -44.837499999969594, 1.6999999999983118, 0.05, -44.92249999996951, 1.6999999999983118, 0.05, -45.007499999969426, 1.6999999999983118, 0.05, -45.09249999996934, 1.6999999999983118, 0.05, -45.17749999996926, 1.6999999999983118, 0.05, -45.26249999996918, 1.6999999999984539, 0.05, -45.34749999996909, 1.6999999999981696, 0.05, -45.432499999969004, 1.6999999999983118, 0.05, -45.51749999996892, 1.6999999999983118, 0.05, -45.602499999968835, 1.6999999999983118, 0.05, -45.68749999996875, 1.6999999999983118, 0.05, -45.77249999996867, 1.6999999999984539, 0.05, -45.85749999996858, 1.6999999999981696, 0.05, -45.942499999968504, 1.6999999999984539, 0.05, -46.02749999996841, 1.6999999999981696, 0.05, -46.11249999996833, 1.6999999999983118, 0.05, -46.197499999968244, 1.6999999999983118, 0.05, -46.28249999996817, 1.6999999999984539, 0.05, -46.36749999996808, 1.6999999999983118, 0.05, -46.452499999968, 1.6999999999983118, 0.05, -46.537499999967906, 1.6999999999981696, 0.05, -46.62249999996783, 1.6999999999984539, 0.05, -46.707499999967744, 1.6999999999983118, 0.05, -46.79249999996766, 1.6999999999983118, 0.05, -46.877499999967576, 1.6999999999983118, 0.05, -46.96249999996749, 1.6999999999983118, 0.05, -47.04749999996741, 1.6999999999983118, 0.05, -47.13249999996732, 1.6999999999983118, 0.05, -47.21749999996724, 1.6999999999983118, 0.05, -47.302499999967154, 1.6999999999983118, 0.05, -47.38749999996707, 1.6999999999983118, 0.05, -47.472499999966985, 1.6999999999983118, 0.05, -47.5574999999669, 1.6999999999983118, 0.05, -47.642499999966816, 1.6999999999983118, 0.05, -47.72749999996673, 1.6999999999983118, 0.05, -47.81249999996665, 1.6999999999983118, 0.05, -47.89749999996656, 1.6999999999983118, 0.05, -47.982499999966485, 1.6999999999984539, 0.05, -48.0674999999664, 1.6999999999983118, 0.05, -48.15249999996631, 1.6999999999981696, 0.05, -48.23749999996623, 1.6999999999984539, 0.05, -48.32249999996614, 1.6999999999981696, 0.05, -48.40749999996606, 1.6999999999984539, 0.05, -48.49249999996598, 1.6999999999983118, 0.05, -48.577499999965895, 1.6999999999983118, 0.05, -48.6624999999658, 1.6999999999981696, 0.05, -48.747499999965726, 1.6999999999984539, 0.05, -48.832499999965634, 1.6999999999981696, 0.05, -48.91749999996556, 1.6999999999984539, 0.05, -49.00249999996547, 1.6999999999983118, 0.05, -49.08749999996539, 1.6999999999983118, 0.05, -49.1724999999653, 1.6999999999981696, 0.05, -49.25749999996522, 1.6999999999984539, 0.05, -49.342499999965135, 1.6999999999983118, 0.05, -49.42749999996505, 1.6999999999983118, 0.05, -49.512499999964966, 1.6999999999983118, 0.05, -49.59749999996489, 1.6999999999984539, 0.05, -49.68249999996479, 1.6999999999980275, 0.05, -49.76749999996471, 1.6999999999984539, 0.05, -49.85249999996463, 1.6999999999983118, 0.05, -49.937499999964544, 1.6999999999983118, 0.05, -50.02249999996459, 1.7000000000008697, 0.05, -50.10749999996498, 1.700000000007833, 0.05, -50.19249999996537, 1.700000000007833, 0.05, -50.27749999996576, 1.700000000007833, 0.05, -50.36249999996614, 1.7000000000075488, 0.05, -50.44749999996653, 1.700000000007833, 0.05, -50.53249999996691, 1.7000000000075488, 0.05, -50.6174999999673, 1.700000000007833, 0.05, -50.70249999996769, 1.700000000007833, 0.05, -50.78749999996808, 1.700000000007691, 0.05, -50.87249999996846, 1.700000000007691, 0.05, -50.95749999996885, 1.700000000007833, 0.05, -51.04249999996924, 1.700000000007691, 0.05, -51.12749999996963, 1.700000000007833, 0.05, -51.21249999997002, 1.700000000007833, 0.05, -51.29749999997041, 1.700000000007833, 0.05, -51.382499999970804, 1.700000000007833, 0.05, -51.46749999997118, 1.7000000000075488, 0.05, -51.55249999997156, 1.7000000000075488, 0.05, -51.63749999997195, 1.700000000007833, 0.05, -51.72249999997234, 1.700000000007833, 0.05, -51.80749999997273, 1.700000000007691, 0.05, -51.89249999997312, 1.700000000007833, 0.05, -51.9774999999735, 1.700000000007691, 0.05, -52.06249999997389, 1.700000000007691, 0.05, -52.14749999997428, 1.700000000007833, 0.05, -52.23249999997467, 1.700000000007833, 0.05, -52.31749999997506, 1.700000000007833, 0.05, -52.402499999975454, 1.700000000007833, 0.05, -52.48749999997583, 1.7000000000075488, 0.05, -52.57249999997622, 1.700000000007833, 0.05, -52.6574999999766, 1.7000000000075488, 0.05, -52.74249999997699, 1.700000000007833, 0.05, -52.827499999977384, 1.700000000007833, 0.05, -52.91249999997777, 1.700000000007691, 0.05, -52.99749999997816, 1.700000000007833, 0.05, -53.08249999997854, 1.7000000000075488, 0.05, -53.16749999997893, 1.700000000007833, 0.05, -53.25249999997932, 1.700000000007833, 0.05, -53.33749999997971, 1.700000000007833, 0.05, -53.422499999980104, 1.700000000007833, 0.05, -53.50749999998049, 1.700000000007691, 0.05, -53.59249999998087, 1.700000000007691, 0.05, -53.67749999998125, 1.7000000000075488, 0.05, -53.76249999998164, 1.700000000007833, 0.05, -53.847499999982034, 1.700000000007833, 0.05, -53.93249999998242, 1.700000000007691, 0.05, -54.01749999998281, 1.700000000007833, 0.05, -54.10249999998319, 1.7000000000075488, 0.05, -54.18749999998358, 1.700000000007833, 0.05, -54.27249999998397, 1.700000000007833, 0.05, -54.35749999998436, 1.700000000007833, 0.05, -54.442499999984754, 1.700000000007833, 0.05, -54.527499999985146, 1.700000000007833, 0.05, -54.61249999998553, 1.700000000007691, 0.05, -54.697499999985915, 1.700000000007691, 0.05, -54.78249999998629, 1.7000000000075488, 0.05, -54.867499999986684, 1.700000000007833, 0.05, -54.952499999987076, 1.700000000007833, 0.05, -55.03749999998746, 1.700000000007691, 0.05, -55.12249999998785, 1.700000000007833, 0.05, -55.20749999998823, 1.7000000000075488, 0.05, -55.29249999998862, 1.700000000007833, 0.05, -55.37749999998901, 1.700000000007833, 0.05, -55.462499999989404, 1.700000000007833, 0.05, -55.547499999989796, 1.700000000007833, 0.05, -55.63249999999018, 1.700000000007691, 0.05, -55.71749999999057, 1.700000000007833, 0.05, -55.80249999999094, 1.7000000000074067, 0.05, -55.887499999991334, 1.700000000007833, 0.05, -55.972499999991726, 1.700000000007833, 0.05, -56.05749999999211, 1.700000000007691, 0.05, -56.1424999999925, 1.700000000007833, 0.05, -56.227499999992894, 1.700000000007833, 0.05, -56.31249999999327, 1.7000000000075488, 0.05, -56.39749999999366, 1.700000000007833, 0.05, -56.482499999994054, 1.700000000007833, 0.05, -56.567499999994446, 1.700000000007833, 0.05, -56.65249999999484, 1.700000000007833, 0.05, -56.73749999999522, 1.700000000007691, 0.05, -56.82249999999561, 1.700000000007691, 0.05, -56.907499999995984, 1.7000000000075488, 0.05, -56.992499999996376, 1.700000000007833, 0.05, -57.07749999999676, 1.700000000007691, 0.05, -57.16249999999715, 1.700000000007833, 0.05, -57.247499999997544, 1.700000000007833, 0.05, -57.332499999997935, 1.700000000007833, 0.05, -57.41749999999831, 1.7000000000075488, 0.05, -57.502499999998705, 1.700000000007833, 0.05, -57.587499999999096, 1.700000000007833, 0.05, -57.67249999999949, 1.700000000007833, 0.05, -57.75749999999987, 1.700000000007691, 0.05, -57.842500000000264, 1.700000000007833, 0.05, -57.927500000000634, 1.7000000000074067, 0.05, -58.012500000001026, 1.700000000007833, 0.05, -58.09750000000141, 1.700000000007691, 0.05, -58.1825000000018, 1.700000000007833, 0.05, -58.267500000002194, 1.700000000007833, 0.05, -58.352500000002586, 1.700000000007833, 0.05, -58.43750000000296, 1.7000000000075488, 0.05, -58.522500000003355, 1.700000000007833, 0.05, -58.607500000003746, 1.700000000007833, 0.05, -58.69250000000414, 1.700000000007833, 0.05, -58.77750000000452, 1.700000000007691, 0.05, -58.862500000004914, 1.700000000007833, 0.05, -58.947500000005306, 1.700000000007833, 0.05, -59.032500000005676, 1.7000000000074067, 0.05, -59.11750000000607, 1.700000000007833, 0.05, -59.20250000000645, 1.700000000007691, 0.05, -59.287500000006844, 1.700000000007833, 0.05, -59.372500000007236, 1.700000000007833, 0.05, -59.45750000000763, 1.700000000007833, 0.05, -59.542500000008005, 1.7000000000075488, 0.05, -59.627500000008396, 1.700000000007833, 0.05, -59.71250000000879, 1.700000000007833, 0.05, -59.79750000000917, 1.700000000007691, 0.05, -59.882500000009564, 1.700000000007833, 0.05, -59.967500000009956, 1.700000000007833, 0.05, -60.05250000001033, 1.7000000000075488, 0.05, -60.13750000001072, 1.700000000007691, 0.05, -60.2225000000111, 1.700000000007691, 0.05, -60.307500000011494, 1.700000000007833, 0.05, -60.392500000011886, 1.700000000007833, 0.05, -60.47750000001228, 1.700000000007833, 0.05, -60.56250000001267, 1.700000000007833, 0.05, -60.647500000013046, 1.7000000000075488, 0.05, -60.73250000001344, 1.700000000007833, 0.05, -60.81750000001383, 1.700000000007833, 0.05, -60.902500000014214, 1.700000000007691, 0.05, -60.987500000014606, 1.700000000007833, 0.05, -61.072500000015, 1.700000000007833, 0.05, -61.15750000001537, 1.7000000000074067, 0.05, -61.24250000001576, 1.700000000007833, 0.05, -61.327500000016144, 1.700000000007691, 0.05, -61.412500000016536, 1.700000000007833, 0.05, -61.49750000001693, 1.700000000007833, 0.05, -61.58250000001732, 1.700000000007833, 0.05, -61.66750000001771, 1.700000000007833, 0.05, -61.75250000001809, 1.7000000000075488, 0.05, -61.83750000001848, 1.700000000007833, 0.05, -61.922500000018864, 1.700000000007691, 0.05, -62.007500000019256, 1.700000000007833, 0.05, -62.09250000001965, 1.700000000007833, 0.05, -62.177500000020025, 1.7000000000075488, 0.05, -62.26250000002041, 1.700000000007691, 0.05, -62.347500000020794, 1.700000000007691, 0.05, -62.432500000021186, 1.700000000007833, 0.05, -62.51750000002158, 1.700000000007833, 0.05, -62.60250000002197, 1.700000000007833, 0.05, -62.68750000002236, 1.700000000007833, 0.05, -62.77250000002274, 1.7000000000075488, 0.05, -62.85750000002313, 1.700000000007833, 0.05, -62.94250000002352, 1.700000000007833, 0.05, -63.027500000023906, 1.700000000007691, 0.05, -63.1125000000243, 1.700000000007833, 0.05, -63.19750000002469, 1.700000000007833, 0.05, -63.28250000002507, 1.7000000000075488, 0.05, -63.367500000025444, 1.7000000000075488, 0.05, -63.452500000025836, 1.700000000007833, 0.05, -63.53750000002623, 1.700000000007833, 0.05, -63.62250000002662, 1.700000000007833, 0.05, -63.70750000002701, 1.700000000007833, 0.05, -63.792500000027395, 1.700000000007691, 0.05, -63.87750000002778, 1.700000000007691, 0.05, -63.96250000002817, 1.700000000007833, 0.05, -64.04750000002855, 1.700000000007691, 0.05, -64.13250000002893, 1.7000000000075488, 0.05, -64.2175000000293, 1.7000000000075488, 0.05, -64.3025000000297, 1.700000000007833, 0.05, -64.38750000003007, 1.7000000000075488, 0.05, -64.47250000003045, 1.7000000000075488, 0.05, -64.55750000003083, 1.7000000000075488, 0.05, -64.64250000003122, 1.700000000007833, 0.05, -64.7275000000316, 1.7000000000075488, 0.05, -64.81250000003197, 1.7000000000075488, 0.05, -64.89750000003237, 1.700000000007833, 0.05, -64.98250000003273, 1.7000000000072646, 0.05, -65.0675000000331, 1.7000000000075488, 0.05, -65.1525000000335, 1.700000000007833, 0.05, -65.23750000003388, 1.7000000000075488, 0.05, -65.32250000003427, 1.700000000007833, 0.05, -65.40750000003464, 1.7000000000075488, 0.05, -65.49250000003501, 1.7000000000072646, 0.05, -65.5775000000354, 1.700000000007833, 0.05, -65.66250000003578, 1.7000000000075488, 0.05, -65.74750000003615, 1.7000000000075488, 0.05, -65.83250000003655, 1.700000000007833, 0.05, -65.91750000003692, 1.7000000000075488, 0.05, -66.0025000000373, 1.7000000000075488, 0.05, -66.08750000003768, 1.7000000000075488, 0.05, -66.17250000003807, 1.700000000007833, 0.05, -66.25750000003845, 1.7000000000075488, 0.05, -66.34250000003883, 1.7000000000075488, 0.05, -66.42750000003922, 1.700000000007833, 0.05, -66.5125000000396, 1.7000000000075488, 0.05, -66.59750000003996, 1.7000000000072646, 0.05, -66.68250000004033, 1.7000000000075488, 0.05, -66.76750000004073, 1.700000000007833, 0.05, -66.8525000000411, 1.7000000000075488, 0.05, -66.9375000000415, 1.700000000007833, 0.05, -67.02250000004187, 1.7000000000075488, 0.05, -67.10750000004226, 1.700000000007833, 0.05, -67.19250000004263, 1.7000000000072646, 0.05, -67.277500000043, 1.7000000000075488, 0.05, -67.3625000000434, 1.700000000007833, 0.05, -67.44750000004377, 1.7000000000075488, 0.05, -67.53250000004415, 1.7000000000075488, 0.05, -67.61750000004453, 1.7000000000075488, 0.05, -67.7025000000449, 1.7000000000075488, 0.05, -67.7875000000453, 1.700000000007833, 0.05, -67.87250000004568, 1.7000000000075488, 0.05, -67.95750000004607, 1.700000000007833, 0.05, -68.04250000004645, 1.7000000000075488, 0.05, -68.12750000004682, 1.7000000000075488, 0.05, -68.21250000004719, 1.7000000000072646, 0.05, -68.29750000004758, 1.700000000007833, 0.05, -68.38250000004795, 1.7000000000075488, 0.05, -68.46750000004833, 1.7000000000075488, 0.05, -68.55250000004872, 1.700000000007833, 0.05, -68.6375000000491, 1.7000000000075488, 0.05, -68.7225000000495, 1.700000000007833, 0.05, -68.80750000004986, 1.7000000000072646, 0.05, -68.89250000005025, 1.700000000007833, 0.05, -68.97750000005063, 1.7000000000075488, 0.05, -69.062500000051, 1.7000000000075488, 0.05, -69.1475000000514, 1.700000000007833, 0.05, -69.23250000005177, 1.7000000000075488, 0.05, -69.31750000005214, 1.7000000000072646, 0.05, -69.40250000005253, 1.700000000007833, 0.05, -69.4875000000529, 1.7000000000075488, 0.05, -69.5725000000533, 1.700000000007833, 0.05, -69.65750000005367, 1.7000000000075488, 0.05, -69.74250000005405, 1.7000000000075488, 0.05, -69.82750000005443, 1.7000000000075488, 0.05, -69.9125000000548, 1.7000000000075488, 0.05, -69.99750000005518, 1.7000000000075488, 0.05, -70.08250000005557, 1.700000000007833, 0.05, -70.16750000005595, 1.7000000000075488, 0.05, -70.25250000005633, 1.7000000000075488, 0.05, -70.3375000000567, 1.7000000000075488, 0.05, -70.4225000000571, 1.700000000007833, 0.05, -70.50750000005748, 1.7000000000075488, 0.05, -70.59250000005785, 1.7000000000075488, 0.05, -70.67750000005825, 1.700000000007833, 0.05, -70.76250000005862, 1.7000000000075488, 0.05, -70.847500000059, 1.7000000000075488, 0.05, -70.93250000005936, 1.7000000000072646, 0.05, -71.01750000005975, 1.700000000007833, 0.05, -71.10250000006013, 1.7000000000075488, 0.05, -71.18750000006052, 1.700000000007833, 0.05, -71.2725000000609, 1.7000000000075488, 0.05, -71.3575000000613, 1.700000000007833, 0.05, -71.44250000006167, 1.7000000000075488, 0.05, -71.52750000006203, 1.7000000000072646, 0.05, -71.61250000006243, 1.700000000007833, 0.05, -71.6975000000628, 1.7000000000075488, 0.05, -71.78250000006318, 1.7000000000075488, 0.05, -71.86750000006356, 1.7000000000075488, 0.05, -71.95250000006395, 1.700000000007833, 0.05, -72.03750000006433, 1.7000000000075488, 0.05, -72.1225000000647, 1.7000000000075488, 0.05, -72.2075000000651, 1.700000000007833, 0.05, -72.29250000006547, 1.7000000000075488, 0.05, -72.37750000006585, 1.7000000000075488, 0.05, -72.46250000006623, 1.7000000000075488, 0.05, -72.5475000000666, 1.7000000000075488, 0.05, -72.63250000006698, 1.7000000000075488, 0.05, -72.71750000006736, 1.7000000000075488, 0.05, -72.80250000006775, 1.700000000007833, 0.05, -72.88750000006813, 1.7000000000075488, 0.05, -72.97250000006851, 1.7000000000075488, 0.05, -73.0575000000689, 1.700000000007833, 0.05, -73.14250000006928, 1.7000000000075488, 0.05, -73.22750000006965, 1.7000000000075488, 0.05, -73.31250000007003, 1.7000000000075488, 0.05, -73.39750000007042, 1.700000000007833, 0.05, -73.4825000000708, 1.7000000000075488, 0.05, -73.56750000007118, 1.7000000000075488, 0.05, -73.65250000007154, 1.7000000000072646, 0.05, -73.73750000007193, 1.700000000007833, 0.05, -73.82250000007231, 1.7000000000075488, 0.05, -73.9075000000727, 1.700000000007833, 0.05, -73.99250000007308, 1.7000000000075488, 0.05, -74.07750000007347, 1.700000000007833, 0.05, -74.16250000007383, 1.7000000000072646, 0.05, -74.24750000007421, 1.7000000000075488, 0.05, -74.3325000000746, 1.700000000007833, 0.05, -74.41750000007498, 1.7000000000075488, 0.05, -74.50250000007536, 1.7000000000075488, 0.05, -74.58750000007574, 1.7000000000075488, 0.05, -74.67250000007613, 1.700000000007833, 0.05, -74.7575000000765, 1.7000000000075488, 0.05, -74.84250000007688, 1.7000000000075488, 0.05, -74.92750000007727, 1.700000000007833, 0.05, -75.01250000007765, 1.7000000000075488, 0.05, -75.09750000007803, 1.7000000000075488, 0.05, -75.1825000000784, 1.7000000000075488, 0.05, -75.26750000007878, 1.7000000000075488, 0.05, -75.35250000007916, 1.7000000000075488, 0.05, -75.43750000007954, 1.7000000000075488, 0.05, -75.52250000007993, 1.700000000007833, 0.05, -75.60750000008031, 1.7000000000075488, 0.05, -75.6925000000807, 1.700000000007833, 0.05, -75.77750000008108, 1.7000000000075488, 0.05, -75.86250000008145, 1.7000000000075488, 0.05, -75.94750000008183, 1.7000000000075488, 0.05, -76.03250000008221, 1.7000000000075488, 0.05, -76.11750000008259, 1.7000000000075488, 0.05, -76.20250000008298, 1.700000000007833, 0.05, -76.28750000008336, 1.7000000000075488, 0.05, -76.37250000008373, 1.7000000000075488, 0.05, -76.45750000008412, 1.700000000007833, 0.05, -76.5425000000845, 1.7000000000075488, 0.05, -76.62750000008488, 1.7000000000075488, 0.05, -76.71250000008526, 1.7000000000075488, 0.05, -76.79750000008565, 1.700000000007833, 0.05, -76.88250000008601, 1.7000000000072646, 0.05, -76.96750000008639, 1.7000000000075488, 0.05, -77.05250000008678, 1.700000000007833, 0.05, -77.13750000008716, 1.7000000000075488, 0.05, -77.22250000008754, 1.7000000000075488, 0.05, -77.30750000008793, 1.700000000007833, 0.05, -77.3925000000883, 1.7000000000075488, 0.05, -77.47750000008868, 1.7000000000075488, 0.05, -77.56250000008906, 1.7000000000075488, 0.05, -77.64750000008945, 1.700000000007833, 0.05, -77.73250000008983, 1.7000000000075488, 0.05, -77.8175000000902, 1.7000000000075488, 0.05, -77.90250000009058, 1.7000000000075488, 0.05, -77.98750000009096, 1.7000000000075488, 0.05, -78.07250000009134, 1.7000000000075488, 0.05, -78.15750000009173, 1.700000000007833, 0.05, -78.24250000009211, 1.7000000000075488, 0.05, -78.3275000000925, 1.700000000007833, 0.05, -78.41250000009288, 1.7000000000075488, 0.05, -78.49750000009324, 1.7000000000072646, 0.05, -78.58250000009363, 1.700000000007833, 0.05, -78.66750000009401, 1.7000000000075488, 0.05, -78.75250000009439, 1.7000000000075488, 0.05, -78.83750000009476, 1.7000000000075488, 0.05, -78.92250000009516, 1.700000000007833, 0.05, -79.00750000009553, 1.7000000000075488, 0.05, -79.09250000009591, 1.7000000000075488, 0.05, -79.1775000000963, 1.700000000007833, 0.05, -79.26250000009668, 1.7000000000075488, 0.05, -79.34750000009706, 1.7000000000075488, 0.05, -79.43250000009743, 1.7000000000075488, 0.05, -79.51750000009783, 1.700000000007833, 0.05, -79.60250000009819, 1.7000000000072646, 0.05, -79.68750000009857, 1.7000000000075488, 0.05, -79.77250000009896, 1.700000000007833, 0.05, -79.85750000009934, 1.7000000000075488, 0.05, -79.94250000009973, 1.700000000007833, 0.05, -80.0275000001001, 1.7000000000075488, 0.05, -80.1125000001005, 1.700000000007833, 0.05, -80.19750000010086, 1.7000000000072646, 0.05, -80.28250000010124, 1.7000000000075488, 0.05, -80.36750000010161, 1.7000000000075488, 0.05, -80.452500000102, 1.700000000007833, 0.05, -80.53750000010238, 1.7000000000075488, 0.05, -80.62250000010276, 1.7000000000075488, 0.05, -80.70750000010314, 1.7000000000075488, 0.05, -80.79250000010353, 1.700000000007833, 0.05, -80.87750000010391, 1.7000000000075488, 0.05, -80.96250000010428, 1.7000000000075488, 0.05, -81.04750000010468, 1.700000000007833, 0.05, -81.13250000010505, 1.7000000000075488, 0.05, -81.21750000010542, 1.7000000000072646, 0.05, -81.30250000010581, 1.700000000007833, 0.05, -81.38750000010619, 1.7000000000075488, 0.05, -81.47250000010656, 1.7000000000075488, 0.05, -81.55750000010694, 1.7000000000075488, 0.05, -81.64250000010733, 1.700000000007833, 0.05, -81.72750000010772, 1.700000000007833, 0.05, -81.81250000010809, 1.7000000000072646, 0.05, -81.89750000010848, 1.700000000007833, 0.05, -81.98250000010886, 1.7000000000075488, 0.05, -82.06750000010923, 1.7000000000075488, 0.05, -82.15250000010961, 1.7000000000075488, 0.05, -82.23750000011, 1.700000000007833, 0.05, -82.32250000011037, 1.7000000000072646, 0.05, -82.40750000011074, 1.7000000000075488, 0.05, -82.49250000011114, 1.700000000007833, 0.05, -82.57750000011153, 1.700000000007833, 0.05, -82.6625000001119, 1.7000000000075488, 0.05, -82.74750000011228, 1.7000000000075488, 0.05, -82.83250000011266, 1.7000000000075488, 0.05, -82.91750000011304, 1.7000000000075488, 0.05, -83.00250000011341, 1.7000000000075488, 0.05, -83.08750000011379, 1.7000000000075488, 0.05, -83.17250000011418, 1.700000000007833, 0.05, -83.25750000011456, 1.7000000000075488, 0.05, -83.34250000011494, 1.7000000000075488, 0.05, -83.42750000011533, 1.700000000007833, 0.05, -83.51250000011571, 1.7000000000075488, 0.05, -83.59750000011609, 1.7000000000075488, 0.05, -83.68250000011646, 1.7000000000075488, 0.05, -83.76750000011685, 1.700000000007833, 0.05, -83.85250000011723, 1.7000000000075488, 0.05, -83.9375000001176, 1.7000000000072646, 0.05, -84.02250000011799, 1.700000000007833, 0.05, -84.10750000011836, 1.7000000000075488, 0.05, -84.19250000011874, 1.7000000000075488, 0.05, -84.27750000011913, 1.700000000007833, 0.05, -84.36250000011951, 1.7000000000075488, 0.05, -84.4475000001199, 1.700000000007833, 0.05, -84.53250000012027, 1.7000000000072646, 0.05, -84.61750000012064, 1.7000000000075488, 0.05, -84.70250000012103, 1.700000000007833, 0.05, -84.78750000012141, 1.7000000000075488, 0.05, -84.87250000012179, 1.7000000000075488, 0.05, -84.95750000012218, 1.700000000007833, 0.05, -85.04250000012256, 1.7000000000075488, 0.05, -85.12750000012294, 1.7000000000075488, 0.05, -85.21250000012331, 1.7000000000075488, 0.05, -85.2975000001237, 1.700000000007833, 0.05, -85.38250000012408, 1.7000000000075488, 0.05, -85.46750000012446, 1.7000000000075488, 0.05, -85.55250000012484, 1.7000000000075488, 0.05, -85.63750000012521, 1.7000000000075488, 0.05, -85.72250000012559, 1.7000000000075488, 0.05, -85.80750000012597, 1.7000000000075488, 0.05, -85.89250000012636, 1.700000000007833, 0.05, -85.97750000012674, 1.7000000000075488, 0.05, -86.06250000012713, 1.700000000007833, 0.05, -86.14750000012751, 1.7000000000075488, 0.05, -86.23250000012789, 1.7000000000075488, 0.05, -86.31750000012826, 1.7000000000075488, 0.05, -86.40250000012864, 1.7000000000075488, 0.05, -86.48750000012903, 1.700000000007833, 0.05, -86.57250000012941, 1.7000000000075488, 0.05, -86.65750000012977, 1.7000000000072646, 0.05, -86.74250000013016, 1.700000000007833, 0.05, -86.82750000013054, 1.7000000000075488, 0.05, -86.91250000013093, 1.700000000007833, 0.05, -86.99750000013131, 1.7000000000075488, 0.05, -87.0825000001317, 1.700000000007833, 0.05, -87.16750000013207, 1.7000000000072646, 0.05, -87.25250000013244, 1.7000000000075488, 0.05, -87.33750000013282, 1.7000000000075488, 0.05, -87.42250000013321, 1.700000000007833, 0.05, -87.50750000013359, 1.7000000000075488, 0.05, -87.59250000013397, 1.7000000000075488, 0.05, -87.67750000013436, 1.700000000007833, 0.05, -87.76250000013474, 1.7000000000075488, 0.05, -87.84750000013511, 1.7000000000075488, 0.05, -87.93250000013549, 1.7000000000075488, 0.05, -88.01750000013588, 1.700000000007833, 0.05, -88.10250000013626, 1.7000000000075488, 0.05, -88.18750000013664, 1.7000000000075488, 0.05, -88.27250000013701, 1.7000000000075488, 0.05, -88.35750000013739, 1.7000000000075488, 0.05, -88.44250000013777, 1.7000000000075488, 0.05, -88.52750000013816, 1.700000000007833, 0.05, -88.61250000013854, 1.7000000000075488, 0.05, -88.69750000013893, 1.700000000007833, 0.05, -88.78250000013931, 1.7000000000075488, 0.05, -88.86750000013967, 1.7000000000072646, 0.05, -88.95250000014006, 1.700000000007833, 0.05, -89.03750000014044, 1.7000000000075488, 0.05, -89.12250000014082, 1.7000000000075488, 0.05, -89.20750000014121, 1.700000000007833, 0.05, -89.29250000014159, 1.7000000000075488, 0.05, -89.37750000014196, 1.7000000000075488, 0.05, -89.46250000014234, 1.7000000000075488, 0.05, -89.54750000014273, 1.700000000007833, 0.05, -89.63250000014311, 1.7000000000075488, 0.05, -89.71750000014349, 1.7000000000075488, 0.05, -89.80250000014388, 1.700000000007833, 0.05, -89.88750000014424, 1.7000000000072646, 0.05, -89.97250000014462, 1.7000000000075488, 0.05, -90.057500000145, 1.7000000000075488, 0.05, -90.14250000014539, 1.700000000007833, 0.05, -90.22750000014577, 1.7000000000075488, 0.05, -90.31250000014616, 1.700000000007833, 0.05, -90.39750000014654, 1.7000000000075488, 0.05, -90.48250000014691, 1.7000000000075488, 0.05, -90.56750000014729, 1.7000000000075488, 0.05, -90.65250000014767, 1.7000000000075488, 0.05, -90.73750000014806, 1.700000000007833, 0.05, -90.82250000014844, 1.7000000000075488, 0.05, -90.90750000014881, 1.7000000000075488, 0.05, -90.99250000014918, 1.7000000000072646, 0.05, -91.07750000014957, 1.700000000007833, 0.05, -91.16250000014996, 1.700000000007833, 0.05, -91.24750000015034, 1.7000000000075488, 0.05, -91.33250000015073, 1.700000000007833, 0.05, -91.41750000015111, 1.7000000000075488, 0.05, -91.50250000015147, 1.7000000000072646, 0.05, -91.58750000015185, 1.7000000000075488, 0.05, -91.67250000015224, 1.700000000007833, 0.05, -91.75750000015262, 1.7000000000075488, 0.05, -91.842500000153, 1.7000000000075488, 0.05, -91.92750000015339, 1.700000000007833, 0.05, -92.01250000015376, 1.7000000000075488, 0.05, -92.09750000015414, 1.7000000000075488, 0.05, -92.18250000015452, 1.7000000000075488, 0.05, -92.26750000015491, 1.700000000007833, 0.05, -92.35250000015529, 1.7000000000075488, 0.05, -92.43750000015567, 1.7000000000075488, 0.05, -92.52250000015606, 1.700000000007833, 0.05, -92.60750000015642, 1.7000000000072646, 0.05, -92.6925000001568, 1.7000000000075488, 0.05, -92.77750000015718, 1.7000000000075488, 0.05, -92.86250000015757, 1.700000000007833, 0.05, -92.94750000015794, 1.7000000000075488, 0.05, -93.03250000015834, 1.700000000007833, 0.05, -93.11750000015871, 1.7000000000075488, 0.05, -93.20250000015909, 1.7000000000075488, 0.05, -93.28750000015947, 1.7000000000075488, 0.05, -93.37250000015985, 1.7000000000075488, 0.05, -93.45750000016024, 1.700000000007833, 0.05, -93.54250000016062, 1.7000000000075488, 0.05, -93.62750000016099, 1.7000000000075488, 0.05, -93.71250000016137, 1.7000000000075488, 0.05, -93.79750000016176, 1.700000000007833, 0.05, -93.88250000016214, 1.7000000000075488, 0.05, -93.96750000016252, 1.7000000000075488, 0.05, -94.05250000016291, 1.700000000007833, 0.05, -94.13750000016329, 1.7000000000075488, 0.05, -94.22250000016365, 1.7000000000072646, 0.05, -94.30750000016403, 1.7000000000075488, 0.05, -94.39250000016442, 1.700000000007833, 0.05, -94.4775000001648, 1.7000000000075488, 0.05, -94.56250000016517, 1.7000000000075488, 0.05, -94.64750000016556, 1.700000000007833, 0.05, -94.73250000016594, 1.7000000000075488, 0.05, -94.81750000016632, 1.7000000000075488, 0.05, -94.9025000001667, 1.7000000000075488, 0.05, -94.98750000016709, 1.700000000007833, 0.05, -95.07250000016747, 1.7000000000075488, 0.05, -95.15750000016784, 1.7000000000075488, 0.05, -95.24250000016822, 1.7000000000075488, 0.05, -95.3275000001686, 1.7000000000075488, 0.05, -95.41250000016898, 1.7000000000075488, 0.05, -95.49750000016937, 1.700000000007833, 0.05, -95.58250000016976, 1.700000000007833, 0.05, -95.66750000017014, 1.7000000000075488, 0.05, -95.75250000017051, 1.7000000000075488, 0.05, -95.83750000017089, 1.7000000000075488, 0.05, -95.92250000017127, 1.7000000000075488, 0.05, -96.00750000017165, 1.7000000000075488, 0.05, -96.09250000017202, 1.7000000000075488, 0.05, -96.17750000017242, 1.700000000007833, 0.05, -96.26250000017279, 1.7000000000075488, 0.05, -96.34750000017317, 1.7000000000075488, 0.05, -96.43250000017355, 1.7000000000075488, 0.05, -96.51750000017394, 1.700000000007833, 0.05, -96.60250000017432, 1.7000000000075488, 0.05, -96.6875000001747, 1.7000000000075488, 0.05, -96.77250000017509, 1.700000000007833, 0.05, -96.85750000017546, 1.7000000000075488, 0.05, -96.94250000017583, 1.7000000000072646, 0.05, -97.0275000001762, 1.7000000000075488, 0.05, -97.1125000001766, 1.700000000007833, 0.05, -97.19750000017697, 1.7000000000075488, 0.05, -97.28250000017736, 1.700000000007833, 0.05, -97.36750000017774, 1.7000000000075488, 0.05, -97.45250000017813, 1.700000000007833, 0.05, -97.5375000001785, 1.7000000000072646, 0.05, -97.62250000017887, 1.7000000000075488, 0.05, -97.70750000017927, 1.700000000007833, 0.05, -97.79250000017964, 1.7000000000075488, 0.05, -97.87750000018002, 1.7000000000075488, 0.05, -97.9625000001804, 1.7000000000075488, 0.05, -98.04750000018078, 1.7000000000075488, 0.05, -98.13250000018117, 1.700000000007833, 0.05, -98.21750000018154, 1.7000000000075488, 0.05, -98.30250000018194, 1.700000000007833, 0.05, -98.38750000018231, 1.7000000000075488, 0.05, -98.47250000018269, 1.7000000000075488, 0.05, -98.55750000018305, 1.7000000000072646, 0.05, -98.64250000018345, 1.700000000007833, 0.05, -98.72750000018382, 1.7000000000075488, 0.05, -98.8125000001842, 1.7000000000075488, 0.05, -98.89750000018459, 1.700000000007833, 0.05, -98.98250000018497, 1.7000000000075488, 0.05, -99.06750000018536, 1.700000000007833, 0.05, -99.15250000018573, 1.7000000000072646, 0.05, -99.23750000018612, 1.700000000007833, 0.05, -99.3212058825338, 1.6741176469537322, 0.05, -99.40111764722877, 1.5982352938993927, 0.05, -99.47602941192372, 1.4982352938989152, 0.05, -99.54594117661864, 1.3982352938984377, 0.05, -99.61085294131355, 1.2982352938982444, 0.05, -99.67076470600844, 1.198235293897767, 0.05, -99.7256764707033, 1.0982352938972895, 0.05, -99.77558823539815, 0.998235293896812, 0.05, -99.82050000009296, 0.8982352938963345, 0.05, -99.86041176478777, 0.7982352938961412, 0.05, -99.89532352948254, 0.6982352938953795, 0.05, -99.92523529417728, 0.598235293894902, 0.05, -99.95014705887202, 0.4982352938947088, 0.05, -99.97005882356672, 0.3982352938939471, 0.05, -99.98497058826139, 0.2982352938934696, 0.05, -99.99488235295604, 0.1982352938929921, 0.05, -99.99979411765068, 0.09823529389279884, 0.05, -100.00099999999797, 0.02411764694585372, 0.05, -100.00099999999797, 0.0, 0.05, \ No newline at end of file +1146 +6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, +6.3979198129539205E-6, 2.958396259078418E-6, 0.05, +6.730740121155927E-6, 6.656406164040121E-6, 0.05, +7.322423161052439E-6, 1.183366079793024E-5, 0.05, +8.246934296921023E-6, 1.8490222717371686E-5, 0.05, +9.57824401438665E-6, 2.6626194349312525E-5, 0.05, +1.1390330412650036E-5, 3.6241727965267745E-5, 0.05, +1.140254507800249E-4, 0.0020527024073474973, 0.05, +6.172838460942016E-4, 0.010065167906283534, 0.05, +0.0012385805797318194, 0.012425934672752357, 0.05, +0.0019903588334635202, 0.015035565074634018, 0.05, +0.002885033203570747, 0.017893487402144536, 0.05, +0.0039350309336994025, 0.020999954602573104, 0.05, +0.005152779686005718, 0.024354975046126305, 0.05, +0.0065507040759068425, 0.027958487798022496, 0.05, +0.008141224887367004, 0.03181041622920322, 0.05, +0.009936784155774647, 0.035911185368152854, 0.05, +0.01194978884972533, 0.04026009387901365, 0.05, +0.014192671647435104, 0.0448576559541955, 0.05, +0.016677859757119686, 0.04970376219369162, 0.05, +0.019417773849294336, 0.05479828184349296, 0.05, +0.02242484045738296, 0.06014133216177249, 0.05, +0.025711481912289842, 0.06573282909813763, 0.05, +0.02929012872646622, 0.07157293628352757, 0.05, +0.03317320209931469, 0.07766146745696934, 0.05, +0.03737311963040981, 0.08399835062190243, 0.05, +0.04190231127762728, 0.09058383294434941, 0.05, +0.04677320460973636, 0.09741786664218159, 0.05, +0.05199821418554838, 0.10450019151624056, 0.05, +0.05758976689617732, 0.1118310542125787, 0.05, +0.06356028168394007, 0.11941029575525504, 0.05, +0.06992218220967739, 0.12723801051474645, 0.05, +0.07668788858121878, 0.13531412743082788, 0.05, +0.08386983043419828, 0.14363883705958996, 0.05, +0.09148041811859008, 0.15221175368783585, 0.05, +0.09953207556552598, 0.16103314893871817, 0.05, +0.10803721776480495, 0.17010284398557918, 0.05, +0.1170082733870086, 0.179421112444073, 0.05, +0.12645764974942628, 0.18898752724835363, 0.05, +0.13639777804753658, 0.1988025659622063, 0.05, +0.14684106180640513, 0.20886567517737117, 0.05, +0.15779991811735833, 0.2191771262190637, 0.05, +0.1692867705658698, 0.2297370489702292, 0.05, +0.18131403697048368, 0.24054532809227736, 0.05, +0.19389411830936157, 0.2516016267775579, 0.05, +0.2070394351894967, 0.2629063376027024, 0.05, +0.22076239884010485, 0.27445927301216333, 0.05, +0.23507541429350828, 0.28626030906806854, 0.05, +0.24999090419017056, 0.29830979793324536, 0.05, +0.26552127350859606, 0.31060738636851004, 0.05, +0.2816789242081459, 0.3231530139909962, 0.05, +0.2984762611871555, 0.33594673958019144, 0.05, +0.3159257043609333, 0.34898886347555624, 0.05, +0.3340396436542722, 0.36227878586677725, 0.05, +0.3528304943218005, 0.3758170133505668, 0.05, +0.3723106474024566, 0.3896030616131216, 0.05, +0.3924925053807479, 0.4036371595658265, 0.05, +0.41338847095828873, 0.4179193115508165, 0.05, +0.43501093745105723, 0.43244932985537, 0.05, +0.4573723100700361, 0.4472274523795767, 0.05, +0.48048496768254445, 0.46225315225016755, 0.05, +0.5043613118905373, 0.47752688415985806, 0.05, +0.5290137286808952, 0.49304833580715746, 0.05, +0.5544546104702085, 0.508817635786266, 0.05, +0.5806963397703419, 0.5248345860026671, 0.05, +0.60775130231301, 0.5410992508533639, 0.05, +0.6356318768300262, 0.5576114903403241, 0.05, +0.664350451304345, 0.5743714894863761, 0.05, +0.6939193976425666, 0.5913789267644328, 0.05, +0.7243510884579166, 0.6086338163070014, 0.05, +0.7556579032564459, 0.6261362959705841, 0.05, +0.7878522062166716, 0.6438860592045146, 0.05, +0.8209463672498726, 0.6618832206640198, 0.05, +0.8549527470212359, 0.6801275954272676, 0.05, +0.8898837100531635, 0.6986192606385518, 0.05, +0.9257516147897622, 0.7173580947319754, 0.05, +0.9625688143845613, 0.7363439918959827, 0.05, +1.0003476573953547, 0.755576860215867, 0.05, +1.0391005032708323, 0.7750569175095517, 0.05, +1.0788396849578648, 0.7947836337406513, 0.05, +1.1195775500718959, 0.8147573022806234, 0.05, +1.1613264304835578, 0.8349776082332383, 0.05, +1.204098667281267, 0.8554447359541831, 0.05, +1.247906576185184, 0.8761581780783368, 0.05, +1.2927625008574168, 0.8971184934446589, 0.05, +1.338678742014655, 0.9183248231447642, 0.05, +1.3856676298970982, 0.9397777576488631, 0.05, +1.433741461486, 0.9614766317780357, 0.05, +1.4829125584321816, 0.9834219389236322, 0.05, +1.5331932073550507, 1.0056129784573815, 0.05, +1.5845957068248708, 1.0280499893964015, 0.05, +1.6371323486644185, 1.0507328367909525, 0.05, +1.6908154167747211, 1.073661362206055, 0.05, +1.7456571857975107, 1.0968353804557918, 0.05, +1.8016699219420356, 1.120254722890499, 0.05, +1.8588659026640661, 1.1439196144406127, 0.05, +1.917257375183617, 1.1678294503910174, 0.05, +1.9768565902519142, 1.1919843013659435, 0.05, +2.0376757939603003, 1.2163840741677212, 0.05, +2.0997272201254216, 1.2410285233024234, 0.05, +2.163016893143893, 1.2657934603694272, 0.05, +2.227544622803847, 1.2905545931990814, 0.05, +2.2933102147566697, 1.315311839056455, 0.05, +2.3603134659728124, 1.340065024322854, 0.05, +2.4285541641662167, 1.36481396386809, 0.05, +2.4980321071556943, 1.3895588597895547, 0.05, +2.5687470601148994, 1.4142990591841045, 0.05, +2.6406987952047385, 1.439034701796786, 0.05, +2.7138870847593255, 1.4637657910917383, 0.05, +2.7883116752153816, 1.4884918091211226, 0.05, +2.863972317163791, 1.5132128389681894, 0.05, +2.940868751328382, 1.5379286832918166, 0.05, +3.01900071387026, 1.5626392508375557, 0.05, +3.0983679180562693, 1.5873440837201875, 0.05, +3.1789700864238326, 1.612043367351263, 0.05, +3.2608069162173656, 1.6367365958706588, 0.05, +3.343878112553792, 1.6614239267285287, 0.05, +3.4281833512175215, 1.686104773274582, 0.05, +3.513722318500188, 1.7107793456533287, 0.05, +3.6004946758191685, 1.7354471463796062, 0.05, +3.688500074225628, 1.7601079681291976, 0.05, +3.7777381691313607, 1.7847618981146498, 0.05, +3.868208582812692, 1.809408273626626, 0.05, +3.95991094211484, 1.834047186042968, 0.05, +4.052844863439537, 1.8586784264939353, 0.05, +4.147009933603232, 1.883301403273894, 0.05, +4.242405744191372, 1.907916211762813, 0.05, +4.339031864726593, 1.932522410704416, 0.05, +4.436887858002806, 1.9571198655242656, 0.05, +4.535973272800137, 1.981708295946632, 0.05, +4.636287632441776, 2.006287192832762, 0.05, +4.737830463995241, 2.0308566310693137, 0.05, +4.840601263372458, 2.05541598754435, 0.05, +4.944599519239872, 2.0799651173482725, 0.05, +5.049824712197924, 2.1045038591610368, 0.05, +5.156276288300214, 2.1290315220458087, 0.05, +5.263953691955869, 2.1535480731131, 0.05, +5.37285634903212, 2.1780531415250133, 0.05, +5.482983665694789, 2.2025463332533777, 0.05, +5.594335029319354, 2.2270272724913087, 0.05, +5.706903624379009, 2.2513719011931115, 0.05, +5.820676451144033, 2.275456535300475, 0.05, +5.935640469312452, 2.2992803633683914, 0.05, +6.051782658975842, 2.322843793267803, 0.05, +6.169089959705703, 2.3461460145972155, 0.05, +6.2875493235404205, 2.3691872766943556, 0.05, +6.4071476775488945, 2.3919670801694854, 0.05, +6.527871938395545, 2.4144852169330018, 0.05, +6.6497090234449425, 2.4367417009879535, 0.05, +6.772645829408703, 2.458736119275217, 0.05, +6.896669242597277, 2.480468263771471, 0.05, +7.021766153383878, 2.5019382157320336, 0.05, +7.147923429183088, 2.523145515984178, 0.05, +7.27512793770314, 2.5440901704010552, 0.05, +7.403366539841029, 2.5647720427577734, 0.05, +7.532626090519905, 2.5851910135775285, 0.05, +7.662893435593764, 2.6053469014771884, 0.05, +7.794155424256278, 2.6252397732502764, 0.05, +7.926398903084572, 2.6448695765658816, 0.05, +8.05961071652518, 2.6642362688121537, 0.05, +8.193777709501713, 2.6833398595306854, 0.05, +8.32888672757939, 2.702180361553507, 0.05, +8.464924627672518, 2.720758001862565, 0.05, +8.601878267770475, 2.739072801959144, 0.05, +8.739734525207487, 2.7571251487402186, 0.05, +8.878480278529345, 2.7749150664371802, 0.05, +9.01810243035504, 2.7924430365138844, 0.05, +9.158587889763151, 2.8097091881622465, 0.05, +9.29992360186445, 2.826714242025962, 0.05, +9.442096524324064, 2.843458449192309, 0.05, +9.585093648676468, 2.859942487048077, 0.05, +9.728902000007322, 2.876167026617066, 0.05, +9.873508636512014, 2.8921327300938398, 0.05, +10.018900661227402, 2.907840494307748, 0.05, +10.16506521642358, 2.923291103923545, 0.05, +10.31198950558002, 2.938485783128775, 0.05, +10.45966077120271, 2.9534253124538057, 0.05, +10.608066331219863, 2.968111200343052, 0.05, +10.757193564707212, 2.9825446697469604, 0.05, +10.907029917938397, 2.9967270646237165, 0.05, +11.05756291638886, 3.010659969009282, 0.05, +11.20878016907782, 3.024345053779166, 0.05, +11.36066937361844, 3.0377840908124387, 0.05, +11.51321831804005, 3.0509788884321867, 0.05, +11.666414888327136, 3.063931405741742, 0.05, +11.820247081740485, 3.07664386826698, 0.05, +11.974702995799175, 3.089118281173805, 0.05, +12.129770845487368, 3.1013569937638517, 0.05, +12.285438963705895, 3.113362364370549, 0.05, +12.441695804445807, 3.125136814798247, 0.05, +12.598529948258175, 3.1366828762473595, 0.05, +12.755930102597858, 3.148003086793656, 0.05, +12.913885101289909, 3.1590999738410046, 0.05, +13.072383911513596, 3.1699762044737345, 0.05, +13.231415633446117, 3.180634438650437, 0.05, +13.39096949272278, 3.1910771855332607, 0.05, +13.551034844784564, 3.2013070412356748, 0.05, +13.711601171807871, 3.2113265404661298, 0.05, +13.872658077054673, 3.221138104936051, 0.05, +14.034195279059764, 3.230744040101812, 0.05, +14.196202608251214, 3.240146583828986, 0.05, +14.358669998561048, 3.2493478061966683, 0.05, +14.521587479225499, 3.2583496132890164, 0.05, +14.684945164507583, 3.267153705641698, 0.05, +14.848733246136314, 3.275761632574602, 0.05, +15.012941980238883, 3.284174682051374, 0.05, +15.177561675723613, 3.29239390969459, 0.05, +15.34258268207963, 3.300420127120357, 0.05, +15.50799537796505, 3.3082539177083996, 0.05, +15.673790156897315, 3.3158955786452893, 0.05, +15.83995741404107, 3.3233451428750915, 0.05, +16.00648753238749, 3.33060236692835, 0.05, +16.17337087020569, 3.337666756364049, 0.05, +16.340597747784326, 3.344537551572703, 0.05, +16.50815843618039, 3.351213767921331, 0.05, +16.67604314268252, 3.3576941300425815, 0.05, +16.84424200208565, 3.3639771880626244, 0.05, +17.012745064687916, 3.3700612520453515, 0.05, +17.18154228763261, 3.3759444588938696, 0.05, +17.35062352587139, 3.381624764775653, 0.05, +17.519978524938484, 3.3870999813418794, 0.05, +17.68959691442784, 3.392367789787165, 0.05, +17.859468202101514, 3.397425753473459, 0.05, +18.029581771393904, 3.4022713858478215, 0.05, +18.199926875411478, 3.406902080351505, 0.05, +18.370492638317618, 3.4113152581228015, 0.05, +18.541268051040227, 3.415508254452189, 0.05, +18.71224197399855, 3.419478459166488, 0.05, +18.883403134670264, 3.423223213434241, 0.05, +19.054740133322092, 3.4267399730365815, 0.05, +19.226241441035043, 3.430026154259017, 0.05, +19.397895407483077, 3.4330793289607033, 0.05, +19.569690259444453, 3.435897039227498, 0.05, +19.741614109976034, 3.438477010631602, 0.05, +19.913654958016142, 3.440816960802171, 0.05, +20.085800697555158, 3.4429147907803337, 0.05, +20.25803912193604, 3.4447684876176488, 0.05, +20.430357925622943, 3.4463760737380635, 0.05, +20.602744715383288, 3.4477357952068997, 0.05, +20.775187011640043, 3.4488459251351045, 0.05, +20.94767841730116, 3.449828113222322, 0.05, +21.12021863132575, 3.4508042804918135, 0.05, +21.29280729665665, 3.4517733066180556, 0.05, +21.465444009273494, 3.4527342523368603, 0.05, +21.63812831963772, 3.453686207284506, 0.05, +21.81085973653206, 3.454628337886827, 0.05, +21.98363773690214, 3.4555600074016004, 0.05, +22.156461761780836, 3.4564804975739376, 0.05, +22.329331228319116, 3.457389330765601, 0.05, +22.502245527981362, 3.458285993244896, 0.05, +22.675204034940037, 3.459170139173523, 0.05, +22.848206102158088, 3.4600413443610245, 0.05, +23.021251071772717, 3.460899392292586, 0.05, +23.194338272311555, 3.461744010776753, 0.05, +23.367467027571056, 3.462575105190017, 0.05, +23.540636650708414, 3.4633924627471466, 0.05, +23.7138464541016, 3.4641960678636705, 0.05, +23.887095746949004, 3.4649858569481085, 0.05, +24.06038383617943, 3.4657617846085302, 0.05, +24.23371003436314, 3.4665239636741765, 0.05, +24.407073653017594, 3.4672723730891235, 0.05, +24.580474009607695, 3.4680071318019947, 0.05, +24.753910428286748, 3.468728373581092, 0.05, +24.927382236184336, 3.46943615795178, 0.05, +25.10088877090541, 3.4701306944214974, 0.05, +25.274429376119233, 3.470812104276427, 0.05, +25.44800340786195, 3.4714806348543585, 0.05, +25.621610227910452, 3.472136400970051, 0.05, +25.79524921026583, 3.472779647107541, 0.05, +25.968919739575043, 3.4734105861842677, 0.05, +26.14262121078317, 3.4740294241625427, 0.05, +26.31635303089666, 3.474636402269826, 0.05, +26.49011461785091, 3.4752317390850074, 0.05, +26.663905402414173, 3.4758156912652582, 0.05, +26.837724827600073, 3.4763885037180358, 0.05, +27.01157234573185, 3.4769503626355203, 0.05, +27.185447425020033, 3.4775015857636635, 0.05, +27.359349544070746, 3.478042381014265, 0.05, +27.533278194696397, 3.478573012513027, 0.05, +27.707232879492484, 3.479093695921741, 0.05, +27.881213115434242, 3.4796047188351995, 0.05, +28.055218429791847, 3.4801062871520965, 0.05, +28.229248362839847, 3.480598660960014, 0.05, +28.403302467013788, 3.4810820834787792, 0.05, +28.577380305328166, 3.4815567662875644, 0.05, +28.75148145456009, 3.4820229846384714, 0.05, +28.92560550079964, 3.4824809247910005, 0.05, +29.099752043889723, 3.4829308618016634, 0.05, +29.273920692667545, 3.483372975556475, 0.05, +29.44811106938163, 3.4838075342816612, 0.05, +29.622322804699106, 3.484234706349585, 0.05, +29.796555542998753, 3.4846547659929215, 0.05, +29.970808935881248, 3.485067857649861, 0.05, +30.1450826472121, 3.4854742266170358, 0.05, +30.319376352131613, 3.4858740983902434, 0.05, +30.493689734288264, 3.4862676431330297, 0.05, +30.66802248638391, 3.486655041912924, 0.05, +30.842374313012723, 3.4870365325762465, 0.05, +31.01674492641677, 3.487412268080933, 0.05, +31.191134049111852, 3.487782453901627, 0.05, +31.36554141180033, 3.4881472537695255, 0.05, +31.539966755912143, 3.4885068822362872, 0.05, +31.714409829256464, 3.4888614668864473, 0.05, +31.888870389323476, 3.4892112013402232, 0.05, +32.06334820375138, 3.489556288558167, 0.05, +32.23784304504589, 3.4898968258902334, 0.05, +32.412354696152704, 3.4902330221362265, 0.05, +32.586882947903874, 3.4905650350233652, 0.05, +32.76142759807655, 3.4908930034535284, 0.05, +32.93598845286084, 3.4912170956858217, 0.05, +33.110565325430656, 3.491537451396282, 0.05, +33.28515803620791, 3.4918542155450876, 0.05, +33.45976641345935, 3.492167545028704, 0.05, +33.63439029254243, 3.492477581661537, 0.05, +33.80902951509113, 3.4927844509740913, 0.05, +33.9836839304751, 3.4930883076793626, 0.05, +34.15835339413333, 3.493389273164516, 0.05, +34.33303776886453, 3.4936874946240346, 0.05, +34.507736923667686, 3.4939830960631935, 0.05, +34.6824507334659, 3.494276195964201, 0.05, +34.85717908069242, 3.4945669445304, 0.05, +35.031921852839844, 3.4948554429484435, 0.05, +35.206678944622304, 3.4951418356491923, 0.05, +35.38145025627118, 3.4954262329775063, 0.05, +35.55623569422681, 3.4957087591125715, 0.05, +35.73103517070749, 3.49598952961373, 0.05, +35.90584860379638, 3.4962686617777794, 0.05, +36.08067591795522, 3.4965462831767806, 0.05, +36.25551704267531, 3.4968224944017616, 0.05, +36.43037191346879, 3.4970974158696375, 0.05, +36.60524047168438, 3.4973711643119176, 0.05, +36.780122664047866, 3.497643847269645, 0.05, +36.95501844290059, 3.4979155770544517, 0.05, +37.12992776613947, 3.4981864647775684, 0.05, +37.30485059716698, 3.498456620550323, 0.05, +37.47978690485196, 3.4987261536996375, 0.05, +37.65473666344547, 3.4989951718700762, 0.05, +37.82969985270539, 3.4992637851983948, 0.05, +38.00467645783728, 3.4995321026377955, 0.05, +38.17966646936153, 3.4998002304850773, 0.05, +38.35466988320649, 3.500068276899194, 0.05, +38.52968670072683, 3.500336350406809, 0.05, +38.704716928613266, 3.5006045577287748, 0.05, +38.87976057895803, 3.500873006895271, 0.05, +39.0548176693953, 3.5011418087453854, 0.05, +39.22988822279469, 3.501411067987811, 0.05, +39.40497226751098, 3.5016808943257196, 0.05, +39.58006983738511, 3.501951397482675, 0.05, +39.755180971743314, 3.502222687164062, 0.05, +39.93030571541388, 3.5024948734113357, 0.05, +40.105444118742305, 3.502768066568476, 0.05, +40.28059623767777, 3.503042378709319, 0.05, +40.45576213420273, 3.503317930499211, 0.05, +40.63094187497205, 3.5035948153864873, 0.05, +40.80613553365065, 3.503873173571932, 0.05, +40.981343188489674, 3.5041530967805934, 0.05, +41.15656492437385, 3.5044347176836426, 0.05, +41.3318008320365, 3.504718153252923, 0.05, +41.5070510080569, 3.505003520407935, 0.05, +41.682315554848735, 3.5052909358367192, 0.05, +41.85759458100128, 3.5055805230508983, 0.05, +42.03288820205996, 3.505872421173596, 0.05, +42.208196539062655, 3.5061667400539913, 0.05, +42.383519719543706, 3.506463609621049, 0.05, +42.55885787772078, 3.5067631635415135, 0.05, +42.734211155145246, 3.50706554848932, 0.05, +42.909579698365526, 3.5073708644055865, 0.05, +43.08496366218358, 3.5076792763610873, 0.05, +43.2603632079712, 3.507990915752378, 0.05, +43.435778503353816, 3.508305907652201, 0.05, +43.61120972537281, 3.5086244403798887, 0.05, +43.78665705555593, 3.508946603662396, 0.05, +43.96212068425569, 3.5092725739951667, 0.05, +44.13760081055867, 3.5096025260597856, 0.05, +44.31309763879861, 3.5099365647986724, 0.05, +44.48861138270951, 3.5102748782178907, 0.05, +44.66414226411938, 3.5106176281973402, 0.05, +44.839690512364335, 3.5109649648991956, 0.05, +45.01525636625697, 3.5113170778526395, 0.05, +45.19084007118503, 3.5116740985611585, 0.05, +45.366441883473165, 3.5120362457627308, 0.05, +45.542062066239716, 3.512403655330952, 0.05, +45.71770089372932, 3.5127765497922048, 0.05, +45.893358647058285, 3.513155066579284, 0.05, +46.06903561847308, 3.5135394282959274, 0.05, +46.24473210871996, 3.513929804937551, 0.05, +46.42044842984977, 3.51432642259623, 0.05, +46.59618490096256, 3.514729422255786, 0.05, +46.77194185485229, 3.5151390777944895, 0.05, +46.94771963141289, 3.515555531211975, 0.05, +47.12351858288397, 3.515979029421562, 0.05, +47.299339072333126, 3.5164097889832235, 0.05, +47.47518147169741, 3.516847987285712, 0.05, +47.65104616501502, 3.5172938663520967, 0.05, +47.826933549057685, 3.5177476808533505, 0.05, +48.00284403057182, 3.5182096302827683, 0.05, +48.17877802632433, 3.5186799150501433, 0.05, +48.35473596606658, 3.5191587948449263, 0.05, +48.53071829334462, 3.5196465455607786, 0.05, +48.70672546038347, 3.5201433407769547, 0.05, +48.882757932235194, 3.5206494370345442, 0.05, +49.058816188377655, 3.5211651228492857, 0.05, +49.234900716900164, 3.5216905704501227, 0.05, +49.41101202046181, 3.522226071232996, 0.05, +49.58715061401609, 3.522771871085593, 0.05, +49.763317022838386, 3.523328176445918, 0.05, +49.93951178744208, 3.5238952920738447, 0.05, +50.115735456903074, 3.5244733892199522, 0.05, +50.29198859638495, 3.525062789637493, 0.05, +50.468271779950896, 3.5256636713190637, 0.05, +50.64458559451347, 3.5262762912514733, 0.05, +50.82093063832434, 3.5269008762174057, 0.05, +50.99730752024683, 3.527537638449668, 0.05, +51.17371686258474, 3.528186846758306, 0.05, +51.35015929402425, 3.5288486287902954, 0.05, +51.52663545539527, 3.5295232274203956, 0.05, +51.7031459974607, 3.530210841308524, 0.05, +51.87969157741899, 3.530911599165764, 0.05, +52.0562728630969, 3.531625713558294, 0.05, +52.232890527187635, 3.5323532818146344, 0.05, +52.409545247011344, 3.533094396474238, 0.05, +52.58623770864691, 3.5338492327113658, 0.05, +52.76296859836997, 3.534617794461162, 0.05, +52.939738606939436, 3.53540017138921, 0.05, +53.11654842137749, 3.5361962887610834, 0.05, +53.29339873383237, 3.537006249097565, 0.05, +53.47029022771294, 3.537829877611319, 0.05, +53.64722358474207, 3.5386671405827608, 0.05, +53.82419947764082, 3.539517857974875, 0.05, +54.00121856954943, 3.5403818381722063, 0.05, +54.1782815108965, 3.5412588269413803, 0.05, +54.355388936836114, 3.542148518792405, 0.05, +54.53254146389009, 3.5430505410795115, 0.05, +54.709739687027756, 3.5439644627533293, 0.05, +54.88698417513871, 3.544889762219079, 0.05, +55.06427546693246, 3.5458258358750574, 0.05, +55.24161407051731, 3.546772071697043, 0.05, +55.41900045159066, 3.5477276214671054, 0.05, +55.59643503819174, 3.548691732021602, 0.05, +55.773918209693186, 3.549663430028801, 0.05, +55.95145029181639, 3.550641642464202, 0.05, +56.129031555367646, 3.5516252710250886, 0.05, +56.30666220732181, 3.5526130390832042, 0.05, +56.48434238750847, 3.5536036037332295, 0.05, +56.66207216201635, 3.5545954901576127, 0.05, +56.839851518609834, 3.555587131869683, 0.05, +57.01768035855512, 3.5565767989057364, 0.05, +57.19555849345939, 3.557562698085439, 0.05, +57.37348563880232, 3.558542906858675, 0.05, +57.55146140877, 3.55951539935359, 0.05, +57.729485311185606, 3.5604780483120972, 0.05, +57.90755674019466, 3.5614285801810777, 0.05, +58.08567497511649, 3.562364698436699, 0.05, +58.26383917442232, 3.5632839861166774, 0.05, +58.44204837229738, 3.5641839575011307, 0.05, +58.62030147434219, 3.5650620408962683, 0.05, +58.79859725822958, 3.5659156777477596, 0.05, +58.97693436850403, 3.566742205489074, 0.05, +59.15531131836989, 3.5675389973171816, 0.05, +59.333726488069985, 3.5683033940019424, 0.05, +59.51217812750878, 3.5690327887759388, 0.05, +59.690664357085964, 3.569724591543677, 0.05, +59.869183171665334, 3.5703762915873454, 0.05, +60.04773244454686, 3.5709854576305236, 0.05, +60.226309933044945, 3.5715497699617003, 0.05, +60.40491328495393, 3.5720670381795836, 0.05, +60.58354004592099, 3.572535219341311, 0.05, +60.762187668953146, 3.5729524606430467, 0.05, +60.94085352252317, 3.573317071400438, 0.05, +61.119534903540554, 3.5736276203476107, 0.05, +61.29822904682758, 3.5738828657404955, 0.05, +61.47693313629936, 3.574081789435534, 0.05, +61.65564432043656, 3.574223682743988, 0.05, +61.8343597243465, 3.574308078198765, 0.05, +62.013076461535235, 3.5743347437746835, 0.05, +62.19179164968372, 3.5743037629697048, 0.05, +62.37050241961046, 3.5742153985346947, 0.05, +62.54920593700316, 3.5740703478540268, 0.05, +62.72789940643989, 3.573869388734642, 0.05, +62.90658008600131, 3.573613591228456, 0.05, +63.08524530433603, 3.5733043666943187, 0.05, +63.26389246618283, 3.572943236936037, 0.05, +63.442519061302825, 3.57253190239983, 0.05, +63.62112268071358, 3.5720723882152154, 0.05, +63.79970101462314, 3.571566678191126, 0.05, +63.978251871582586, 3.571017139188948, 0.05, +64.15677317077487, 3.57042598384554, 0.05, +64.33526296304521, 3.5697958454069383, 0.05, +64.51371941839446, 3.5691291069850437, 0.05, +64.69214084070141, 3.5684284461389835, 0.05, +64.87052565976326, 3.567696381236891, 0.05, +65.04887244177323, 3.5669356401993566, 0.05, +65.22717988176669, 3.566148799869192, 0.05, +65.40544680274658, 3.565338419597748, 0.05, +65.58367216096659, 3.5645071643999975, 0.05, +65.76185503300404, 3.5636574407490955, 0.05, +65.9399946193909, 3.562791727737223, 0.05, +66.11809023738708, 3.5619123599235647, 0.05, +66.29614132019452, 3.5610216561487427, 0.05, +66.47414740533522, 3.5601217028139986, 0.05, +66.65210814061989, 3.5592147056933174, 0.05, +66.83002326548474, 3.5583024972969395, 0.05, +67.00789261864585, 3.5573870632222673, 0.05, +67.18571612003423, 3.556470027767351, 0.05, +67.36349378048307, 3.5555532089768715, 0.05, +67.54122567388988, 3.5546378681362425, 0.05, +67.71891195779196, 3.553725678041469, 0.05, +67.89655284600623, 3.5528177642854732, 0.05, +68.07414861973983, 3.551915474672012, 0.05, +68.25169961238556, 3.5510198529146195, 0.05, +68.42920619927268, 3.550131737742305, 0.05, +68.6066688145771, 3.5492523060883516, 0.05, +68.78408792682187, 3.548382244895331, 0.05, +68.96146403158963, 3.547522095355251, 0.05, +69.13879767425175, 3.546672853242391, 0.05, +69.3160894109699, 3.5458347343627854, 0.05, +69.49333983680647, 3.5450085167316123, 0.05, +69.67054956126034, 3.5441944890773724, 0.05, +69.84771920605685, 3.543392895930111, 0.05, +70.02484942129641, 3.542604304791097, 0.05, +70.20194085310922, 3.5418286362562323, 0.05, +70.37899417282657, 3.5410663943469602, 0.05, +70.55601004730411, 3.5403174895508847, 0.05, +70.73298915574861, 3.5395821688899534, 0.05, +70.90993217752003, 3.5388604354284907, 0.05, +71.08683978964636, 3.5381522425266243, 0.05, +71.26371267961686, 3.537457799409871, 0.05, +71.44055152039249, 3.5367768155127486, 0.05, +71.61735699243486, 3.5361094408474867, 0.05, +71.79412976434723, 3.535455438247287, 0.05, +71.9708705044665, 3.534814802385345, 0.05, +72.1475798712292, 3.5341873352538813, 0.05, +72.32425852053431, 3.5335729861022127, 0.05, +72.50090709164864, 3.5329714222865602, 0.05, +72.67752622719382, 3.5323827109035415, 0.05, +72.85411655711388, 3.5318065984010625, 0.05, +73.03067868596695, 3.53124257706123, 0.05, +73.20721323564595, 3.5306909935800794, 0.05, +73.38372080134411, 3.5301513139630667, 0.05, +73.56020197055884, 3.5296233842945406, 0.05, +73.73665731518776, 3.5291068925784077, 0.05, +73.91308740601444, 3.5286018165336195, 0.05, +74.08949279856151, 3.5281078509413364, 0.05, +74.26587403702263, 3.5276247692222706, 0.05, +74.44223165354117, 3.5271523303709604, 0.05, +74.61856616418375, 3.5266902128514115, 0.05, +74.79487808959529, 3.5262385082308056, 0.05, +74.97116792554432, 3.525796718980573, 0.05, +75.14743615419779, 3.5253645730693903, 0.05, +75.32368326042601, 3.5249421245643147, 0.05, +75.49990971001436, 3.5245289917672253, 0.05, +75.67611595886493, 3.5241249770113274, 0.05, +75.85230245273898, 3.5237298774811125, 0.05, +76.02846962708963, 3.5233434870131277, 0.05, +76.20461790239568, 3.5229655061209924, 0.05, +76.38074769559236, 3.522595863933724, 0.05, +76.55685941378808, 3.5222343639143805, 0.05, +76.7329534519477, 3.52188076319243, 0.05, +76.90903019523063, 3.521534865658588, 0.05, +77.08509001934529, 3.521196482293233, 0.05, +77.61345169875413, 10.567233588177045, 0.05, +77.78885137603099, 3.507993545537108, 0.05, +77.96425438576956, 3.5080601947713643, 0.05, +78.13966077515146, 3.5081277876376773, 0.05, +78.31507058495257, 3.508196196022143, 0.05, +78.49048386334763, 3.5082655679013564, 0.05, +78.66590064648327, 3.5083356627126205, 0.05, +78.84132098714622, 3.5084068132591044, 0.05, +79.01674492506731, 3.5084787584218837, 0.05, +79.19217251066306, 3.5085517119147736, 0.05, +79.36760378833826, 3.5086255535041375, 0.05, +79.54303880572847, 3.5087003478043988, 0.05, +79.71847761732687, 3.5087762319680214, 0.05, +79.89392026492781, 3.5088529520188136, 0.05, +80.06936680143436, 3.508930730130734, 0.05, +80.24481728431245, 3.5090096575616974, 0.05, +80.42027175594791, 3.5090894327092506, 0.05, +80.59573027018733, 3.5091702847883837, 0.05, +80.77119288864624, 3.5092523691782356, 0.05, +80.94665965840535, 3.5093353951823434, 0.05, +81.12213063915665, 3.509419615025927, 0.05, +81.29760588684944, 3.5095049538558207, 0.05, +81.47308545818694, 3.5095914267499753, 0.05, +81.64856940965866, 3.509679029434432, 0.05, +81.82405780879529, 3.5097679827324884, 0.05, +81.99955070564516, 3.509857936997405, 0.05, +82.17504816863813, 3.5099492598592708, 0.05, +82.35055025722028, 3.5100417716430865, 0.05, +82.52605703191422, 3.51013549387887, 0.05, +82.70156856649922, 3.510230691699984, 0.05, +82.87708492373562, 3.5103271447281625, 0.05, +83.0526061659978, 3.5104248452434708, 0.05, +83.2281323643302, 3.5105239666477277, 0.05, +83.40366358914599, 3.5106244963159776, 0.05, +83.57919990763854, 3.5107263698508153, 0.05, +83.75474139478392, 3.510829742907604, 0.05, +83.9302881281852, 3.510934668025578, 0.05, +84.10584017245746, 3.511040885445272, 0.05, +84.28139760907969, 3.5111487324444917, 0.05, +84.4569605133458, 3.511258085322423, 0.05, +84.6325289633021, 3.5113689991257284, 0.05, +84.80810304042124, 3.511481542383126, 0.05, +84.98368282420084, 3.5115956755918756, 0.05, +85.15926839656443, 3.5117114472717916, 0.05, +85.33485984446277, 3.5118289579667055, 0.05, +85.51045725025982, 3.511948115941005, 0.05, +85.68606070354545, 3.512069065712643, 0.05, +85.86167028941841, 3.512191717459209, 0.05, +86.03728610156159, 3.512316242863429, 0.05, +86.21290823071088, 3.512442582985831, 0.05, +86.38853677081275, 3.5125708020374673, 0.05, +86.56417181394421, 3.5127008626294223, 0.05, +86.73981345889054, 3.5128328989264994, 0.05, +86.91546180165123, 3.512966855213858, 0.05, +87.09111694869549, 3.513102940885198, 0.05, +87.26677899289818, 3.513240884053939, 0.05, +87.44244804463196, 3.513381034675577, 0.05, +87.61812420945904, 3.5135232965417575, 0.05, +87.7938075877651, 3.513667566121249, 0.05, +87.96949829787343, 3.513814202166415, 0.05, +88.14519644685157, 3.513962979562919, 0.05, +88.32090214646885, 3.514113992345778, 0.05, +88.4966155126053, 3.514267322729117, 0.05, +88.67233666187671, 3.514422985428212, 0.05, +88.84806571430495, 3.514581048564774, 0.05, +89.02380279572151, 3.5147416283312185, 0.05, +89.19954802363219, 3.514904558213508, 0.05, +89.37530152567011, 3.5150700407583546, 0.05, +89.5510634280297, 3.5152380471919917, 0.05, +89.72683386142221, 3.5154086678500143, 0.05, +89.90261295924914, 3.5155819565385373, 0.05, +90.07840085559943, 3.515757927005817, 0.05, +90.25419769019686, 3.5159366919487676, 0.05, +90.43000359509735, 3.516118098009811, 0.05, +90.60581871878786, 3.516302473810197, 0.05, +90.78164319944517, 3.5164896131463124, 0.05, +90.95747719060101, 3.5166798231169576, 0.05, +91.13332083104501, 3.5168728088801253, 0.05, +91.30917428123968, 3.5170690038933476, 0.05, +91.48503769158418, 3.51726820689003, 0.05, +91.66091121996442, 3.517470567604693, 0.05, +91.83679501888345, 3.5176759783806193, 0.05, +92.01268925563114, 3.51788473495399, 0.05, +92.18859409312223, 3.518096749821802, 0.05, +92.36450970090057, 3.5183121555666634, 0.05, +92.54043624219157, 3.5185308258201573, 0.05, +92.71637389177553, 3.518752991679225, 0.05, +92.89232282223334, 3.5189786091560147, 0.05, +93.06828321324176, 3.5192078201683406, 0.05, +93.24425524434038, 3.5194406219725773, 0.05, +93.420239095367, 3.519677020532214, 0.05, +93.59623495288142, 3.519917150288409, 0.05, +93.77224300429042, 3.520161028179888, 0.05, +93.94826344206389, 3.5204087554693864, 0.05, +94.12429645563752, 3.5206602714725936, 0.05, +94.30034224143124, 3.5209157158743003, 0.05, +94.47640099712108, 3.5211751137967386, 0.05, +94.65247292189689, 3.5214384955161937, 0.05, +94.82855822579761, 3.521706078014316, 0.05, +95.00465710546597, 3.5219775933671515, 0.05, +95.18076977371089, 3.522253364898491, 0.05, +95.35689643640988, 3.522533253979852, 0.05, +95.53303731318006, 3.5228175354035267, 0.05, +95.70919261179584, 3.5231059723156704, 0.05, +95.88536255017226, 3.523398767528464, 0.05, +96.06154734795116, 3.5236959555780625, 0.05, +96.23774722904604, 3.5239976218974634, 0.05, +96.41396241236637, 3.524303666406867, 0.05, +96.5901931223206, 3.524614199084484, 0.05, +96.76643958475981, 3.5249292487841437, 0.05, +96.94270202686917, 3.5252488421872568, 0.05, +97.11898067702955, 3.525573003207575, 0.05, +97.29527576464977, 3.5259017524043044, 0.05, +97.47158751996955, 3.5262351063954847, 0.05, +97.64791617383368, 3.5265730772826567, 0.05, +97.82426195743803, 3.52691567208704, 0.05, +98.00062510253956, 3.5272629020306647, 0.05, +98.17700584447672, 3.527614838743406, 0.05, +98.35340441008071, 3.527971312079673, 0.05, +98.52982102899645, 3.5283323783147478, 0.05, +98.70625593612772, 3.5286981426251973, 0.05, +98.88270935587599, 3.5290683949655333, 0.05, +99.05918151784606, 3.529443239401404, 0.05, +99.23567264312325, 3.529822505543978, 0.05, +99.41218296127202, 3.5302063629753335, 0.05, +99.5887126874193, 3.5305945229455746, 0.05, +99.76526203870671, 3.5309870257481193, 0.05, +99.94183122834883, 3.531383792842584, 0.05, +100.11842046450863, 3.53178472319592, 0.05, +100.29502995568055, 3.532189823438189, 0.05, +100.47165989580836, 3.532598802556158, 0.05, +100.6483104807976, 3.533011699784983, 0.05, +100.82498189478483, 3.5334282797445087, 0.05, +101.00167431960847, 3.5338484964728014, 0.05, +101.178387928079, 3.534272169410651, 0.05, +101.35512288324308, 3.534699103281637, 0.05, +101.53187933764399, 3.5351290880180506, 0.05, +101.70865743753875, 3.535561997895194, 0.05, +101.88545731547809, 3.5359975587868444, 0.05, +102.06227909830105, 3.5364356564591763, 0.05, +102.239122892904, 3.5368758920592978, 0.05, +102.41598879899276, 3.5373181217750793, 0.05, +102.59287690052697, 3.537762030684309, 0.05, +102.7697872635087, 3.5382072596346137, 0.05, +102.94671994522243, 3.5386536342745343, 0.05, +103.12367498186723, 3.539100732895838, 0.05, +103.30065239180236, 3.5395481987026356, 0.05, +103.47765217878957, 3.539995739744204, 0.05, +103.6546743236917, 3.540442898042471, 0.05, +103.83171878786332, 3.5408892834325227, 0.05, +104.00878551227962, 3.541334488325769, 0.05, +104.1858744175615, 3.5417781056375373, 0.05, +104.3629854001046, 3.5422196508621777, 0.05, +104.54011833140558, 3.542658626019529, 0.05, +104.71727305742074, 3.5430945203032653, 0.05, +104.89444940325542, 3.543526916693503, 0.05, +105.07164716180503, 3.543955170992182, 0.05, +105.24886610511422, 3.5443788661838425, 0.05, +105.42610597305833, 3.5447973588820605, 0.05, +105.60336647773086, 3.5452100934506623, 0.05, +105.78064730307055, 3.545616506793873, 0.05, +105.95794810491323, 3.546016036853413, 0.05, +106.13526850504326, 3.5464080026006966, 0.05, +106.31260809634331, 3.546791826001208, 0.05, +106.48996644535842, 3.5471669803021624, 0.05, +106.66734308009417, 3.5475326947150267, 0.05, +106.84473750397643, 3.547888477645132, 0.05, +107.02214918500665, 3.548233620604569, 0.05, +107.19957756319621, 3.548567563791219, 0.05, +107.37702204577946, 3.548889651664905, 0.05, +107.55448201001612, 3.5491992847331604, 0.05, +107.73195680508435, 3.5494959013647724, 0.05, +107.90944574713566, 3.5497788410261415, 0.05, +108.08694812628582, 3.5500475830032294, 0.05, +108.26446320453174, 3.550301564918236, 0.05, +108.4419902165402, 3.5505402401694006, 0.05, +108.61952837056178, 3.55076308043145, 0.05, +108.79707685078094, 3.5509696043830528, 0.05, +108.97463481854396, 3.551159355260338, 0.05, +109.15220141323225, 3.551331893765633, 0.05, +109.3297757536967, 3.551486809289046, 0.05, +109.50735693989373, 3.5516237239405535, 0.05, +109.684944055541, 3.551742312945495, 0.05, +109.86253616872641, 3.55184226370825, 0.05, +110.04013233646948, 3.5519233548616045, 0.05, +110.21773160217182, 3.551985314046818, 0.05, +110.39533300172127, 3.5520279909889316, 0.05, +110.57293556503613, 3.552051266297296, 0.05, +110.75053831693124, 3.552055037902298, 0.05, +110.92814027851617, 3.552039231698624, 0.05, +111.10574047205016, 3.5520038706798904, 0.05, +111.2833379226359, 3.5519490117146244, 0.05, +111.46093165829437, 3.5518747131694894, 0.05, +111.6385207139281, 3.5517811126746217, 0.05, +111.81610413328033, 3.551668387044764, 0.05, +111.99368097047679, 3.5515367439291454, 0.05, +112.17125029334129, 3.5513864572900715, 0.05, +112.34881118300163, 3.551217793206819, 0.05, +112.52636273836993, 3.551031107365814, 0.05, +112.70390407642836, 3.5508267611685866, 0.05, +112.8814343341703, 3.550605154838679, 0.05, +113.05895267033902, 3.5503667233746894, 0.05, +113.23645826715999, 3.5501119364193627, 0.05, +113.41395033104597, 3.549841277719477, 0.05, +113.59142809449956, 3.549555269071923, 0.05, +113.76889081681468, 3.5492544463022115, 0.05, +113.94633778518443, 3.5489393673950254, 0.05, +114.12376831575543, 3.5486106114199676, 0.05, +114.3011817538255, 3.548268761401379, 0.05, +114.47857747525873, 3.5479144286646895, 0.05, +114.65595488622235, 3.5475482192724352, 0.05, +114.83331342370941, 3.5471707497413187, 0.05, +115.01065255611111, 3.546782648033958, 0.05, +115.1879717829348, 3.546384536473577, 0.05, +115.36527063549886, 3.5459770512814206, 0.05, +115.54254867532318, 3.545560796486197, 0.05, +115.71980549594609, 3.5451364124583873, 0.05, +115.89704072125521, 3.544704506182304, 0.05, +116.07425400463998, 3.544265667695423, 0.05, +116.25144503086544, 3.5438205245092966, 0.05, +116.42861351300111, 3.5433696427134436, 0.05, +116.60575919307024, 3.542913601382728, 0.05, +116.78288184112056, 3.5424529610061715, 0.05, +116.95998125432409, 3.5419882640707794, 0.05, +117.1370572572332, 3.541520058182115, 0.05, +117.31410969899194, 3.5410488351749696, 0.05, +117.49113845481385, 3.5405751164383017, 0.05, +117.66814342285576, 3.5400993608384006, 0.05, +117.84512452508336, 3.539622044551881, 0.05, +118.02208170594643, 3.5391436172612627, 0.05, +118.19901493013852, 3.538664483841776, 0.05, +118.37592418414837, 3.5381850801970995, 0.05, +118.55280947277352, 3.5377057725029193, 0.05, +118.72967081973498, 3.5372269392293068, 0.05, +118.90650826660314, 3.536748937363312, 0.05, +119.08332187065263, 3.536272080989767, 0.05, +119.26011170664071, 3.53579671976177, 0.05, +119.4368778615103, 3.5353230973917897, 0.05, +119.61362043847055, 3.5348515392051163, 0.05, +119.79033955341188, 3.53438229882672, 0.05, +119.96703533381296, 3.5339156080216148, 0.05, +120.1437079189048, 3.533451701836701, 0.05, +120.32035745811515, 3.5329907842070485, 0.05, +120.49698411184507, 3.532533074598246, 0.05, +120.67358804862238, 3.532078735546189, 0.05, +120.8501694455785, 3.531627939122444, 0.05, +121.02672848767989, 3.53118084202789, 0.05, +121.20326536743349, 3.5307375950718645, 0.05, +121.37978028215859, 3.530298294502144, 0.05, +121.55627343601566, 3.5298630771414343, 0.05, +121.73274503931923, 3.5294320660713856, 0.05, +121.90919530556572, 3.5290053249299156, 0.05, +122.08562445268419, 3.5285829423695136, 0.05, +122.26203270254416, 3.52816499719936, 0.05, +122.43842028039083, 3.5277515569332456, 0.05, +122.61478741282289, 3.5273426486411963, 0.05, +122.79113432959005, 3.5269383353430888, 0.05, +122.96746126316908, 3.526538671580597, 0.05, +123.14376844623548, 3.526143661328015, 0.05, +123.32005611264162, 3.525753328122736, 0.05, +123.49632449762431, 3.5253676996539642, 0.05, +123.67257383669195, 3.524986781352636, 0.05, +123.848804364724, 3.524610560640903, 0.05, +124.02501631740208, 3.5242390535613732, 0.05, +124.20120992978421, 3.5238722476425837, 0.05, +124.3773854370011, 3.5235101443377213, 0.05, +124.55354307057509, 3.523152671479833, 0.05, +124.7296830648007, 3.5227998845120156, 0.05, +124.90580564980074, 3.522451700000834, 0.05, +125.0819110563755, 3.522108131495175, 0.05, +125.25799951098355, 3.5217690921610614, 0.05, +125.43407124198252, 3.5214346199794093, 0.05, +125.61012647272005, 3.5211046147505214, 0.05, +125.78616542628144, 3.520779071227804, 0.05, +125.96218832368086, 3.520457947988375, 0.05, +126.13819538169307, 3.52014116024418, 0.05, +126.31418681609341, 3.5198286880070238, 0.05, +126.49016284192089, 3.519520516549517, 0.05, +126.66612367015173, 3.5192165646169453, 0.05, +126.84206950781994, 3.5189167533642842, 0.05, +127.0180005607595, 3.5186210587911098, 0.05, +127.19391703366558, 3.518329458121591, 0.05, +127.36981912697041, 3.518041866096651, 0.05, +127.54570703704917, 3.517758201575133, 0.05, +127.72158095926916, 3.517478444399879, 0.05, +127.89744108683186, 3.517202551253898, 0.05, +128.07328760840375, 3.5169304314375442, 0.05, +128.24912071067206, 3.5166620453665134, 0.05, +128.42494057778737, 3.5163973423059502, 0.05, +128.60074738960904, 3.516136236433732, 0.05, +128.77654132530455, 3.5158787139099155, 0.05, +128.95232255897173, 3.515624673343354, 0.05, +129.12809126370965, 3.515374094758351, 0.05, +129.30384760915146, 3.5151269088364026, 0.05, +129.47959176108668, 3.5148830387042445, 0.05, +129.65532388306295, 3.5146424395254807, 0.05, +129.8310441373789, 3.5144050863191816, 0.05, +130.00675268122396, 3.514170876900769, 0.05, +130.1824496708341, 3.5139397922026414, 0.05, +130.3581352578663, 3.5137117406439913, 0.05, +130.53380959254702, 3.5134866936138653, 0.05, +130.70947282241488, 3.5132645973571246, 0.05, +130.88512509194103, 3.5130453905232915, 0.05, +131.0607665426592, 3.5128290143633993, 0.05, +131.23639731395784, 3.51261542597279, 0.05, +131.41201754244184, 3.5124045696801565, 0.05, +131.5876273619245, 3.512196389652802, 0.05, +131.76322690414491, 3.511990844408424, 0.05, +131.9388162983849, 3.511787884799603, 0.05, +132.1143956700247, 3.5115874327959986, 0.05, +132.2899651437533, 3.51138947457213, 0.05, +132.46552484055744, 3.5111939360827087, 0.05, +132.6410748803645, 3.5110007961413245, 0.05, +132.81661537974364, 3.510809987582526, 0.05, +132.9921464528551, 3.510621462229432, 0.05, +133.16766821209214, 3.5104351847408424, 0.05, +133.34318076672164, 3.5102510925901553, 0.05, +133.51868422527542, 3.5100691710753456, 0.05, +133.694178692122, 3.5098893369317246, 0.05, +133.8696642713699, 3.5097115849583838, 0.05, +134.04514106329563, 3.5095358385143203, 0.05, +134.2206091677519, 3.5093620891252724, 0.05, +134.39606868054292, 3.509190255820667, 0.05, +134.57151969662561, 3.509020321653541, 0.05, +134.7469623098699, 3.5088522648857814, 0.05, +134.92239660963557, 3.5086859953132055, 0.05, +135.09782268525683, 3.5085215124249927, 0.05, +135.27324062328185, 3.508358760500657, 0.05, +135.4486505093278, 3.508197720919034, 0.05, +135.62405242589776, 3.508038331399619, 0.05, +135.79944645409006, 3.5078805638459474, 0.05, +135.97483267396157, 3.50772439743024, 0.05, +136.15021116172906, 3.5075697553498757, 0.05, +136.3255819942461, 3.507416650340905, 0.05, +136.5009452454456, 3.5072650239895666, 0.05, +136.67630098686055, 3.5071148282989544, 0.05, +136.8516492901781, 3.506966066350834, 0.05, +137.0269902233301, 3.5068186630401725, 0.05, +137.20232385389417, 3.506672611281441, 0.05, +137.37765024732042, 3.5065278685250423, 0.05, +137.55296946856626, 3.5063844249168685, 0.05, +137.72828157867897, 3.5062422022541537, 0.05, +137.90358663949556, 3.5061012163317686, 0.05, +138.07888471032663, 3.5059614166215316, 0.05, +138.25417584830979, 3.5058227596629044, 0.05, +138.42945727301, 3.5056284940040765, 0.05, +138.6047199414165, 3.505253368129875, 0.05, +138.77995138978974, 3.50462896746486, 0.05, +138.9551391542499, 3.503755289203424, 0.05, +139.13027077090808, 3.502632333163267, 0.05, +139.30533377750223, 3.5012601318831473, 0.05, +139.4803157106849, 3.4996386636531644, 0.05, +139.65520410846938, 3.497767955689485, 0.05, +139.8299865092541, 3.495648015694422, 0.05, +140.0046504515471, 3.4932788458598365, 0.05, +140.17918347430341, 3.4906604551263154, 0.05, +140.3535731170086, 3.4877928541036156, 0.05, +140.52780691852885, 3.4846760304051725, 0.05, +140.70187241958428, 3.4813100211083974, 0.05, +140.8757571600993, 3.4776948103006813, 0.05, +141.04944868102538, 3.47383041852139, 0.05, +141.2229345228037, 3.469716835566559, 0.05, +141.39620222708277, 3.4653540855811293, 0.05, +141.56923933537206, 3.4607421657861024, 0.05, +141.74203338979873, 3.4558810885334887, 0.05, +141.91457193196686, 3.45077084336235, 0.05, +142.0868425050695, 3.4454114620531526, 0.05, +142.25883265143614, 3.439802927332215, 0.05, +142.4305299146403, 3.433945264083149, 0.05, +142.60192183813047, 3.42783846980334, 0.05, +142.77299596548977, 3.4214825471860038, 0.05, +142.94373984084845, 3.414877507173682, 0.05, +143.1141410089238, 3.408023361507131, 0.05, +143.2841870145547, 3.4009201126180466, 0.05, +143.4538654025602, 3.3935677601103245, 0.05, +143.62316371848544, 3.385966318504693, 0.05, +143.79206950842914, 3.378115798873958, 0.05, +143.96057031852985, 3.3700162020143654, 0.05, +144.12865369516982, 3.361667532799309, 0.05, +144.2963071855463, 3.353069807530069, 0.05, +144.46351833668743, 3.3442230228222507, 0.05, +144.6302746965937, 3.3351271981251838, 0.05, +144.79656381327777, 3.3257823336815204, 0.05, +144.9623732353113, 3.316188440670885, 0.05, +145.12769051155402, 3.306345524854618, 0.05, +145.29250319154679, 3.2962535998552553, 0.05, +145.45679882500514, 3.2859126691668696, 0.05, +145.6205649622903, 3.275322745703415, 0.05, +145.7837891540934, 3.264483836062164, 0.05, +145.9464589517112, 3.2533959523561164, 0.05, +146.10856190685206, 3.242059102816899, 0.05, +146.27008557172573, 3.2304732974735506, 0.05, +146.4310174990823, 3.2186385471311527, 0.05, +146.5913452421773, 3.206554861900325, 0.05, +146.75105635483263, 3.194222253106509, 0.05, +146.91013839140706, 3.1816407314888933, 0.05, +147.06857890683094, 3.1688103084776613, 0.05, +147.22636545660396, 3.155730995460455, 0.05, +147.38348559683723, 3.1424028046656916, 0.05, +147.53992688421698, 3.1288257475951946, 0.05, +147.69567687610893, 3.1149998378387944, 0.05, +147.85072313042366, 3.10092508629454, 0.05, +148.00505320586353, 3.0866015087976577, 0.05, +148.15865466161617, 3.0720291150526804, 0.05, +148.31151505764052, 3.057207920487229, 0.05, +148.46362195455904, 3.0421379383703666, 0.05, +148.6149629136992, 3.0268191828031545, 0.05, +148.76552549726333, 3.0112516712824755, 0.05, +148.91529726780382, 2.995435410809799, 0.05, +149.06426578893127, 2.9793704225489783, 0.05, +149.21241862496026, 2.9630567205797633, 0.05, +149.35974334080242, 2.946494316843098, 0.05, +149.50622750240547, 2.9296832320608193, 0.05, +149.65185867624191, 2.9126234767288173, 0.05, +149.79662442979338, 2.895315071029118, 0.05, +149.94051233119515, 2.8777580280353914, 0.05, +150.08350994957496, 2.8599523675962804, 0.05, +150.2256048545282, 2.8418980990650042, 0.05, +150.36678461724202, 2.823595254276512, 0.05, +150.5070368088505, 2.805043832169438, 0.05, +150.64634900183734, 2.7862438597369477, 0.05, +150.78470876953148, 2.7671953538829084, 0.05, +150.92210368608258, 2.747898331021902, 0.05, +151.05852132642661, 2.7283528068806526, 0.05, +151.1939492665526, 2.7085588025198275, 0.05, +151.32837508332454, 2.6885163354385755, 0.05, +151.46178635442158, 2.668225421940359, 0.05, +151.59417065833523, 2.6476860782731997, 0.05, +151.72551557455702, 2.6268983244358477, 0.05, +151.85580868368024, 2.605862182464179, 0.05, +151.9850375667508, 2.5845776614116094, 0.05, +152.11318980633658, 2.563044791715688, 0.05, +152.2402529854514, 2.5412635822966836, 0.05, +152.36621468806354, 2.5192340522427403, 0.05, +152.49106249911793, 2.4969562210879968, 0.05, +152.61478400433867, 2.4744301044150956, 0.05, +152.73736679071146, 2.451655727455868, 0.05, +152.85879844562555, 2.4286330982816176, 0.05, +152.97906655785695, 2.405362244627748, 0.05, +153.09815871635166, 2.3818431698943696, 0.05, +153.21606251182905, 2.358075909548052, 0.05, +153.33276553514898, 2.3340604663986673, 0.05, +153.44825537824093, 2.309796861839161, 0.05, +153.56251963361714, 2.2852851075242677, 0.05, +153.67554589535706, 2.260525234798615, 0.05, +153.78732458694603, 2.2355738317794356, 0.05, +153.89785237311864, 2.210555723452353, 0.05, +154.00712933151425, 2.1855391679121676, 0.05, +154.1151555382608, 2.1605241349310007, 0.05, +154.22193106979864, 2.135510630756642, 0.05, +154.3274560019568, 2.1104986431631865, 0.05, +154.43173040978718, 2.0854881566080334, 0.05, +154.53475436881564, 2.0604791805695237, 0.05, +154.63652795284472, 2.0354716805816193, 0.05, +154.7370512366125, 2.0104656753556984, 0.05, +154.83632429358184, 1.9854611393868593, 0.05, +154.93434719654462, 1.9604580592557503, 0.05, +155.0311200189187, 1.9354564474815943, 0.05, +155.12664283237552, 1.9104562691362321, 0.05, +155.22091570895546, 1.885457531598893, 0.05, +155.31393872022764, 1.8604602254433744, 0.05, +155.4057119366253, 1.8354643279531435, 0.05, +155.49623542901224, 1.8104698477387877, 0.05, +155.58550926764374, 1.7854767726301957, 0.05, +155.67353352105104, 1.7604850681459532, 0.05, +155.76030825819305, 1.7354947428403815, 0.05, +155.8458335480764, 1.7105057976669373, 0.05, +155.93010945864478, 1.6855182113674423, 0.05, +156.01313605640868, 1.6605319552778879, 0.05, +156.09491340832128, 1.6355470382519515, 0.05, +156.17544158102186, 1.6105634540114435, 0.05, +156.2547206393597, 1.5855811667567068, 0.05, +156.33275064928443, 1.560600198494523, 0.05, +156.40953167443, 1.535620502911356, 0.05, +156.48506377896115, 1.510642090622622, 0.05, +156.55934702562908, 1.4856649333587475, 0.05, +156.63238147771585, 1.4606890417354064, 0.05, +156.70416719608934, 1.4357143674697592, 0.05, +156.77470424258388, 1.4107409298905487, 0.05, +156.84399267732607, 1.3857686948439267, 0.05, +156.91203255998937, 1.3607976532660389, 0.05, +156.97882395015526, 1.3358278033175177, 0.05, +157.0443669056476, 1.3108591098468192, 0.05, +157.10866148417432, 1.2858915705345577, 0.05, +157.1717077430521, 1.2609251775557646, 0.05, +157.2335085643301, 1.2360164255595996, 0.05, +157.2940730669629, 1.2112900526560688, 0.05, +157.35341377693211, 1.1868141993841472, 0.05, +157.41154321827864, 1.1625888269302684, 0.05, +157.4684739147902, 1.138613930230925, 0.05, +157.5242183872796, 1.1148894497879251, 0.05, +157.57878915602214, 1.0914153748509807, 0.05, +157.6321987397533, 1.0681916746233637, 0.05, +157.68445965519896, 1.045218308913065, 0.05, +157.73558441843545, 1.0224952647297294, 0.05, +157.78558554341313, 1.0000224995537192, 0.05, +157.83447554261437, 0.9777999840247531, 0.05, +157.882266928579, 0.9558277192930446, 0.05, +157.92897221029352, 0.9341056342902166, 0.05, +157.97460389770353, 0.9126337482001208, 0.05, +158.01917449717243, 0.8914119893781566, 0.05, +158.06269651507216, 0.8704403579947299, 0.05, +158.10518245677088, 0.8497188339745244, 0.05, +158.14664482535343, 0.829247371651084, 0.05, +158.18709612376773, 0.8090259682856743, 0.05, +158.22654885274332, 0.789054579511925, 0.05, +158.26501551259722, 0.7693331970780988, 0.05, +158.3025086018733, 0.7498617855221971, 0.05, +158.33904061860716, 0.7306403346766097, 0.05, +158.37462405908096, 0.7116688094761838, 0.05, +158.40927141876836, 0.6929471937479648, 0.05, +158.44299519226723, 0.6744754699776364, 0.05, +158.47580787308559, 0.6562536163671142, 0.05, +158.50772195308815, 0.6382816000514031, 0.05, +158.53874992362253, 0.6205594106874865, 0.05, +158.5689042748986, 0.6030870255217877, 0.05, +158.59819749727842, 0.5858644475959272, 0.05, +158.62664207782163, 0.5688916108640616, 0.05, +158.65425050457517, 0.5521685350710923, 0.05, +158.68103526415197, 0.5356951915360909, 0.05, +158.70700884220622, 0.5194715610852415, 0.05, +158.73218372320818, 0.5034976200392584, 0.05, +158.75657239216358, 0.4877733791079157, 0.05, +158.78018733087896, 0.4722987743075641, 0.05, +158.80304102326184, 0.45707384765739273, 0.05, +158.82514594966293, 0.4420985280218691, 0.05, +158.84651459198952, 0.42737284653177066, 0.05, +158.86715942927185, 0.4128967456466741, 0.05, +158.8870929426592, 0.39867026774675896, 0.05, +158.90632760962885, 0.3846933393928701, 0.05, +158.92487590861674, 0.37096597975774004, 0.05, +158.94275031727267, 0.3574881731185653, 0.05, +158.9599633123905, 0.3442599023566449, 0.05, +158.9765273698936, 0.33128115006229725, 0.05, +158.99245496695463, 0.3185519412203881, 0.05, +159.00775857714572, 0.3060722038220222, 0.05, +159.02245067573534, 0.29384197179247246, 0.05, +159.03654373696975, 0.28186122468834174, 0.05, +159.05005023386303, 0.27012993786544104, 0.05, +159.06298264070088, 0.25864813675668014, 0.05, +159.07535342918547, 0.24741576969192694, 0.05, +159.08717507166298, 0.236432849550029, 0.05, +159.09846004063056, 0.22569937935125517, 0.05, +159.10922080681755, 0.21521532374006172, 0.05, +159.1194698417364, 0.20498069837660982, 0.05, +159.12921961544686, 0.1949954742092123, 0.05, +159.13848259900024, 0.18525967106765437, 0.05, +159.1472712625846, 0.17577327168756876, 0.05, +159.15559807481543, 0.166536244616403, 0.05, +159.1634755060757, 0.1575486252056606, 0.05, +159.17091602440706, 0.14881036662699135, 0.05, +159.1779320998254, 0.14032150836657797, 0.05, +159.1845362007956, 0.13208201940409936, 0.05, +159.19074079475675, 0.12409187922271886, 0.05, +159.19655834996576, 0.1163511041798902, 0.05, +159.20200133501478, 0.1088597009805857, 0.05, +159.2070822173376, 0.10161764645587347, 0.05, +159.2118134639852, 0.09462493295235426, 0.05, +159.21620754300133, 0.08788158032264462, 0.05, +159.2202769207563, 0.08138755509963701, 0.05, +159.22403406496545, 0.0751428841831157, 0.05, +159.2274914417367, 0.06914753542504222, 0.05, +159.2306615188067, 0.06340154139975306, 0.05, +159.23355676192588, 0.05790486238343236, 0.05, +159.2361896385559, 0.052657532600774756, 0.05, +159.23857261422685, 0.04765951341877008, 0.05, +159.2407181553395, 0.04291082225259324, 0.05, +159.24263872875744, 0.038411468358945884, 0.05, +159.2443467998812, 0.0341614224754159, 0.05, +159.24585483559068, 0.030160714189046, 0.05, +159.24717530176028, 0.026409323392243077, 0.05, +159.24832066345118, 0.02290723381791135, 0.05, +159.24930338836973, 0.01965449837080429, 0.05, +159.25013594110362, 0.01665105467778218, 0.05, +159.2508307877668, 0.013896933263472184, 0.05, +159.2514003940141, 0.011392124946083042, 0.05, +159.25185722704393, 0.009136660596802343, 0.05, +159.25221375067756, 0.0071304726722973945, 0.05, +159.25248243261146, 0.005373638678069842, 0.05, +159.25267573728843, 0.003866093539123925, 0.05, +159.2528061308107, 0.0026078704456319823, 0.05, +159.25288607912026, 0.0015989661908072412, 0.05, +159.25292804805468, 8.393786885886842E-4, 0.05, +159.2529445033917, 3.29106740282966E-4, 0.05, +159.25294791088047, 6.814977558332475E-5, 0.05, +159.25294791088047, 0.0, 0.05, From abd3c14fbbca4164d69dc7aa3fcf7454ab1e656a Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Tue, 21 Feb 2017 20:20:19 -0500 Subject: [PATCH 06/66] Start tuning for curved path to right peg --- src/main/resources/leftProfile.csv | 2084 ++++++++++------------ src/main/resources/leftProfile_dumb.csv | 813 +++++++++ src/main/resources/rightProfile.csv | 2084 ++++++++++------------ src/main/resources/rightProfile_dumb.csv | 813 +++++++++ 4 files changed, 3502 insertions(+), 2292 deletions(-) create mode 100644 src/main/resources/leftProfile_dumb.csv create mode 100644 src/main/resources/rightProfile_dumb.csv diff --git a/src/main/resources/leftProfile.csv b/src/main/resources/leftProfile.csv index 6cf265ed..54427fac 100644 --- a/src/main/resources/leftProfile.csv +++ b/src/main/resources/leftProfile.csv @@ -1,1147 +1,939 @@ -1146 6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, -6.3979198129539205E-6, 2.958396259078418E-6, 0.05, -6.730740121155927E-6, 6.656406164040121E-6, 0.05, -7.322423161052439E-6, 1.183366079793024E-5, 0.05, -8.246934296921023E-6, 1.8490222717371686E-5, 0.05, -9.57824401438665E-6, 2.6626194349312525E-5, 0.05, -1.1390330412650036E-5, 3.6241727965267745E-5, 0.05, -1.1875918015446259E-4, 0.002147376994836251, 0.05, -6.280089398381212E-4, 0.01018499519367317, 0.05, -0.0012567026777572114, 0.012573874758381804, 0.05, -0.002017431972318667, 0.015214585891229114, 0.05, -0.0029227595681079704, 0.018106551915786067, 0.05, -0.003985261117987896, 0.02125003099759851, 0.05, -0.005217512828680155, 0.024645034213845195, 0.05, -0.0066320879759502955, 0.0282915029454028, 0.05, -0.008241556133923744, 0.03218936315946897, 0.05, -0.010058508581897597, 0.03633904895947706, 0.05, -0.012095501341973444, 0.04073985520151695, 0.05, -0.014365116708072067, 0.045392307321972435, 0.05, -0.016879931725120832, 0.05029630034097527, 0.05, -0.019652517140557123, 0.05545170830872583, 0.05, -0.022695449986514158, 0.060858656919140726, 0.05, -0.026021303429899653, 0.0665170688677099, 0.05, -0.029642659341512792, 0.07242711823226275, 0.05, -0.03357209063182697, 0.0785886258062836, 0.05, -0.037822167073197195, 0.08500152882740443, 0.05, -0.04240547149136748, 0.09166608836340573, 0.05, -0.04733458488670139, 0.09858226790667822, 0.05, -0.05262207573279082, 0.10574981692178856, 0.05, -0.05828052567006848, 0.11316899874555318, 0.05, -0.06432250903264987, 0.12083966725162787, 0.05, -0.07076060571954848, 0.12876193373797215, 0.05, -0.07760739287855278, 0.1369357431800861, 0.05, -0.08487545820028788, 0.1453613064347019, 0.05, -0.0925773708178224, 0.1540382523506904, 0.05, -0.1007257146281926, 0.16296687620740422, 0.05, -0.10933306556260158, 0.1721470186881797, 0.05, -0.11841201454540108, 0.18157897965599004, 0.05, -0.12797513210619893, 0.1912623512159571, 0.05, -0.13803501422512007, 0.20119764237842275, 0.05, -0.1486042302357135, 0.21138432021186856, 0.05, -0.15969536463259137, 0.22182268793755752, 0.05, -0.1713210099916747, 0.23251290718166678, 0.05, -0.18349375464082635, 0.2434548929830326, 0.05, -0.19622617153420227, 0.2546483378675185, 0.05, -0.2095308552477164, 0.26609367427028213, 0.05, -0.22342039270940064, 0.277790749233685, 0.05, -0.2379073665090541, 0.28973947599306915, 0.05, -0.2530043790864321, 0.301940251547559, 0.05, -0.26872401712933514, 0.3143927608580605, 0.05, -0.2850788664938086, 0.32709698728946945, 0.05, -0.30208151833816227, 0.340053036887074, 0.05, -0.3197445814559274, 0.35326126235530203, 0.05, -0.3380806368277916, 0.3667211074372846, 0.05, -0.35710229373287333, 0.3804331381016345, 0.05, -0.37682213971336304, 0.3943969196097941, 0.05, -0.3972527767947034, 0.4086127416268066, 0.05, -0.41840681024522025, 0.42308066901033714, 0.05, -0.4402968389843224, 0.43780057478204387, 0.05, -0.4629354772603121, 0.4527727655197929, 0.05, -0.486335316076348, 0.4679967763207178, 0.05, -0.5105089730204545, 0.48347313888213017, 0.05, -0.5354690535880451, 0.49920161135181146, 0.05, -0.5612281736539645, 0.5151824013183874, 0.05, -0.5877989430925765, 0.5314153887722415, 0.05, -0.615193979230141, 0.5479007227512891, 0.05, -0.6434258966664346, 0.5646383487258714, 0.05, -0.672507323906018, 0.5816285447916678, 0.05, -0.7024508778929578, 0.5988710797387962, 0.05, -0.7332691811929336, 0.6163660659995158, 0.05, -0.7649748684535395, 0.6341137452121176, 0.05, -0.7975805641029408, 0.6521139129880261, 0.05, -0.8310989038869503, 0.6703667956801913, 0.05, -0.8655425199153364, 0.688872320567722, 0.05, -0.900924054157387, 0.7076306848410128, 0.05, -0.9372561486115136, 0.7266418890825328, 0.05, -0.9745514463436292, 0.7459059546423114, 0.05, -1.0128225924405525, 0.7654229219384675, 0.05, -1.052082249958503, 0.7851931503590105, 0.05, -1.0923430623111199, 0.8052162470523379, 0.05, -1.1336176952569021, 0.8254926589156464, 0.05, -1.1759188063771011, 0.8460222224039812, 0.05, -1.219259070668237, 0.8668052858227163, 0.05, -1.2636511458098392, 0.8878415028320471, 0.05, -1.3091077265085667, 0.9091316139745503, 0.05, -1.3556414730016828, 0.9306749298623248, 0.05, -1.4032650848459998, 0.9524722368863382, 0.05, -1.4519912376557675, 0.974523056195355, 0.05, -1.5018326421922084, 0.996828090728816, 0.05, -1.552801984245657, 1.0193868410689757, 0.05, -1.604911972665261, 1.0421997683920798, 0.05, -1.6581753208324825, 1.0652669633444312, 0.05, -1.712604745912607, 1.0885885016024877, 0.05, -1.768212967958101, 1.1121644409098752, 0.05, -1.8250127112249173, 1.135994865336328, 0.05, -1.8830167246279743, 1.1600802680611406, 0.05, -1.9422377401939006, 1.1844203113185274, 0.05, -2.002688507842786, 1.2090153529777063, 0.05, -2.064381787645844, 1.233865596061159, 0.05, -2.127330342687189, 1.2589711008268962, 0.05, -2.1915406521018403, 1.284206188293029, 0.05, -2.2570129035830844, 1.3094450296248776, 0.05, -2.3237472931909666, 1.3346877921576445, 0.05, -2.39174402109802, 1.359934558141063, 0.05, -2.4610032913732267, 1.385185405504138, 0.05, -2.5315253320163, 1.4104408128614667, 0.05, -2.6033103519630783, 1.435700398935568, 0.05, -2.6763585817199815, 1.4609645951380645, 0.05, -2.750670266876076, 1.4862337031218877, 0.05, -2.826245642070152, 1.5115075038815213, 0.05, -2.9030849619543044, 1.5367863976830483, 0.05, -2.9811884874262455, 1.5620705094388194, 0.05, -3.0605564914996033, 1.5873600814671556, 0.05, -3.1411892411795526, 1.612654993598988, 0.05, -3.2230870306515054, 1.637955789439055, 0.05, -3.3062501466966565, 1.663262320903025, 0.05, -3.3906789029367963, 1.6885751248027958, 0.05, -3.4763736025873806, 1.7138939930116903, 0.05, -3.5633345795268303, 1.739219538788993, 0.05, -3.6515621629283586, 1.7645516680305664, 0.05, -3.7410566926145767, 1.7898905937243652, 0.05, -3.8318185346636984, 1.8152368409824289, 0.05, -3.9238480439189165, 1.8405901851043651, 0.05, -4.017145602992347, 1.8659511814686083, 0.05, -4.111711607674137, 1.89132009363581, 0.05, -4.207546448138892, 1.916696809295091, 0.05, -4.304650544604839, 1.94208192931895, 0.05, -4.403024320744308, 1.9674755227893703, 0.05, -4.502668220017966, 1.99287798547318, 0.05, -4.603582698998242, 2.0182895796055043, 0.05, -4.705768216458246, 2.043710349200075, 0.05, -4.809225263869548, 2.0691409482260372, 0.05, -4.913954330611866, 2.0945813348463593, 0.05, -5.019955929092724, 2.120031969617159, 0.05, -5.127230594682832, 2.1454933118021557, 0.05, -5.235778859480314, 2.1709652959496495, 0.05, -5.345601286606766, 2.1964485425290357, 0.05, -5.456698453729011, 2.221943342444893, 0.05, -5.569070952604388, 2.2474499775075394, 0.05, -5.6827193907184395, 2.272968762281027, 0.05, -5.797638077973191, 2.298373745095026, 0.05, -5.913815038485048, 2.323539210237139, 0.05, -6.03123827854955, 2.348464801290041, 0.05, -6.149895848673903, 2.3731514024870584, 0.05, -6.269775781055619, 2.397598647634335, 0.05, -6.390866143315396, 2.421807245195522, 0.05, -6.513154999746663, 2.445777128625344, 0.05, -6.636630425582836, 2.469508516723454, 0.05, -6.761280517625209, 2.4930018408474495, 0.05, -6.887093371533744, 2.5162570781707174, 0.05, -7.014057091289094, 2.5392743951069887, 0.05, -7.142159802825238, 2.562054230722878, 0.05, -7.271389625011424, 2.5845964437237248, 0.05, -7.40173469191208, 2.606901338013116, 0.05, -7.533183143762812, 2.6289690370146395, 0.05, -7.665723125852412, 2.650799641791997, 0.05, -7.799342783129276, 2.6723931455372942, 0.05, -7.934030270451534, 2.6937497464451567, 0.05, -8.069773743730002, 2.714869465569363, 0.05, -8.206561357375227, 2.7357522729044916, 0.05, -8.344381263606428, 2.7563981246240163, 0.05, -8.483221608916388, 2.776806906199213, 0.05, -8.62307054101827, 2.7969786420376535, 0.05, -8.763916193857947, 2.816913056793522, 0.05, -8.905746701576625, 2.8366101543735733, 0.05, -9.048550174628117, 2.8560694610298447, 0.05, -9.192314717638297, 2.8752908602036102, 0.05, -9.337028405173243, 2.8942737506989182, 0.05, -9.482679305639058, 2.9130180093163265, 0.05, -9.629255450083829, 2.931522888895411, 0.05, -9.776744846671017, 2.9497879317437503, 0.05, -9.925135472403085, 2.9678125146413694, 0.05, -10.074415264240324, 2.985595836744779, 0.05, -10.22457212232436, 3.003137161680717, 0.05, -10.375593894858973, 3.0204354506922613, 0.05, -10.527468391062335, 3.0374899240672497, 0.05, -10.68018334809913, 3.0542991407358904, 0.05, -10.83372645820601, 3.0708622021376297, 0.05, -10.988085343141737, 3.0871776987145294, 0.05, -11.143247549391845, 3.103244125002147, 0.05, -11.299200549371346, 3.1190599995900095, 0.05, -11.45593173461112, 3.134623704795488, 0.05, -11.613428409677965, 3.149933501336901, 0.05, -11.771677782852198, 3.164987463484632, 0.05, -11.93066696295578, 3.1797836020716512, 0.05, -12.09038296254623, 3.1943199918090053, 0.05, -12.250812676341166, 3.2085942758987382, 0.05, -12.41194288958147, 3.222604264806077, 0.05, -12.573760269808881, 3.23634760454823, 0.05, -12.736251362432514, 3.2498218524726497, 0.05, -12.89940258981839, 3.2630245477175217, 0.05, -13.063200246352752, 3.275953130687249, 0.05, -13.22763049405748, 3.28860495409459, 0.05, -13.392679367661703, 3.300977472084448, 0.05, -13.55833277381989, 3.3130681231637453, 0.05, -13.724576484761068, 3.3248742188235596, 0.05, -13.891396146354356, 3.3363932318657783, 0.05, -14.058777280584184, 3.34762268459657, 0.05, -14.22670528753728, 3.3585601390619195, 0.05, -14.395165449459228, 3.3692032384389363, 0.05, -14.564142939596193, 3.379549802739298, 0.05, -14.73362282803055, 3.389597768687124, 0.05, -14.903590089862675, 3.399345236642494, 0.05, -15.074029613268142, 3.4087904681093466, 0.05, -15.244926212287702, 3.417931980391219, 0.05, -15.416264635588243, 3.42676846601084, 0.05, -15.588029578237354, 3.435298852982203, 0.05, -15.760205694122321, 3.4435223176993373, 0.05, -15.932777610170726, 3.451438320968077, 0.05, -16.105729938231224, 3.45904656120994, 0.05, -16.279047288473507, 3.4663470048456655, 0.05, -16.452714282209435, 3.4733398747185595, 0.05, -16.62671556577745, 3.480025671360277, 0.05, -16.80103582310917, 3.4864051466344494, 0.05, -16.975659789509912, 3.4924793280148205, 0.05, -17.150572260854158, 3.4982494268849305, 0.05, -17.325758107420103, 3.503716931318886, 0.05, -17.501202282661822, 3.5088835048343636, 0.05, -17.676889833626, 3.5137510192835197, 0.05, -17.852805908975117, 3.5183215069823537, 0.05, -18.02893576677717, 3.5225971560410785, 0.05, -18.20526478082631, 3.526580280982806, 0.05, -18.381778445377286, 3.530273291019497, 0.05, -18.558462381159075, 3.5336787156357596, 0.05, -18.73530233552554, 3.536799087329295, 0.05, -18.912284188114537, 3.539637051779944, 0.05, -19.089393948536173, 3.542195208432765, 0.05, -19.266617759382576, 3.5444762169280386, 0.05, -19.443941892052887, 3.5464826534062053, 0.05, -19.621352749354635, 3.5482171460349363, 0.05, -19.798836858592185, 3.5496821847509885, 0.05, -19.976380873393353, 3.5508802960233665, 0.05, -20.153971564749174, 3.55181382711643, 0.05, -20.331595822060503, 3.552485146226557, 0.05, -20.50924064342828, 3.552896427355561, 0.05, -20.68689313513452, 3.5530498341248338, 0.05, -20.86454050554216, 3.55294740815277, 0.05, -21.04217005598813, 3.5525910089194013, 0.05, -21.2197691811172, 3.5519825025813865, 0.05, -21.39732535893241, 3.5511235563041814, 0.05, -21.574832485867706, 3.550142538705933, 0.05, -21.752290861831813, 3.549167519282149, 0.05, -21.92970083969293, 3.5481995572223233, 0.05, -22.107062824324096, 3.5472396926233287, 0.05, -22.284377264233175, 3.5462887981815903, 0.05, -22.46164464609821, 3.5453476373007247, 0.05, -22.638865495918413, 3.544416996404019, 0.05, -22.816040366355853, 3.543497408748834, 0.05, -22.99316984108256, 3.5425894945340644, 0.05, -23.170254525417715, 3.5416936867030917, 0.05, -23.347295047898402, 3.5408104496137387, 0.05, -23.5242920497133, 3.5399400362979265, 0.05, -23.70124618924031, 3.5390827905402635, 0.05, -23.87815813355485, 3.5382388862908067, 0.05, -24.0550285622988, 3.5374085748789863, 0.05, -24.231858156851516, 3.5365918910542558, 0.05, -24.408647606012092, 3.535788983211511, 0.05, -24.58539759953282, 3.534999870414505, 0.05, -24.762108825398183, 3.53422451730727, 0.05, -24.938781974579133, 3.5334629836189984, 0.05, -25.11541773121135, 3.5327151326442983, 0.05, -25.292016777037393, 3.531980916520859, 0.05, -25.46857978974245, 3.531260254101131, 0.05, -25.645107437020663, 3.5305529455642346, 0.05, -25.82160038229661, 3.529858905518886, 0.05, -25.9980592785467, 3.5291779250018753, 0.05, -26.174484773227594, 3.5285098936178683, 0.05, -26.350877500248654, 3.5278545404212234, 0.05, -26.5272380854491, 3.527211704008906, 0.05, -26.70356714403893, 3.5265811717966624, 0.05, -26.87986527944048, 3.5259627080309768, 0.05, -27.056133084407364, 3.5253560993376967, 0.05, -27.23237113932636, 3.5247610983799342, 0.05, -27.408580013711354, 3.524177487699871, 0.05, -27.58476026526972, 3.5236050311672984, 0.05, -27.76091243668213, 3.5230434282481946, 0.05, -27.93703706210508, 3.522492508459035, 0.05, -28.113134661514668, 3.5219519881917236, 0.05, -28.28920574353, 3.521421640306699, 0.05, -28.465250802994074, 3.520901189281458, 0.05, -28.641270324700532, 3.5203904341291428, 0.05, -28.817264779391966, 3.5198890938286707, 0.05, -28.99323462667478, 3.5193969456562657, 0.05, -29.16918031437369, 3.5189137539782265, 0.05, -29.34510227717211, 3.5184392559684152, 0.05, -29.52100094009565, 3.51797325847081, 0.05, -29.696876714304118, 3.5175154841693455, 0.05, -29.87273000188501, 3.517065751617844, 0.05, -30.04856119137097, 3.516623789719194, 0.05, -30.22437066253721, 3.5161894233248616, 0.05, -30.40015878170896, 3.5157623834349527, 0.05, -30.57592590745935, 3.5153425150078066, 0.05, -30.751672384423227, 3.5149295392775364, 0.05, -30.92739854875162, 3.514523286567801, 0.05, -31.103104727480215, 3.514123574571908, 0.05, -31.27879123610967, 3.513730172589083, 0.05, -31.454458379525793, 3.5133428683224763, 0.05, -31.630106455227683, 3.512961514037774, 0.05, -31.80573574941552, 3.5125858837567345, 0.05, -31.981346539997567, 3.512215811640961, 0.05, -32.15693909484465, 3.5118510969416863, 0.05, -32.33251367469987, 3.5114915971043614, 0.05, -32.508070529146465, 3.511137088931991, 0.05, -32.683609900270966, 3.5107874224900497, 0.05, -32.85913202346365, 3.5104424638537384, 0.05, -33.034637122430674, 3.5101019793404435, 0.05, -33.210125415117055, 3.5097658537276497, 0.05, -33.38559711144566, 3.5094339265721843, 0.05, -33.56105241267125, 3.509106024511802, 0.05, -33.73649151314774, 3.508782009529825, 0.05, -33.91191459917421, 3.5084617205293265, 0.05, -34.08732184953442, 3.5081450072042086, 0.05, -34.26271343636099, 3.507831736531382, 0.05, -34.438089524633014, 3.507521765440454, 0.05, -34.61345027160478, 3.5072149394354124, 0.05, -34.7887958285082, 3.506911138068247, 0.05, -34.96412633910717, 3.506610211979427, 0.05, -35.13944194121154, 3.5063120420874254, 0.05, -35.31474276572218, 3.5060164902128443, 0.05, -35.490028936554054, 3.5057234166374966, 0.05, -35.665300572418, 3.505432717278806, 0.05, -35.840557784543265, 3.5051442425053945, 0.05, -36.01580067901866, 3.504857889507863, 0.05, -36.19102935524603, 3.5045735245474345, 0.05, -36.366243906787986, 3.5042910308391284, 0.05, -36.541444421080655, 3.5040102858534494, 0.05, -36.71663097965668, 3.50373117152039, 0.05, -36.891803658786884, 3.5034535826041817, 0.05, -37.06696252824649, 3.5031773891921825, 0.05, -37.24210765241769, 3.5029024834238442, 0.05, -37.417239090205264, 3.5026287557515006, 0.05, -37.59235689466807, 3.502356089256091, 0.05, -37.76746111334091, 3.502084373456687, 0.05, -37.942551788248814, 3.501813498158127, 0.05, -38.11762895592269, 3.5015433534774996, 0.05, -38.292692647417255, 3.501273829891357, 0.05, -38.46774288827548, 3.501004817164589, 0.05, -38.64277969869344, 3.5007362083591076, 0.05, -38.817803093492685, 3.5004678959848756, 0.05, -38.99281308201056, 3.500199770357473, 0.05, -39.1678096682081, 3.499931723950845, 0.05, -39.342792850694686, 3.4996636497317017, 0.05, -39.51776262263562, 3.4993954388186754, 0.05, -39.69271897180699, 3.499126983427309, 0.05, -39.867661880717, 3.4988581782002983, 0.05, -40.04259132627216, 3.498588911103103, 0.05, -40.21750727999094, 3.498319074375585, 0.05, -40.39240970796033, 3.4980485593879034, 0.05, -40.56729857078203, 3.4977772564339076, 0.05, -40.7421738235277, 3.497505054913367, 0.05, -40.91703541568415, 3.4972318431289096, 0.05, -41.091883291160975, 3.4969575095365304, 0.05, -41.266717388632095, 3.4966819494224546, 0.05, -41.44153764008152, 3.496405028988563, 0.05, -41.616343973031746, 3.4961266590044535, 0.05, -41.791136308011424, 3.495846699593588, 0.05, -41.96591456047607, 3.495565049292991, 0.05, -42.140678639893466, 3.495281588347833, 0.05, -42.315428449601065, 3.4949961941520256, 0.05, -42.49016388664554, 3.4947087408895494, 0.05, -42.66488484196497, 3.4944191063885204, 0.05, -42.839591200999614, 3.4941271806928733, 0.05, -43.01428284205662, 3.493832821140149, 0.05, -43.188959637125585, 3.493535901379224, 0.05, -43.363621451870046, 3.493236294889218, 0.05, -43.53826814607129, 3.4929338840248385, 0.05, -43.712899571088094, 3.4926285003361346, 0.05, -43.88751557287801, 3.4923200357982354, 0.05, -44.06211599008876, 3.492008344215045, 0.05, -44.23670065350329, 3.4916932682905566, 0.05, -44.41126938893725, 3.4913747086791282, 0.05, -44.58582201207402, 3.4910524627353716, 0.05, -44.76035833251453, 3.490726408810208, 0.05, -44.934878153409, 3.4903964178895355, 0.05, -45.10938126770335, 3.4900622858868546, 0.05, -45.28386746197585, 3.489723885450072, 0.05, -45.4583365148348, 3.489381057178958, 0.05, -45.63278819602547, 3.4890336238134823, 0.05, -45.807222268067655, 3.488681440843652, 0.05, -45.98163848304661, 3.488324299579092, 0.05, -46.156036586613155, 3.487962071330856, 0.05, -46.33041631352784, 3.4875945382936826, 0.05, -46.5047773916177, 3.4872215617971722, 0.05, -46.67911953720004, 3.486842911646706, 0.05, -46.85344245895385, 3.486458435076277, 0.05, -47.027745854948215, 3.486067919887349, 0.05, -47.20202941506159, 3.485671202267398, 0.05, -47.3762928163952, 3.4852680266722107, 0.05, -47.55053572949649, 3.484858262025833, 0.05, -47.724757811454, 3.484441639150214, 0.05, -47.89895871073408, 3.484017985601674, 0.05, -48.07313806531431, 3.483587091604665, 0.05, -48.247295500387935, 3.4831487014725515, 0.05, -48.42143063121722, 3.482702616585651, 0.05, -48.595543063418795, 3.4822486440314697, 0.05, -48.76963238990426, 3.4817865297092734, 0.05, -48.94369819061454, 3.481316014205571, 0.05, -49.11774003515789, 3.4808368908668808, 0.05, -49.29175748333474, 3.480348963537117, 0.05, -49.46575007982856, 3.479851929876291, 0.05, -49.63971735808767, 3.4793455651822316, 0.05, -49.81365884171478, 3.4788296725422105, 0.05, -49.98757403857062, 3.47830393711673, 0.05, -50.161462446553266, 3.4777681596528973, 0.05, -50.33532355128915, 3.477222094717705, 0.05, -50.50915682418191, 3.4766654578550957, 0.05, -50.682961727320304, 3.476098062767985, 0.05, -50.85673770701692, 3.475519593932282, 0.05, -51.03048420143246, 3.474929888310742, 0.05, -51.20420063377375, 3.4743286468258496, 0.05, -51.377886416570256, 3.473715655930069, 0.05, -51.551540950670706, 3.4730906820090643, 0.05, -51.725163625127884, 3.4724534891435512, 0.05, -51.89875382070951, 3.4718039116325428, 0.05, -52.07231090381736, 3.4711416621570015, 0.05, -52.24583423317543, 3.470466587161398, 0.05, -52.41932315883531, 3.469778513197608, 0.05, -52.59277702010128, 3.46907722531938, 0.05, -52.76619515120864, 3.4683626221472608, 0.05, -52.93957687743139, 3.4676345244549713, 0.05, -53.1129215168484, 3.4668927883401683, 0.05, -53.286228386640516, 3.4661373958422836, 0.05, -53.459496797196536, 3.4653682111203965, 0.05, -53.63272605910957, 3.464585238260789, 0.05, -53.80591547821341, 3.463788382076732, 0.05, -53.979064367680095, 3.462977789333799, 0.05, -54.15217203819325, 3.462153410263135, 0.05, -54.325237808972034, 3.461315415575658, 0.05, -54.49826100510444, 3.4604639226480596, 0.05, -54.67124096187436, 3.459599135398476, 0.05, -54.84417702700686, 3.458721302649955, 0.05, -55.01706856389976, 3.457830737858063, 0.05, -55.18991495452366, 3.4569278124778706, 0.05, -55.362715603205025, 3.4560129736273284, 0.05, -55.535469939306395, 3.45508672202736, 0.05, -55.708177420793994, 3.4541496297519645, 0.05, -55.88083754185665, 3.4532024212530734, 0.05, -56.05344982989846, 3.4522457608361954, 0.05, -56.22601385911259, 3.4512805842825336, 0.05, -56.39852924914606, 3.4503078006693237, 0.05, -56.57099567004684, 3.4493284180156905, 0.05, -56.74341285120145, 3.448343623092145, 0.05, -56.915780583173095, 3.447354639432983, 0.05, -57.0880987252682, 3.446362841902152, 0.05, -57.26036721013822, 3.445369697400359, 0.05, -57.43258605048212, 3.444376806878037, 0.05, -57.60475534233376, 3.4433858370327335, 0.05, -57.776875273173125, 3.4423986167872975, 0.05, -57.94894612668902, 3.441417070317949, 0.05, -58.12096828854003, 3.440443237020113, 0.05, -58.29294225181309, 3.4394792654612587, 0.05, -58.46486861977756, 3.438527359289524, 0.05, -58.63674811390771, 3.4375898826028437, 0.05, -58.808581576349745, 3.4366692488407327, 0.05, -58.98036997387629, 3.435767950530967, 0.05, -59.15211439983641, 3.4348885192022176, 0.05, -59.3238160795407, 3.434033594085808, 0.05, -59.4954763684998, 3.433205779182089, 0.05, -59.66709675574019, 3.432407744807814, 0.05, -59.838678862037206, 3.4316421259403667, 0.05, -60.01022444030753, 3.4309115654065114, 0.05, -60.181735372247026, 3.430218638789886, 0.05, -60.35321366586769, 3.4295658724132805, 0.05, -60.52466145086524, 3.428955699950889, 0.05, -60.696080973333686, 3.4283904493689654, 0.05, -60.86747458914486, 3.42787231622346, 0.05, -61.038844756058, 3.427403338262718, 0.05, -61.210194025818474, 3.426985395209595, 0.05, -61.38152503297516, 3.4266201431337473, 0.05, -61.55284048658388, 3.426309072174401, 0.05, -61.72414315697205, 3.426053407763299, 0.05, -61.89543586277698, 3.425854116098547, 0.05, -62.066721460990706, 3.425711964274567, 0.05, -62.238002832903696, 3.425627438259853, 0.05, -62.40928286923692, 3.4256007266644226, 0.05, -62.58056445888293, 3.4256317929202362, 0.05, -62.751850471199674, 3.425720246334883, 0.05, -62.92314375093542, 3.425865594714864, 0.05, -63.09444709687288, 3.42606691874926, 0.05, -63.265763251602564, 3.4263230945937138, 0.05, -63.43709489489339, 3.4266328658165355, 0.05, -63.60844462747891, 3.4269946517103067, 0.05, -63.77981495979846, 3.4274066463908808, 0.05, -63.951208309606756, 3.427866996165932, 0.05, -64.12262698402536, 3.428373488372068, 0.05, -64.29407318405332, 3.4289240005592605, 0.05, -64.46554898545295, 3.429516027992872, 0.05, -64.63705634941721, 3.4301472792849763, 0.05, -64.80859710320378, 3.43081507573156, 0.05, -64.98017294905783, 3.4315169170809448, 0.05, -65.15178545340025, 3.4322500868484234, 0.05, -65.32343605570874, 3.4330120461697846, 0.05, -65.49512606190659, 3.433800123957056, 0.05, -65.66685664588282, 3.434611679524442, 0.05, -65.83862885851455, 3.4354442526347997, 0.05, -66.01044362055414, 3.4362952407918805, 0.05, -66.1823017327108, 3.43716224313325, 0.05, -66.3542038763499, 3.438042872782139, 0.05, -66.52615062132114, 3.4389348994247224, 0.05, -66.69814242408215, 3.439836055220369, 0.05, -66.87017964341558, 3.4407443866687437, 0.05, -67.04226253280808, 3.4416577878501022, 0.05, -67.21439125858775, 3.4425745155933387, 0.05, -67.3865658933919, 3.443492696082894, 0.05, -67.55878643657454, 3.4444108636526387, 0.05, -67.73105279826385, 3.4453272337861423, 0.05, -67.90336483020802, 3.44624063888357, 0.05, -68.07572230999442, 3.4471495957278684, 0.05, -68.24812496230702, 3.448053046251879, 0.05, -68.42057245436109, 3.448949841081579, 0.05, -68.59306439577108, 3.4498388281996215, 0.05, -68.76560036442508, 3.450719373080061, 0.05, -68.9381798917143, 3.451590545784254, 0.05, -69.1108024640203, 3.4524514461200617, 0.05, -69.28346755297558, 3.4533017791057277, 0.05, -69.4561745851942, 3.4541406443724485, 0.05, -69.628922976862, 3.454967833355843, 0.05, -69.80171211667985, 3.455782796356973, 0.05, -69.97454137001044, 3.456585066611717, 0.05, -70.14741010050578, 3.457374609906813, 0.05, -70.32031764399488, 3.45815086978203, 0.05, -70.49326334198099, 3.4589139597222576, 0.05, -70.66624651729948, 3.459663506369917, 0.05, -70.83926649479695, 3.460399549949205, 0.05, -71.01232259329957, 3.4611219700524125, 0.05, -71.18541412671587, 3.4618306683258835, 0.05, -71.3585404197692, 3.462525861066559, 0.05, -71.53170078645171, 3.4632073336500846, 0.05, -71.70489455420285, 3.4638753550228256, 0.05, -71.87812104730517, 3.4645298620463025, 0.05, -72.05137960033484, 3.4651710605933883, 0.05, -72.22466955058638, 3.465799005030812, 0.05, -72.39799024693843, 3.466413927041072, 0.05, -72.57134103747485, 3.467015810728425, 0.05, -72.74472129035587, 3.4676050576202924, 0.05, -72.9181303791826, 3.4681817765346916, 0.05, -73.0915676714403, 3.46874584515397, 0.05, -73.2650325712494, 3.4692979961820036, 0.05, -73.43852447677844, 3.4698381105805836, 0.05, -73.61204279944691, 3.4703664533694853, 0.05, -73.78558695658627, 3.4708831427873474, 0.05, -73.95915638601865, 3.4713885886475815, 0.05, -74.13275053239045, 3.4718829274360776, 0.05, -74.30636885119992, 3.472366376189547, 0.05, -74.48001080817652, 3.4728391395319855, 0.05, -74.65367587533848, 3.473301343239124, 0.05, -74.82736355130349, 3.473753519300394, 0.05, -75.00107333219563, 3.4741956178428848, 0.05, -75.17480472261069, 3.4746278083011792, 0.05, -75.348557251517, 3.47505057812617, 0.05, -75.52233045057586, 3.475463981177465, 0.05, -75.69612386296889, 3.4758682478604186, 0.05, -75.86993704287788, 3.4762635981797385, 0.05, -76.04376955502964, 3.4766502430353476, 0.05, -76.21762096977949, 3.4770282949970768, 0.05, -76.3914908740637, 3.4773980856842037, 0.05, -76.56537886485937, 3.4777598159133083, 0.05, -76.73928454654227, 3.47811363365798, 0.05, -76.91320753283028, 3.4784597257604637, 0.05, -77.08714744676234, 3.4787982786411553, 0.05, -77.61551483113402, 10.567347687433397, 0.05, -77.79011512372797, 3.4920058518789077, 0.05, -77.96471207455849, 3.49193901661038, 0.05, -78.13930564664088, 3.491871441647769, 0.05, -78.31389579525204, 3.491802972223198, 0.05, -78.48848248164528, 3.4917337278647684, 0.05, -78.66306565368826, 3.491663440859799, 0.05, -78.83764527436907, 3.4915924136160257, 0.05, -79.01222129221334, 3.491520356885444, 0.05, -79.18679366488469, 3.4914474534270243, 0.05, -79.36136234253897, 3.491373553085565, 0.05, -79.53592727699291, 3.491298689078862, 0.05, -79.71048842530257, 3.491222966193375, 0.05, -79.8850457302743, 3.4911460994346335, 0.05, -80.05959914412247, 3.491068276963457, 0.05, -80.23414862192362, 3.490989556023108, 0.05, -80.40869410204255, 3.4909096023785655, 0.05, -80.58323553250466, 3.490828609242154, 0.05, -80.75777286728773, 3.4907466956614384, 0.05, -80.93230604410152, 3.4906635362760423, 0.05, -81.10683501135641, 3.4905793450977756, 0.05, -81.28135971185993, 3.4904940100705093, 0.05, -81.45588008725376, 3.490407507876444, 0.05, -81.63039607701442, 3.4903197952133933, 0.05, -81.8049076296081, 3.4902310518734168, 0.05, -81.97941467408698, 3.4901408895777966, 0.05, -82.1539171557147, 3.4900496325543386, 0.05, -82.32841500871392, 3.489957059984523, 0.05, -82.50290816623041, 3.4898631503298083, 0.05, -82.67739657240051, 3.4897681234019156, 0.05, -82.85188015817367, 3.4896717154632375, 0.05, -83.02635885184243, 3.4895738733750785, 0.05, -83.20083258800071, 3.4894747231656087, 0.05, -83.37530129825258, 3.4893742050374024, 0.05, -83.54976490859484, 3.4892722068450763, 0.05, -83.72422335030672, 3.4891688342374816, 0.05, -83.89867655477765, 3.4890640894185903, 0.05, -84.07312443794302, 3.4889576633074193, 0.05, -84.2475669299015, 3.4888498391693967, 0.05, -84.42200395196063, 3.4887404411826197, 0.05, -84.59643542546844, 3.488629470156285, 0.05, -84.7708612724319, 3.488516939269202, 0.05, -84.9452814100989, 3.4884027533399307, 0.05, -85.11969575527864, 3.488286903594953, 0.05, -85.29410422687174, 3.4881694318619916, 0.05, -85.46850673626682, 3.4880501879017, 0.05, -85.64290319901899, 3.4879292550433587, 0.05, -85.81729352315709, 3.4878064827619992, 0.05, -85.9916776221127, 3.4876819791121605, 0.05, -86.1660554032117, 3.487555621979957, 0.05, -86.34042677373148, 3.4874274103954908, 0.05, -86.51479163579887, 3.487297241347776, 0.05, -86.68914989484722, 3.4871651809669, 0.05, -86.86350145013127, 3.4870311056808276, 0.05, -87.03784620782463, 3.486895153867269, 0.05, -87.21218405707391, 3.486756984985746, 0.05, -87.38651490079744, 3.4866168744703594, 0.05, -87.5608386334815, 3.4864746536811997, 0.05, -87.7351551407575, 3.4863301455200695, 0.05, -87.90946432227362, 3.486183630322562, 0.05, -88.08376606266503, 3.4860348078281342, 0.05, -88.25806024732466, 3.485883693192525, 0.05, -88.4323467617524, 3.485730288554661, 0.05, -88.60662548814338, 3.485574527819575, 0.05, -88.78089630797295, 3.4854163965915195, 0.05, -88.95515910431568, 3.485255926854529, 0.05, -89.12941374776528, 3.485092868991893, 0.05, -89.30366011467017, 3.4849273380976356, 0.05, -89.4778980756016, 3.4847592186287772, 0.05, -89.65212750119599, 3.4845885118878552, 0.05, -89.82634826028173, 3.484415181714833, 0.05, -90.00056021783304, 3.484239151026141, 0.05, -90.17476323981296, 3.484060439598374, 0.05, -90.34895717993244, 3.4838788023894662, 0.05, -90.52314190347192, 3.483694470789579, 0.05, -90.69731726072855, 3.4835071451326285, 0.05, -90.87148311238845, 3.4833170331977317, 0.05, -91.0456392996602, 3.4831237454349426, 0.05, -91.21978568029304, 3.482927612657077, 0.05, -91.393922097095, 3.4827283360390626, 0.05, -91.56804839526878, 3.4825259634754113, 0.05, -91.74216440962661, 3.4823202871566177, 0.05, -91.91626998451866, 3.4821114978411143, 0.05, -92.09036495482597, 3.4818994061461974, 0.05, -92.26444915682148, 3.481684039910265, 0.05, -92.43852241532925, 3.481465170155241, 0.05, -92.6125845613884, 3.4812429211831444, 0.05, -92.7866354186244, 3.481017144719847, 0.05, -92.96067481243269, 3.480787876165836, 0.05, -93.13470256281656, 3.480555007677524, 0.05, -93.30871848481934, 3.4803184400554743, 0.05, -93.48272239488372, 3.4800782012877867, 0.05, -93.65671410505625, 3.4798342034504914, 0.05, -93.83069342717835, 3.4795864424419287, 0.05, -94.00466016491463, 3.4793347547255964, 0.05, -94.17861412369679, 3.4790791756433386, 0.05, -94.3525551051132, 3.4788196283282518, 0.05, -94.5264829072268, 3.4785560422717943, 0.05, -94.70039733386949, 3.4782885328539614, 0.05, -94.87429817078183, 3.4780167382466396, 0.05, -95.04818521491185, 3.4777408826005045, 0.05, -95.22205825171875, 3.4774607361378287, 0.05, -95.39591707571157, 3.477176479856252, 0.05, -95.56976146534144, 3.4768877925975974, 0.05, -95.74359120486605, 3.4765947904921477, 0.05, -95.91740607622485, 3.4762974271758798, 0.05, -96.09120586175062, 3.4759957105155523, 0.05, -96.2649903352426, 3.4756894698394625, 0.05, -96.4387592725715, 3.475378746577946, 0.05, -96.61251244794484, 3.4750635074668104, 0.05, -96.78624963409146, 3.474743722932466, 0.05, -96.95997060244252, 3.474419367021272, 0.05, -97.13367512331072, 3.474090417364067, 0.05, -97.30736296606928, 3.473756855170969, 0.05, -97.48103389933249, 3.4734186652642567, 0.05, -97.6546876911403, 3.4730758361562684, 0.05, -97.82832410963258, 3.47272836984565, 0.05, -98.00194292652357, 3.472376337819728, 0.05, -98.17554390574037, 3.47201958433606, 0.05, -98.34912681514487, 3.471658188090113, 0.05, -98.52269142954995, 3.471292288101614, 0.05, -98.69623751586859, 3.470921726372662, 0.05, -98.86976484926274, 3.470546667883013, 0.05, -99.04327320038782, 3.470167022501598, 0.05, -99.2167623528915, 3.4697830500735054, 0.05, -99.39023208171749, 3.469394576519987, 0.05, -99.56368217015994, 3.469001768849045, 0.05, -99.73711240495126, 3.4686046958266505, 0.05, -99.91052257613718, 3.468203423718333, 0.05, -100.08391248339203, 3.467798145097012, 0.05, -100.25728192248908, 3.4673887819411635, 0.05, -100.43063070264735, 3.466975603165268, 0.05, -100.60395863424037, 3.4665586318605133, 0.05, -100.77726553933117, 3.466138101815993, 0.05, -100.9505512463615, 3.465714140606566, 0.05, -101.12381559077843, 3.465286888338667, 0.05, -101.29705841570978, 3.464856498627119, 0.05, -101.47027957754757, 3.464423236755708, 0.05, -101.64347894017556, 3.463987252559795, 0.05, -101.81665638435031, 3.4635488834952297, 0.05, -101.98981179535639, 3.4631082201216343, 0.05, -102.16294507713543, 3.4626656355809935, 0.05, -102.33605614558597, 3.4622213690107344, 0.05, -102.50914492811803, 3.46177565064114, 0.05, -102.6822113744426, 3.4613289264915164, 0.05, -102.85525544624669, 3.46088143608175, 0.05, -103.02827712217089, 3.4604335184839945, 0.05, -103.20127640279448, 3.459985612471671, 0.05, -103.37425330434613, 3.4595380310328916, 0.05, -103.54720786384928, 3.4590911900629666, 0.05, -103.7201401400943, 3.4586455249003016, 0.05, -103.89305021547226, 3.45820150755918, 0.05, -104.06593819398168, 3.457759570188327, 0.05, -104.23880420232695, 3.457320166905409, 0.05, -104.41164839100495, 3.4568837735600897, 0.05, -104.58447094053592, 3.4564509906196696, 0.05, -104.75727205197259, 3.4560222287334668, 0.05, -104.93005195949253, 3.455598150398638, 0.05, -105.10281092078117, 3.4551792257727767, 0.05, -105.27554922262992, 3.454766036974993, 0.05, -105.44826718177318, 3.4543591828652445, 0.05, -105.62096514600918, 3.453959284720086, 0.05, -105.79364348933429, 3.45356686650197, 0.05, -105.96630261773225, 3.4531825679594106, 0.05, -106.13894297227058, 3.452807090766744, 0.05, -106.311565017643, 3.452440907448321, 0.05, -106.48416925598495, 3.45208476683897, 0.05, -106.65675621633964, 3.4517392070938993, 0.05, -106.82932646169756, 3.451404907158325, 0.05, -107.00188058391892, 3.4510824444272616, 0.05, -107.17441920580602, 3.450772437742049, 0.05, -107.34694298204809, 3.4504755248414076, 0.05, -107.51945259327263, 3.450192224490729, 0.05, -107.69194875144998, 3.4499231635471785, 0.05, -107.86443219622336, 3.449668895467631, 0.05, -108.0369036937785, 3.4494299511026814, 0.05, -108.2093640355835, 3.4492068361002373, 0.05, -108.38181403827632, 3.449000053856276, 0.05, -108.55425454221954, 3.448810078864508, 0.05, -108.72668640947722, 3.448637345153742, 0.05, -108.89911052211295, 3.4484822527143533, 0.05, -109.07152778047171, 3.448345167175298, 0.05, -109.24393910225447, 3.448226435655118, 0.05, -109.4163454194235, 3.4481263433803235, 0.05, -109.58874767878156, 3.4480451871612887, 0.05, -109.76114683550361, 3.4479831344411007, 0.05, -109.93354385494645, 3.4479403888568747, 0.05, -110.10593970993088, 3.4479170996886404, 0.05, -110.27833537728853, 3.4479133471529235, 0.05, -110.45073183487231, 3.447929151675802, 0.05, -110.62313006189417, 3.4479645404370483, 0.05, -110.79553103619129, 3.4480194859423077, 0.05, -110.96793572994315, 3.448093875037109, 0.05, -111.14034510921002, 3.4481875853372133, 0.05, -111.31276013159788, 3.4483004477574366, 0.05, -111.48518174361345, 3.4484322403112864, 0.05, -111.65761087985929, 3.4485827249168035, 0.05, -111.83004845876653, 3.448751578144683, 0.05, -112.00249538322012, 3.4489384890720145, 0.05, -112.17495253728906, 3.449143081378752, 0.05, -112.3474207847585, 3.449364949388728, 0.05, -112.51990096767456, 3.4496036583211533, 0.05, -112.6923939051051, 3.449858748611059, 0.05, -112.86490039113501, 3.4501297205980195, 0.05, -113.0374211942661, 3.450416062621818, 0.05, -113.20995705589729, 3.4507172326238833, 0.05, -113.38250868945161, 3.4510326710864248, 0.05, -113.55507677970502, 3.4513618050682386, 0.05, -113.7276619815365, 3.4517040366296974, 0.05, -113.90026492011431, 3.452058771556282, 0.05, -114.072886189699, 3.4524253916939878, 0.05, -114.24552635345434, 3.4528032751065543, 0.05, -114.41818594354366, 3.453191801786455, 0.05, -114.5908654606237, 3.4535903416008527, 0.05, -114.76356537450917, 3.453998277709387, 0.05, -114.93628612280196, 3.4544149658557335, 0.05, -115.10902811305611, 3.4548398050829903, 0.05, -115.28179172173277, 3.4552721735332157, 0.05, -115.45457729412811, 3.455711447906694, 0.05, -115.62738514711505, 3.456157059738639, 0.05, -115.8002155672113, 3.4566084019249304, 0.05, -115.97306881240804, 3.4570649039348598, 0.05, -116.14594511258015, 3.457526003442184, 0.05, -116.31884467003134, 3.457991149023861, 0.05, -116.49176766126244, 3.4584598246219738, 0.05, -116.66471423584818, 3.458931491714765, 0.05, -116.83768451954893, 3.45940567401508, 0.05, -117.01067861298316, 3.4598818686845783, 0.05, -117.1836965942447, 3.4603596252308604, 0.05, -117.35673851941601, 3.460838503426445, 0.05, -117.52980442220982, 3.4613180558761556, 0.05, -117.70289431733438, 3.4617979024913086, 0.05, -117.87600819893828, 3.462277632078056, 0.05, -118.04914604306462, 3.462756882526891, 0.05, -118.22230780844481, 3.4632353076036084, 0.05, -118.39549343622674, 3.4637125556386974, 0.05, -118.5687028535234, 3.4641883459333327, 0.05, -118.74193597000331, 3.4646623295981454, 0.05, -118.91519268363481, 3.465134272630189, 0.05, -119.08847287888412, 3.4656039049860365, 0.05, -119.26177642731245, 3.46607096856679, 0.05, -119.43510318936245, 3.4665352409997783, 0.05, -119.60845301441144, 3.4669965009796737, 0.05, -119.78182574306406, 3.4674545730526027, 0.05, -119.95522120583887, 3.4679092554961346, 0.05, -120.12863922506362, 3.468360384495182, 0.05, -120.30207961549588, 3.468807808645358, 0.05, -120.47554218535538, 3.4692513971900305, 0.05, -120.64902673491058, 3.4696909911038647, 0.05, -120.8225330596852, 3.4701264954922943, 0.05, -120.9960609509434, 3.470557825163992, 0.05, -121.16961019387377, 3.4709848586071588, 0.05, -121.34318056987148, 3.4714075199542154, 0.05, -121.51677185705594, 3.4718257436893465, 0.05, -121.69038383066571, 3.4722394721953536, 0.05, -121.86401626196822, 3.4726486260500997, 0.05, -122.03766892088028, 3.4730531782413085, 0.05, -122.21134157635608, 3.4734531095160706, 0.05, -122.38503399465532, 3.4738483659849084, 0.05, -122.55874594101952, 3.474238927284133, 0.05, -122.73247718054755, 3.474624790560442, 0.05, -122.90622747772811, 3.4750059436113214, 0.05, -123.07999659614075, 3.4753823682528275, 0.05, -123.2537843004172, 3.4757540855289264, 0.05, -123.42759035534966, 3.476121098649381, 0.05, -123.60141452705605, 3.476483434127625, 0.05, -123.77525657979233, 3.4768410547255257, 0.05, -123.94911628266097, 3.4771940573728, 0.05, -124.12299340314027, 3.4775424095860683, 0.05, -124.29688771222294, 3.477886181653416, 0.05, -124.47079897978506, 3.4782253512424997, 0.05, -124.64472698104717, 3.4785600252422566, 0.05, -124.81867149002419, 3.478890179540373, 0.05, -124.99263228446391, 3.4792158887945255, 0.05, -125.166609144288, 3.4795371964819175, 0.05, -125.34060184965423, 3.479854107324525, 0.05, -125.51461018434446, 3.480166693804508, 0.05, -125.6886339361932, 3.480475036974722, 0.05, -125.86267289394812, 3.480779155098331, 0.05, -126.03672684752067, 3.481079071451155, 0.05, -126.21079559081556, 3.481374865898034, 0.05, -126.38487892189518, 3.4816666215921868, 0.05, -126.55897663997688, 3.481954361634063, 0.05, -126.73308854571195, 3.4822381147014436, 0.05, -126.90721444426723, 3.482517971105552, 0.05, -127.08135414423283, 3.482793999312031, 0.05, -127.25550745531814, 3.4830662217062436, 0.05, -127.42967419091514, 3.483334711939936, 0.05, -127.60385416756999, 3.483599533097084, 0.05, -127.77804720326029, 3.483860713805982, 0.05, -127.95225312096828, 3.484118354159784, 0.05, -128.12647174434366, 3.484372467507583, 0.05, -128.30070290173134, 3.4846231477538523, 0.05, -128.47494642371402, 3.4848704396537338, 0.05, -128.64920214271933, 3.4851143801062747, 0.05, -128.8234698945845, 3.4853550373031665, 0.05, -128.99774951951346, 3.4855924985791997, 0.05, -129.17204085821666, 3.4858267740638116, 0.05, -129.3463437559963, 3.4860579555922713, 0.05, -129.52065805911033, 3.48628606228092, 0.05, -129.69498361785307, 3.4865111748548383, 0.05, -129.86932028526226, 3.4867333481838907, 0.05, -130.04366791669372, 3.486952628629403, 0.05, -130.2180263698997, 3.4871690641193536, 0.05, -130.39239550576224, 3.487382717251021, 0.05, -130.56677518760532, 3.487593636861359, 0.05, -130.74116528113015, 3.487801870496922, 0.05, -130.9155656550705, 3.4880074788072943, 0.05, -131.08997618075327, 3.4882105136553254, 0.05, -131.26439673060415, 3.4884109970176413, 0.05, -131.43882718127574, 3.488609013431737, 0.05, -131.61326741059543, 3.4888045863937327, 0.05, -131.78771730012932, 3.4889977906779994, 0.05, -131.96217673283587, 3.4891886541312886, 0.05, -132.1366455939468, 3.489377222218523, 0.05, -132.3111237715422, 3.4895635519081734, 0.05, -132.485611155137, 3.489747671895768, 0.05, -132.6601076379956, 3.4899296571716323, 0.05, -132.83461311366105, 3.4901095133089486, 0.05, -133.009127479774, 3.4902873222590713, 0.05, -133.18365063445884, 3.4904630936965555, 0.05, -133.35818247965176, 3.4906369038581624, 0.05, -133.53272291743465, 3.490808755657705, 0.05, -133.7072718531586, 3.4909787144787257, 0.05, -133.88182919514608, 3.491146839749518, 0.05, -134.0563948512257, 3.4913131215918907, 0.05, -134.23096873313548, 3.491477638195596, 0.05, -134.40555075371842, 3.491640411658837, 0.05, -134.58014082871128, 3.491801499857169, 0.05, -134.75473887451568, 3.4919609160877587, 0.05, -134.92934480984337, 3.4921187065535784, 0.05, -135.10395855602377, 3.492274923607768, 0.05, -135.27858003416344, 3.492429562793505, 0.05, -135.45320916955055, 3.4925827077422786, 0.05, -135.62784588806073, 3.4927343702038747, 0.05, -135.80249011662423, 3.492884571269928, 0.05, -135.97714178571917, 3.4930333818990627, 0.05, -136.15180082542867, 3.493180794190026, 0.05, -136.32646716877977, 3.4933268670221445, 0.05, -136.50114074992985, 3.493471623001584, 0.05, -136.67582150574873, 3.493615116377875, 0.05, -136.8505093723683, 3.4937573323914637, 0.05, -137.0252042898206, 3.4938983490464537, 0.05, -137.19990619869026, 3.49403817739281, 0.05, -137.3746150404236, 3.4941768346667383, 0.05, -137.5493279309735, 3.4942578109979707, 0.05, -137.72403574536852, 3.4941562879003873, 0.05, -137.89872594846412, 3.493804061911642, 0.05, -138.0733860040687, 3.4932011120917026, 0.05, -138.24800337510743, 3.4923474207745655, 0.05, -138.42256552528394, 3.491243003530074, 0.05, -138.59705991640436, 3.4898878224083694, 0.05, -138.77147401084247, 3.488281888762145, 0.05, -138.94579527059085, 3.486425194967736, 0.05, -139.12001115700795, 3.4843177283420235, 0.05, -139.29410913117408, 3.4819594833225835, 0.05, -139.46807665399248, 3.479350456368222, 0.05, -139.64190118505795, 3.4764906213091837, 0.05, -139.81557018513774, 3.4733800015958374, 0.05, -139.9890711135403, 3.4700185680508513, 0.05, -140.16239142994365, 3.466406328067185, 0.05, -140.33551859286996, 3.4625432585263898, 0.05, -140.50844006140568, 3.4584293707145353, 0.05, -140.6811432938632, 3.454064649150231, 0.05, -140.85361574853897, 3.449449093515823, 0.05, -141.02584488257668, 3.4445826807543933, 0.05, -141.19781815407552, 3.4394654299770546, 0.05, -141.36952301964047, 3.434097311298921, 0.05, -141.5409469364837, 3.4284783368647553, 0.05, -141.71207736105328, 3.4226084913914554, 0.05, -141.88290174928682, 3.4164877646709706, 0.05, -142.05340755701647, 3.4101161545931533, 0.05, -142.22358224000055, 3.403493659681717, 0.05, -142.39341325344938, 3.396620268976825, 0.05, -142.5628880518733, 3.3894959684784136, 0.05, -142.73199408981577, 3.3821207588495206, 0.05, -142.90071882166842, 3.374494637052812, 0.05, -143.06904970114383, 3.3666175895079236, 0.05, -143.2369741814641, 3.3584896064054526, 0.05, -143.40447971591573, 3.3501106890325913, 0.05, -143.57155375684937, 3.3414808186729372, 0.05, -143.7381837568027, 3.33259999906635, 0.05, -143.90435716752214, 3.323468214388885, 0.05, -144.07006144048984, 3.314085459354048, 0.05, -144.23528402663263, 3.304451722855562, 0.05, -144.40001237669384, 3.2945670012240735, 0.05, -144.56423394070538, 3.284431280230931, 0.05, -144.7279361684362, 3.2740445546162293, 0.05, -144.89110650905351, 3.263406812346144, 0.05, -145.05373241137485, 3.2525180464269092, 0.05, -145.2158013236501, 3.241378245505185, 0.05, -145.3773006936267, 3.2299873995318467, 0.05, -145.53821796856317, 3.2183454987295526, 0.05, -145.69854059516922, 3.2064525321211867, 0.05, -145.85825601964052, 3.194308489425739, 0.05, -146.01735168760325, 3.1819133592544824, 0.05, -146.17581504412226, 3.1692671303803253, 0.05, -146.3336335336723, 3.1563697910008757, 0.05, -146.4907946001533, 3.143221329619957, 0.05, -146.64728568682696, 3.1298217334734644, 0.05, -146.80309423639434, 3.116170991347638, 0.05, -146.95820769083394, 3.1022690887918833, 0.05, -147.11261349162177, 3.0881160157564405, 0.05, -147.2662990793976, 3.0737117555168574, 0.05, -147.41925189422452, 3.0590562965383428, 0.05, -147.571459375454, 3.044149624589654, 0.05, -147.72290896174133, 3.028991725746805, 0.05, -147.87358809118913, 3.0135825889560413, 0.05, -148.02348420079642, 2.997922192145601, 0.05, -148.17258472714173, 2.982010526906148, 0.05, -148.32087710600365, 2.9658475772386796, 0.05, -148.4683487722293, 2.9494333245128046, 0.05, -148.6149871601496, 2.932767758406333, 0.05, -148.7607797030445, 2.9158508578976488, 0.05, -148.90571383360475, 2.898682611204734, 0.05, -149.0497769835544, 2.881262998993134, 0.05, -149.19295658396882, 2.863592008288167, 0.05, -149.33524006472902, 2.845669615204002, 0.05, -149.47661485562796, 2.827495817978606, 0.05, -149.6170683847052, 2.809070581544913, 0.05, -149.75658807963438, 2.7903938985839196, 0.05, -149.89516136720198, 2.7714657513521224, 0.05, -150.03277567326805, 2.752286121321137, 0.05, -150.169418422718, 2.732854988999145, 0.05, -150.3050770397177, 2.713172339993879, 0.05, -150.4397389475242, 2.693238156130265, 0.05, -150.57339156841664, 2.6730524178487203, 0.05, -150.70602232368554, 2.6526151053780604, 0.05, -150.8376186338147, 2.6319262025835193, 0.05, -150.96816791857893, 2.610985695284521, 0.05, -151.0976575963908, 2.5897935562373764, 0.05, -151.2260750853715, 2.5683497796139956, 0.05, -151.35340780227367, 2.5466543380435294, 0.05, -151.4796431629943, 2.5247072144126594, 0.05, -151.604768582602, 2.5025083921535387, 0.05, -151.72877147514654, 2.480057850891322, 0.05, -151.85163925415205, 2.4573555801101494, 0.05, -151.9733593317688, 2.4344015523350118, 0.05, -152.09391911977298, 2.411195760083801, 0.05, -152.2133060283637, 2.3877381718143478, 0.05, -152.33150746778944, 2.3640287885150646, 0.05, -152.44851084673292, 2.3400675788696867, 0.05, -152.56430357326684, 2.315854530678677, 0.05, -152.678873054393, 2.2913896225228743, 0.05, -152.792206697059, 2.2666728533199363, 0.05, -152.9042947439239, 2.241760937298442, 0.05, -153.015133695596, 2.2167790334417816, 0.05, -153.12472347562698, 2.1917956006194736, 0.05, -153.23306400689196, 2.166810625299918, 0.05, -153.34015521341942, 2.1418241305493613, 0.05, -153.44599701946746, 2.11683612096044, 0.05, -153.55058934936122, 2.0918465978749627, 0.05, -153.653932128753, 2.066855587835866, 0.05, -153.75602528242496, 2.0418630734387944, 0.05, -153.85686873696386, 2.0168690907782083, 0.05, -153.95646241855252, 1.9918736317730024, 0.05, -154.05480625358624, 1.9668767006741157, 0.05, -154.15190016998523, 1.941878327979798, 0.05, -154.2477440948273, 1.9168784968417403, 0.05, -154.3423379564839, 1.8918772331316553, 0.05, -154.43568168379156, 1.8668745461530356, 0.05, -154.52777520540133, 1.8418704321954351, 0.05, -154.618618451367, 1.816864919313969, 0.05, -154.70821135212068, 1.7918580150736556, 0.05, -154.79655383737168, 1.7668497050200116, 0.05, -154.8836458382857, 1.741840018280283, 0.05, -154.9694872871241, 1.7168289767681204, 0.05, -155.0540781161507, 1.6918165805315843, 0.05, -155.137418257282, 1.6668028226260967, 0.05, -155.21950764399332, 1.641787734226347, 0.05, -155.30034621058286, 1.6167713317907266, 0.05, -155.3799338907145, 1.5917536026329429, 0.05, -155.45827062034425, 1.5667345925948999, 0.05, -155.53535633431667, 1.5417142794482455, 0.05, -155.61119096924867, 1.5166926986400724, 0.05, -155.6857744616045, 1.4916698471163161, 0.05, -155.759106749675, 1.4666457614102808, 0.05, -155.83118777064882, 1.4416204194767956, 0.05, -155.90201746403477, 1.4165938677190084, 0.05, -155.97159576900563, 1.3915660994173646, 0.05, -156.0399226256867, 1.3665371336214622, 0.05, -156.10699797554813, 1.3415069972284406, 0.05, -156.17282175976183, 1.3164756842740377, 0.05, -156.23739392088007, 1.2914432223647025, 0.05, -156.30071440258925, 1.2664096341837434, 0.05, -156.3627859872859, 1.2414316939330639, 0.05, -156.42361772382537, 1.2166347307898804, 0.05, -156.48322208599004, 1.1920872432930656, 0.05, -156.54161154871315, 1.1677892544620332, 0.05, -156.5987985897384, 1.1437408205054265, 0.05, -156.65479568684975, 1.1199419422267964, 0.05, -156.70961532028267, 1.096392668658006, 0.05, -156.76326997168022, 1.0730930279508895, 0.05, -156.81577212358306, 1.0500430380569414, 0.05, -156.86713426075758, 1.0272427434901839, 0.05, -156.91736886867344, 1.0046921583172996, 0.05, -156.96648843412538, 0.9823913090387104, 0.05, -157.01450544672585, 0.9603402520095686, 0.05, -157.06143239523684, 0.9385389702197862, 0.05, -157.10728177206295, 0.9169875365224487, 0.05, -157.15206606864714, 0.895685931684156, 0.05, -157.19579777903687, 0.8746342077945187, 0.05, -157.238489398825, 0.8538323957629484, 0.05, -157.28015342382162, 0.8332804999322319, 0.05, -157.320802352168, 0.8129785669272928, 0.05, -157.3604486822019, 0.7929266006782572, 0.05, -157.39910491422887, 0.7731246405392809, 0.05, -157.43678354911114, 0.7535726976451498, 0.05, -157.47349708949477, 0.7342708076724698, 0.05, -157.50925803851436, 0.7152189803920452, 0.05, -157.544078900698, 0.6964172436724583, 0.05, -157.5779721818552, 0.6778656231439146, 0.05, -157.61095038881697, 0.6595641392357313, 0.05, -157.643026028835, 0.6415128003607398, 0.05, -157.6742116106682, 0.6237116366638429, 0.05, -157.70451964391427, 0.6061606649209095, 0.05, -157.73396264026087, 0.5888599269322388, 0.05, -157.7625531099687, 0.5718093941569711, 0.05, -157.79030356613788, 0.5550091233835309, 0.05, -157.8172265222292, 0.5384591218262526, 0.05, -157.84333449249712, 0.5221594053585227, 0.05, -157.8686399917185, 0.5061099844278824, 0.05, -157.89315553687638, 0.4903109031573712, 0.05, -157.91689364336122, 0.4747621296965775, 0.05, -157.9398668302545, 0.459463737865137, 0.05, -157.96208761459724, 0.44441568685509125, 0.05, -157.98356851648632, 0.42961803778166957, 0.05, -158.00432205457398, 0.4150707617529963, 0.05, -158.02436075104686, 0.4007739294573375, 0.05, -158.0436971257615, 0.3867274942928964, 0.05, -158.0623437008568, 0.3729315019059113, 0.05, -158.08031299895774, 0.35938596201926465, 0.05, -158.09761754306336, 0.34609088211274625, 0.05, -158.1142698564906, 0.3330462685448864, 0.05, -158.1302824649644, 0.32025216947593255, 0.05, -158.14566789170152, 0.30770853474249193, 0.05, -158.16043866269558, 0.29541541988100534, 0.05, -158.17460730394438, 0.283372824976159, 0.05, -158.18818634119987, 0.27158074510974195, 0.05, -158.20118830244687, 0.26003922493978504, 0.05, -158.21362571398925, 0.24874823084766992, 0.05, -158.22551110365754, 0.23770779336605216, 0.05, -158.23685700027653, 0.22691793238008975, 0.05, -158.24767593170017, 0.21637862847258044, 0.05, -158.25798042734044, 0.20608991280543323, 0.05, -158.2677830158851, 0.19605177089298945, 0.05, -158.27709622772073, 0.18626423671280332, 0.05, -158.28593259303466, 0.17672730627875702, 0.05, -158.29430464106886, 0.16744096068396291, 0.05, -158.30222490344633, 0.15840524754924146, 0.05, -158.30970591000843, 0.14962013124215973, 0.05, -158.31676019312363, 0.14108566230406314, 0.05, -158.32340028411318, 0.132801819791087, 0.05, -158.32963871375003, 0.12476859273698947, 0.05, -158.33548801408446, 0.11698600668875087, 0.05, -158.34096071793132, 0.1094540769369918, 0.05, -158.3460693573415, 0.10217278820339898, 0.05, -158.35082646435617, 0.09514214029343969, 0.05, -158.35524457236443, 0.08836216016510229, 0.05, -158.35933621339865, 0.08183282068442677, 0.05, -158.36311392114587, 0.07555415494436629, 0.05, -158.36659022795678, 0.0695261362180786, 0.05, -158.36977766807766, 0.06374880241764591, 0.05, -158.3726887739951, 0.05822211834879498, 0.05, -158.37533608013345, 0.0529461227670181, 0.05, -158.37773211917295, 0.04792078078966447, 0.05, -158.37988942484913, 0.04314611352368738, 0.05, -158.38182053152542, 0.03862213352610901, 0.05, -158.3835379722399, 0.03434881428965432, 0.05, -158.3850542816484, 0.03032618816950158, 0.05, -158.3863819935112, 0.02655423725626589, 0.05, -158.3875336408725, 0.02303294722602248, 0.05, -158.3885217595247, 0.019762373044313164, 0.05, -158.38935888220087, 0.016742453523025287, 0.05, -158.39005754323387, 0.013973220660207248, 0.05, -158.39063027654993, 0.011454666321105962, 0.05, -158.3910896176726, 0.009186822453509741, 0.05, -158.3914480987667, 0.007169621881763663, 0.05, -158.39171825592268, 0.005403143120165395, 0.05, -158.39191262198196, 0.003887321185375532, 0.05, -158.39204373147106, 0.002622189782204382, 0.05, -158.39212411876687, 0.0016077459164547993, 0.05, -158.392166318149, 8.439876428297127E-4, 0.05, -158.3921828638411, 3.309138417764795E-4, 0.05, -158.3921862900402, 6.852398200665535E-5, 0.05, -158.3921862900402, 0.0, 0.05, +2.3709378636590627E-5, 3.4918757273181254E-4, 0.05, +6.29929520824073E-5, 7.856714689163331E-4, 0.05, +1.3283031859582853E-4, 0.0013967473302684246, 0.05, +2.4195095420087868E-4, 0.0021824127121010035, 0.05, +3.990841347510599E-4, 0.003142663611003623, 0.05, +6.129588384760976E-4, 0.004277494074500755, 0.05, +0.001188815135030676, 0.01151712593109157, 0.05, +0.0020486088383565, 0.01719587406651648, 0.05, +0.0031100803825556958, 0.021229430883983914, 0.05, +0.00439445562521993, 0.025687504853284675, 0.05, +0.00592296214029812, 0.0305701303015638, 0.05, +0.007716826087696106, 0.03587727894795972, 0.05, +0.009797271870975134, 0.041608915665580545, 0.05, +0.012185521766375683, 0.04776499790801098, 0.05, +0.014902800669194, 0.05434557805636631, 0.05, +0.017970326625679205, 0.061350519129704115, 0.05, +0.021409319206670475, 0.06877985161982542, 0.05, +0.02524099453752541, 0.07663350661709868, 0.05, +0.029486567847779963, 0.08491146620509107, 0.05, +0.03416724955855478, 0.09361363421549644, 0.05, +0.039304249798204925, 0.10274000479300288, 0.05, +0.04491877343614643, 0.11229047275883007, 0.05, +0.05103202220026284, 0.12226497528232819, 0.05, +0.05766519474887368, 0.13266345097221682, 0.05, +0.06483948510665034, 0.1434858071555332, 0.05, +0.07257608216627702, 0.1547319411925336, 0.05, +0.08089617079306138, 0.16640177253568741, 0.05, +0.08982092977020079, 0.17849517954278818, 0.05, +0.09937153191901357, 0.19101204297625568, 0.05, +0.10956914384649005, 0.20395223854952965, 0.05, +0.12043492445568549, 0.21731561218390866, 0.05, +0.13199002736619825, 0.23110205821025523, 0.05, +0.14425559723960607, 0.24531139746815653, 0.05, +0.15725276744816757, 0.25994340417122985, 0.05, +0.17100266592452762, 0.2749979695272009, 0.05, +0.18552640813376234, 0.29047484418469416, 0.05, +0.2008451005948358, 0.3063738492214689, 0.05, +0.21697983678356775, 0.32269472377463915, 0.05, +0.23395169985649067, 0.3394372614584586, 0.05, +0.25178175769390165, 0.35660115674821957, 0.05, +0.270491066755894, 0.3741861812398476, 0.05, +0.29010066613552327, 0.39219198759258533, 0.05, +0.31063158087919135, 0.4106182948733621, 0.05, +0.3321048184448335, 0.4294647513128439, 0.05, +0.35454136780386936, 0.4487309871807166, 0.05, +0.37796220037549444, 0.46841665143250116, 0.05, +0.4023882644086676, 0.4885212806634626, 0.05, +0.4278404907063984, 0.509044525954616, 0.05, +0.4543397819572898, 0.5299858250178284, 0.05, +0.48190701876027886, 0.5513447360597814, 0.05, +0.5105630582224803, 0.5731207892440291, 0.05, +0.5403287247337308, 0.5953133302250103, 0.05, +0.571224816154018, 0.6179218284057436, 0.05, +0.6032721006889368, 0.6409456906983754, 0.05, +0.6364913100320349, 0.6643841868619618, 0.05, +0.6709031427341692, 0.6882366540426871, 0.05, +0.7065282612891272, 0.7125023710991603, 0.05, +0.7433872862566823, 0.7371804993511014, 0.05, +0.781500800014275, 0.7622702751518542, 0.05, +0.8208893388295786, 0.7877707763060723, 0.05, +0.8615733927032153, 0.813681077472735, 0.05, +0.9035734016995972, 0.8400001799276386, 0.05, +0.9469097564979752, 0.8667270959675595, 0.05, +0.9916027910480232, 0.8938606910009594, 0.05, +1.0376727812990874, 0.9213998050212814, 0.05, +1.085139943373171, 0.9493432414816744, 0.05, +1.1340244280286602, 0.9776896931097835, 0.05, +1.1843463168563029, 1.0064377765528543, 0.05, +1.2361256237788638, 1.0355861384512175, 0.05, +1.2893822824366716, 1.0651331731561566, 0.05, +1.3441361497408235, 1.0950773460830385, 0.05, +1.4004069994329464, 1.1254169938424596, 0.05, +1.4582145159606252, 1.156150330553576, 0.05, +1.5175782915267504, 1.187275511322503, 0.05, +1.57851782144503, 1.2187905983655907, 0.05, +1.6410524989187905, 1.250693549475208, 0.05, +1.70520160996893, 1.2829822210027921, 0.05, +1.7709843281555626, 1.3156543637326505, 0.05, +1.8384197090917085, 1.3487076187229168, 0.05, +1.9075266847482684, 1.3821395131311958, 0.05, +1.9783240575497587, 1.415947456029805, 0.05, +2.0508304942608366, 1.4501287342215563, 0.05, +2.1250645207833916, 1.4846805304510964, 0.05, +2.20104451253006, 1.5195998349333746, 0.05, +2.278788691065197, 1.5548835707027402, 0.05, +2.3583151160290217, 1.590528499276488, 0.05, +2.4396416772667067, 1.6265312247537027, 0.05, +2.522786087984856, 1.6628882143629824, 0.05, +2.6077658775749617, 1.6995957918021178, 0.05, +2.6945983832578166, 1.7366501136570955, 0.05, +2.783300742128957, 1.7740471774228057, 0.05, +2.8738898842081264, 1.8117828415833899, 0.05, +2.966382521416803, 1.8498527441735269, 0.05, +3.06079514178305, 1.88825240732494, 0.05, +3.157143999234796, 1.9269771490349157, 0.05, +3.2554451048335697, 1.9660221119754768, 0.05, +3.3557142184174706, 2.0053822716780187, 0.05, +3.4579668380880397, 2.0450523934113787, 0.05, +3.5622181919182383, 2.0850270766039674, 0.05, +3.6684728151197037, 2.1250924640293074, 0.05, +3.7767245822277875, 2.1650353421616764, 0.05, +3.8869671402722066, 2.204851160888384, 0.05, +3.999193904747585, 2.244535289507567, 0.05, +4.113398055786365, 2.284083020775607, 0.05, +4.229572535198705, 2.323489588246794, 0.05, +4.347710042893863, 2.3627501539031543, 0.05, +4.467803033581817, 2.4018598137590876, 0.05, +4.589843715095473, 2.4408136302731034, 0.05, +4.713824044655387, 2.4796065911982743, 0.05, +4.839735727589002, 2.5182336586722887, 0.05, +4.96757021450177, 2.5566897382553697, 0.05, +5.097318700892729, 2.5949697278191795, 0.05, +5.2289721247011745, 2.6330684761689103, 0.05, +5.362521166103488, 2.6709808280462837, 0.05, +5.497956245973059, 2.708701597391409, 0.05, +5.635267526942347, 2.746225619385772, 0.05, +5.774444912368469, 2.7835477085224256, 0.05, +5.915478047501198, 2.820662702654584, 0.05, +6.058356320131414, 2.8575654526043173, 0.05, +6.2030688619570045, 2.8942508365118136, 0.05, +6.3496045503996905, 2.9307137688537246, 0.05, +6.497952008900752, 2.9669491700212234, 0.05, +6.648099613938519, 3.002952100755343, 0.05, +6.8000354930516655, 3.038717582262927, 0.05, +6.953747531415812, 3.0742407672829186, 0.05, +7.10922337383809, 3.1095168484455673, 0.05, +7.266450431100008, 3.144541145238351, 0.05, +7.425415881879633, 3.1793090155925006, 0.05, +7.5861066806312625, 3.2138159750325848, 0.05, +7.7485095633672065, 3.2480576547188758, 0.05, +7.912611048520489, 3.282029703065646, 0.05, +8.078397451914176, 3.3157280678737435, 0.05, +8.24585488694524, 3.349148700621285, 0.05, +8.414969273639922, 3.382287733893652, 0.05, +8.585726347783147, 3.4151414828644855, 0.05, +8.758111667648732, 3.4477063973116917, 0.05, +8.932110623810638, 3.4799791232381265, 0.05, +9.107708446592474, 3.5119564556367058, 0.05, +9.284890215360893, 3.5436353753683667, 0.05, +9.46363105852885, 3.5748168633591693, 0.05, +9.643896276253264, 3.6053043544882524, 0.05, +9.825651232508, 3.635099125094716, 0.05, +10.008861371171891, 3.6642027732778235, 0.05, +10.193492234495562, 3.692617266473429, 0.05, +10.379509479849887, 3.7203449070865093, 0.05, +10.566878896360873, 3.747388330219703, 0.05, +10.75556641808772, 3.77375043453696, 0.05, +10.94553814904142, 3.799434619073974, 0.05, +11.136760371814152, 3.82444445545462, 0.05, +11.329199561953612, 3.8487838027891867, 0.05, +11.522822414659203, 3.872457054111834, 0.05, +11.717595845834836, 3.8954686235126754, 0.05, +11.913487016425115, 3.917823411805582, 0.05, +12.110463345031068, 3.939526572119035, 0.05, +12.308492518418687, 3.9605834677523903, 0.05, +12.507542507027011, 3.9809997721664945, 0.05, +12.707581577969357, 4.000781418846913, 0.05, +12.908578307522573, 4.019934591064309, 0.05, +13.110501593081848, 4.038465711185504, 0.05, +13.313320659171595, 4.056381321794953, 0.05, +13.517005076951584, 4.073688355599767, 0.05, +13.721524763961447, 4.0903937401972605, 0.05, +13.926849999601867, 4.106504712808385, 0.05, +14.132951434138068, 4.122028690724028, 0.05, +14.339800089740118, 4.1369731120409865, 0.05, +14.547367375326017, 4.151345711717992, 0.05, +14.755625087797474, 4.165154249429166, 0.05, +14.964545416784564, 4.17840657974178, 0.05, +15.174100956028045, 4.19111078486963, 0.05, +15.38426470065087, 4.203274892456489, 0.05, +15.595010053394587, 4.214907054874341, 0.05, +15.806310828614754, 4.226015504403323, 0.05, +16.01814125415243, 4.236608510753539, 0.05, +16.230475967434238, 4.246694265636175, 0.05, +16.443290027292527, 4.256281197165774, 0.05, +16.65655890455288, 4.265377545207118, 0.05, +16.870258484960985, 4.273991608162102, 0.05, +17.08436507176114, 4.282131736003114, 0.05, +17.298855377247996, 4.289806109737108, 0.05, +17.513706528393282, 4.297023022905702, 0.05, +17.72889605731436, 4.303790578421518, 0.05, +17.944401906215912, 4.3101169780310755, 0.05, +18.160202412802825, 4.316010131738262, 0.05, +18.376276321485413, 4.32147817365178, 0.05, +18.5926027667265, 4.326528904821731, 0.05, +18.809161267707253, 4.331170019615043, 0.05, +19.025931737751343, 4.335409400881774, 0.05, +19.24289445931266, 4.339254431226311, 0.05, +19.460030097392885, 4.342712761604493, 0.05, +19.67731967793596, 4.345791610861492, 0.05, +19.894744591628772, 4.348498273856258, 0.05, +20.112286579543895, 4.350839758302478, 0.05, +20.32992773456965, 4.3528231005151286, 0.05, +20.547650486803843, 4.354455044683863, 0.05, +20.765437607707703, 4.355742418077202, 0.05, +20.98327218536816, 4.3566915532091866, 0.05, +21.201137633037515, 4.357308953387076, 0.05, +21.419017673106126, 4.357600801372205, 0.05, +21.636896337498197, 4.35757328784143, 0.05, +21.85475794440294, 4.357232138094912, 0.05, +22.07258711052183, 4.35658332237782, 0.05, +22.290368728680548, 4.355632363174367, 0.05, +22.508087966141673, 4.354384749222502, 0.05, +22.725730251774188, 4.3528457126502635, 0.05, +22.94328127887611, 4.3510205420384676, 0.05, +23.160726984159727, 4.348914105672345, 0.05, +23.378053551739395, 4.346531351593381, 0.05, +23.5952473960002, 4.343876885216112, 0.05, +23.81229515786318, 4.340955237259558, 0.05, +24.029183701311496, 4.33777086896635, 0.05, +24.245900099878895, 4.334327971348014, 0.05, +24.462431631702145, 4.330630636464992, 0.05, +24.6787657706636, 4.3266827792291025, 0.05, +24.89489018304281, 4.322488247584275, 0.05, +25.110792717622516, 4.318050691594119, 0.05, +25.326461398896676, 4.313373625483226, 0.05, +25.54188442054034, 4.308460432873296, 0.05, +25.75705013875776, 4.303314364348313, 0.05, +25.971947065783734, 4.297938540519484, 0.05, +26.18656386330894, 4.2923359505041505, 0.05, +26.400889336961836, 4.286509473057907, 0.05, +26.614912430408104, 4.280461868925342, 0.05, +26.828622216918028, 4.2741957301985, 0.05, +27.04200789738007, 4.267713609240886, 0.05, +27.255058792547008, 4.261017903338766, 0.05, +27.46776433813709, 4.254110911801629, 0.05, +27.680114073398087, 4.2469947052198975, 0.05, +27.892097651932996, 4.239671570698144, 0.05, +28.10370481545474, 4.232143270434862, 0.05, +28.314925407609522, 4.224411843095603, 0.05, +28.525749358646532, 4.2164790207402305, 0.05, +28.73616668379554, 4.208346502980125, 0.05, +28.94616747767391, 4.20001587756747, 0.05, +29.155741911601915, 4.191488678560105, 0.05, +29.364880230695373, 4.1827663818691745, 0.05, +29.573572746352017, 4.1738503131329034, 0.05, +29.781809833536972, 4.164741743699074, 0.05, +29.989581929259113, 4.155441914442806, 0.05, +30.196879528365205, 4.145951982121816, 0.05, +30.40370055249003, 4.136420482496488, 0.05, +30.610050273521885, 4.126994420637142, 0.05, +30.815933877015027, 4.1176720698628175, 0.05, +31.021356463073833, 4.108451721176123, 0.05, +31.226323051761604, 4.099331773755406, 0.05, +31.43083857854014, 4.090310535570747, 0.05, +31.634907899287217, 4.081386414941543, 0.05, +31.838535787777534, 4.072557769806361, 0.05, +32.04172693752451, 4.063822994939519, 0.05, +32.2444859616795, 4.055180483099829, 0.05, +32.44681739708714, 4.0466287081527135, 0.05, +32.64872570135752, 4.038166085407629, 0.05, +32.850215254765324, 4.029791068156006, 0.05, +33.05129036239711, 4.021502152635807, 0.05, +33.25195524935315, 4.013297739120795, 0.05, +33.45221407332574, 4.00517647945178, 0.05, +33.652070912372686, 3.9971367809389373, 0.05, +33.85152977248888, 3.9891772023238947, 0.05, +34.05059458830724, 3.981296316367271, 0.05, +34.24926922380363, 3.973492709927704, 0.05, +34.44755746820185, 3.9657648879644203, 0.05, +34.64546304592976, 3.958111554558125, 0.05, +34.84298960856611, 3.950531252727023, 0.05, +35.040140740221844, 3.94302263311477, 0.05, +35.23691995824734, 3.935584360509897, 0.05, +35.433330713937885, 3.928215113810894, 0.05, +35.62937638835828, 3.9209134884078836, 0.05, +35.82506030361859, 3.913678305206228, 0.05, +36.02038571311911, 3.906508190010445, 0.05, +36.21535580732265, 3.8994018840708256, 0.05, +36.4099737144396, 3.892358142338959, 0.05, +36.60424250110812, 3.885375733370258, 0.05, +36.798165171869634, 3.8784534152303856, 0.05, +36.99174466955995, 3.8715899538063225, 0.05, +37.184983878929586, 3.8647841873926727, 0.05, +37.37788562509904, 3.858034923389127, 0.05, +37.57045267401782, 3.851340978375657, 0.05, +37.762687734301515, 3.8447012056738243, 0.05, +37.954593457861684, 3.83811447120334, 0.05, +38.14617243880523, 3.8315796188709563, 0.05, +38.337427217021656, 3.8250955643284428, 0.05, +38.528360276457164, 3.8186611887101387, 0.05, +38.7189740475975, 3.8122754228066573, 0.05, +38.90927090578479, 3.805937163745815, 0.05, +39.09925317351584, 3.799645354621033, 0.05, +39.28892312100853, 3.7933989498538017, 0.05, +39.47828296675913, 3.7871969150120854, 0.05, +39.667334878090585, 3.7810382266290725, 0.05, +39.85608097031446, 3.774921844477522, 0.05, +40.04452330933145, 3.768846780339953, 0.05, +40.23266391112793, 3.7628120359295636, 0.05, +40.420504743316954, 3.756816643780448, 0.05, +40.608047723771875, 3.7508596090984416, 0.05, +40.795294722356736, 3.744939971697266, 0.05, +40.982247562062994, 3.739056794125107, 0.05, +41.16890801815486, 3.7332091218373518, 0.05, +41.355277819946814, 3.7273960358391043, 0.05, +41.54135865058995, 3.721616612862709, 0.05, +41.72715214720723, 3.715869932345653, 0.05, +41.912659900682975, 3.710155069514967, 0.05, +42.097883459725416, 3.70447118084877, 0.05, +42.282824325883105, 3.698817323153729, 0.05, +42.467483958559285, 3.6931926535235613, 0.05, +42.65186377336099, 3.6875962960342017, 0.05, +42.835965142263326, 3.6820273780466195, 0.05, +43.0197893945735, 3.676485046203478, 0.05, +43.20333781728258, 3.6709684541816503, 0.05, +43.386611655407215, 3.6654767624926343, 0.05, +43.569612112321266, 3.660009138281011, 0.05, +43.75234035007767, 3.6545647551280545, 0.05, +43.934797489720225, 3.649142792851146, 0.05, +44.116984611519534, 3.643742435986193, 0.05, +44.29890275432899, 3.6383628561891177, 0.05, +44.4805529189957, 3.633003293334192, 0.05, +44.661936064638375, 3.627662912853471, 0.05, +44.84305311180635, 3.622340943359479, 0.05, +45.023904941137985, 3.6170365866326986, 0.05, +45.20449239499752, 3.6117490771907157, 0.05, +45.384816275455826, 3.6064776091660438, 0.05, +45.56487734774053, 3.601221445694061, 0.05, +45.7446763377129, 3.5959797994475733, 0.05, +45.92421393272838, 3.5907519003095256, 0.05, +46.103490782835216, 3.585537002136775, 0.05, +46.28250750009191, 3.5803343451338865, 0.05, +46.46126465877942, 3.57514317375026, 0.05, +46.639762795707014, 3.5699627385519475, 0.05, +46.818002410359526, 3.5647922930502434, 0.05, +46.995983965035094, 3.559631093511327, 0.05, +47.173707884972494, 3.554478398747972, 0.05, +47.35117455846896, 3.54933346992933, 0.05, +47.52838433698769, 3.544195570374581, 0.05, +47.705337535255644, 3.5390639653590608, 0.05, +47.88203443135118, 3.5339379219107427, 0.05, +48.05847526678171, 3.528816708610601, 0.05, +48.23466024655157, 3.52369959539719, 0.05, +48.410589539219345, 3.5185858533554297, 0.05, +48.5862632769454, 3.5134747545211242, 0.05, +48.76168155552964, 3.5083655716847253, 0.05, +48.93684443443853, 3.5032575781777058, 0.05, +49.111751936822216, 3.4981500476738545, 0.05, +49.286404049521686, 3.4930422539894477, 0.05, +49.46080072306535, 3.487933470873271, 0.05, +49.63494187165541, 3.4828229718012285, 0.05, +49.80882737318545, 3.4777100306008455, 0.05, +49.9824570690927, 3.4725939181450487, 0.05, +50.1558307644113, 3.467473906371925, 0.05, +50.32894822769097, 3.462349265593471, 0.05, +50.50180919093147, 3.4572192648098823, 0.05, +50.674413349506516, 3.452083171500964, 0.05, +50.84676036207738, 3.446940251417395, 0.05, +51.0188498504957, 3.441789768366299, 0.05, +51.19068139969549, 3.43663098399594, 0.05, +51.36225455757492, 3.4314631575886314, 0.05, +51.533568835052755, 3.4262855495566824, 0.05, +51.70462370547919, 3.421097408528757, 0.05, +51.875418604814804, 3.415897986712165, 0.05, +52.045952931426584, 3.4106865322355433, 0.05, +52.216226045890814, 3.405462289284654, 0.05, +52.38623727127805, 3.4002245077446562, 0.05, +52.555985891918176, 3.394972412802543, 0.05, +52.72547115368027, 3.389705235241831, 0.05, +52.894692264920636, 3.3844222248073934, 0.05, +53.06364839387589, 3.379122579105012, 0.05, +53.2323386708206, 3.3738055388943544, 0.05, +53.400762185994196, 3.368470303471857, 0.05, +53.568917991107845, 3.363116102272984, 0.05, +53.73680509673752, 3.357742112593459, 0.05, +53.904422474647234, 3.3523475581943285, 0.05, +54.07176905599784, 3.3469316270120797, 0.05, +54.23884373066564, 3.3414934933559985, 0.05, +54.40564534810805, 3.336032348848206, 0.05, +54.57217271648704, 3.3305473675797117, 0.05, +54.73842460232565, 3.3250377167722216, 0.05, +54.90439973015269, 3.31950255654074, 0.05, +55.07009678213494, 3.3139410396450413, 0.05, +55.23551439793854, 3.308352316071959, 0.05, +55.40065117483358, 3.302735537900736, 0.05, +55.56550566476338, 3.2970897985960317, 0.05, +55.730076377963165, 3.2914142639957693, 0.05, +55.89436177875772, 3.2857080158911183, 0.05, +56.05836028860821, 3.279970197009896, 0.05, +56.222070281782116, 3.27419986347799, 0.05, +56.38549008834677, 3.268396131293143, 0.05, +56.548617992284576, 3.262558078756096, 0.05, +56.71145223100194, 3.2566847743473817, 0.05, +56.87399099482599, 3.250775276480903, 0.05, +57.03623242648799, 3.2448286332400857, 0.05, +57.1981746205942, 3.2388438821242014, 0.05, +57.35981562409669, 3.2328200700497294, 0.05, +57.52115343461362, 3.226756210338647, 0.05, +57.682185999771654, 3.2206513031606603, 0.05, +57.84291121705193, 3.2145043456055244, 0.05, +58.003326934573636, 3.2083143504342235, 0.05, +58.163430948020704, 3.2020802689414176, 0.05, +58.32322100117937, 3.195801063173264, 0.05, +58.48269478662822, 3.1894757089770414, 0.05, +58.64184994263752, 3.1831031201860243, 0.05, +58.800684053406805, 3.1766822153857257, 0.05, +58.95919465172903, 3.1702119664445174, 0.05, +59.11737921156198, 3.163691196659091, 0.05, +59.27523515415783, 3.157118851916986, 0.05, +59.432759844177575, 3.1504938003947682, 0.05, +59.58995058793968, 3.143814875242171, 0.05, +59.746804636229086, 3.137080965788043, 0.05, +59.90331917929104, 3.1302908612391054, 0.05, +60.05949134889072, 3.1234433919935665, 0.05, +60.21531821967908, 3.1165374157671812, 0.05, +60.37079680233371, 3.1095716530925985, 0.05, +60.52592404807221, 3.102544914770063, 0.05, +60.680696846223036, 3.095455963016466, 0.05, +60.835112022970044, 3.088303534940138, 0.05, +60.98916634125043, 3.0810863656077836, 0.05, +61.142856501111275, 3.0738031972168454, 0.05, +61.29617913486537, 3.066452675081815, 0.05, +61.44913081096359, 3.059033521964387, 0.05, +61.601708031490595, 3.0515444105400795, 0.05, +61.753907230610594, 3.0439839823999058, 0.05, +61.90572477371418, 3.036350862071675, 0.05, +62.05715695875524, 3.0286437008213944, 0.05, +62.20820001213124, 3.0208610675199568, 0.05, +62.35885009267522, 3.01300161087952, 0.05, +62.50910328426953, 3.0050638318861798, 0.05, +62.65895560120386, 2.997046338686533, 0.05, +62.80840298404341, 2.9889476567910305, 0.05, +62.957441298107604, 2.980766281283911, 0.05, +63.106066336728375, 2.972500772415461, 0.05, +63.25427381685354, 2.964149602503317, 0.05, +63.40205937862917, 2.9557112355126196, 0.05, +63.54941858654408, 2.9471841582982696, 0.05, +63.696346924083414, 2.9385667507867894, 0.05, +63.84283980217043, 2.929857561740402, 0.05, +63.98889254659702, 2.9210548885318004, 0.05, +64.1345004057108, 2.9121571822754393, 0.05, +64.27965854834711, 2.9031628527262465, 0.05, +64.42436205905886, 2.894070214234943, 0.05, +64.56860594313764, 2.8848776815755364, 0.05, +64.71238512061602, 2.8755835495674966, 0.05, +64.85569442917114, 2.8661861711024694, 0.05, +64.99852862386851, 2.8566838939475536, 0.05, +65.14088237165413, 2.8470749557122974, 0.05, +65.28275025881507, 2.8373577432188, 0.05, +65.42412678151516, 2.8275304540015997, 0.05, +65.56500635379354, 2.8175914455675555, 0.05, +65.70538329857087, 2.8075388955465432, 0.05, +65.84525185652103, 2.7973711590032893, 0.05, +65.98460617721769, 2.7870864139330043, 0.05, +66.12344032395255, 2.776682934697226, 0.05, +66.26174827511144, 2.7661590231778908, 0.05, +66.39952391520082, 2.7555128017874013, 0.05, +66.53676104534297, 2.7447426028430253, 0.05, +66.67345337704842, 2.7338466341090277, 0.05, +66.80959453268369, 2.722823112705475, 0.05, +66.94517805024515, 2.711670351229128, 0.05, +67.08019737605953, 2.700386516287636, 0.05, +67.21464587116715, 2.6889699021523894, 0.05, +67.34851681059239, 2.6774187885047906, 0.05, +67.48180338049099, 2.665731397972069, 0.05, +67.61449868347734, 2.653906059727089, 0.05, +67.7465957363582, 2.6419410576174145, 0.05, +67.87808747350122, 2.629834742860531, 0.05, +68.00896674411683, 2.617585412312125, 0.05, +68.13922631804535, 2.605191478570117, 0.05, +68.26885888290242, 2.5926512971415603, 0.05, +68.39785704959831, 2.5799633339178163, 0.05, +68.5262133500715, 2.5671260094636854, 0.05, +68.65392024236928, 2.5541378459556983, 0.05, +68.78097011107123, 2.540997374038855, 0.05, +68.90735527021361, 2.527703182847652, 0.05, +69.03306796694616, 2.5142539346510664, 0.05, +69.15810038124631, 2.500648286002891, 0.05, +69.28244462956923, 2.4868849664582147, 0.05, +69.40609277254555, 2.472962859526554, 0.05, +69.52903681373513, 2.458880823791546, 0.05, +69.65126870267189, 2.4446377787350637, 0.05, +69.77278034557146, 2.4302328579915056, 0.05, +69.89356360076437, 2.4156651038581103, 0.05, +70.01361029217325, 2.4009338281778643, 0.05, +70.13291220559188, 2.386038268372518, 0.05, +70.2514611029374, 2.3709779469105072, 0.05, +70.3692487214758, 2.355752370767931, 0.05, +70.48626678193548, 2.3403612091935697, 0.05, +70.60250699690852, 2.32480429946051, 0.05, +70.71796107566192, 2.309081575068045, 0.05, +70.832620730599, 2.2931930987415905, 0.05, +70.9464776893592, 2.277139175204017, 0.05, +71.05952369945614, 2.2609202019386756, 0.05, +71.17175053618566, 2.2445367345903566, 0.05, +71.28315001541823, 2.2279895846515796, 0.05, +71.39371400072457, 2.211279706126765, 0.05, +71.5034344151002, 2.1944082875127267, 0.05, +71.6123032508925, 2.1773767158459805, 0.05, +71.72031258178693, 2.160186617888641, 0.05, +71.82745457451723, 2.142839854606019, 0.05, +71.93372149864689, 2.1253384825932606, 0.05, +72.0391057457558, 2.107684942178306, 0.05, +72.1435998376448, 2.0898818377799677, 0.05, +72.24719644162349, 2.0719320795736818, 0.05, +72.3498883881568, 2.053838930666194, 0.05, +72.4516686835615, 2.0356059080939404, 0.05, +72.55253052507705, 2.017236830311125, 0.05, +72.65246732319527, 1.998735962364442, 0.05, +72.75147271164656, 1.9801077690258546, 0.05, +72.8495405711679, 1.9613571904270177, 0.05, +72.94666504393976, 1.9424894554370302, 0.05, +73.0428405561375, 1.9235102439549836, 0.05, +73.13806183513844, 1.9044255800188965, 0.05, +73.23232393303836, 1.8852419579981863, 0.05, +73.32562224246963, 1.8659661886255356, 0.05, +73.41795252250715, 1.8466056007504477, 0.05, +73.50931092067164, 1.827167963289786, 0.05, +73.59969399085404, 1.8076614036479006, 0.05, +73.68909872135326, 1.78809460998445, 0.05, +73.77752255515159, 1.768476675966717, 0.05, +73.86496341620462, 1.7488172210604747, 0.05, +73.95141972952152, 1.7291262663379081, 0.05, +74.0368904487788, 1.7094143851458465, 0.05, +74.12137508090538, 1.6896926425313945, 0.05, +74.20487370711703, 1.6699725242330723, 0.05, +74.28738701191722, 1.6502660960037865, 0.05, +74.36891630519708, 1.6305858655970957, 0.05, +74.44946354761147, 1.610944848288073, 0.05, +74.5290313748835, 1.5913565454406764, 0.05, +74.60762312235586, 1.5718349494470492, 0.05, +74.68524284799136, 1.5523945127099261, 0.05, +74.76189535569065, 1.5330501539857821, 0.05, +74.8375862186982, 1.5138172601511708, 0.05, +74.91232180125158, 1.4947116510674363, 0.05, +74.98610927991133, 1.4757495731952008, 0.05, +75.05895666330144, 1.456947667802101, 0.05, +75.13087281138733, 1.438322961717863, 0.05, +75.20186745457013, 1.4198928636561305, 0.05, +75.2719512081696, 1.4016750719892614, 0.05, +75.34113558963638, 1.3836876293356384, 0.05, +75.40943303110262, 1.365948829324809, 0.05, +75.47685689129558, 1.3484772038591593, 0.05, +75.54342146557717, 1.3312914856316533, 0.05, +75.60914199424302, 1.3144105733169416, 0.05, +75.6740346679221, 1.2978534735816656, 0.05, +75.73811663149695, 1.2816392714969451, 0.05, +75.8014059851768, 1.2657870735968448, 0.05, +75.86392178368511, 1.2503159701661564, 0.05, +75.92568403215594, 1.2352449694166763, 0.05, +75.9867136798103, 1.2205929530870563, 0.05, +76.04703261098473, 1.206378623488717, 0.05, +76.10666363312365, 1.1926204427782385, 0.05, +76.16563046201559, 1.1793365778388183, 0.05, +76.22395770413351, 1.1665448423584894, 0.05, +76.2816708360545, 1.154262638419919, 0.05, +76.33879618095045, 1.1425068979189281, 0.05, +76.39536088215792, 1.1312940241492824, 0.05, +76.45139287385332, 1.1206398339080055, 0.05, +76.50692084881095, 1.1105594991524477, 0.05, +76.56197422340077, 1.1010674917964305, 0.05, +76.61658310023216, 1.0921775366279016, 0.05, +76.67077822715913, 1.0839025385393868, 0.05, +76.72459095525849, 1.0762545619872204, 0.05, +76.77805319256797, 1.069244746189418, 0.05, +76.83119735798428, 1.0628833083262825, 0.05, +76.88405633075001, 1.0571794553147633, 0.05, +76.93666339938451, 1.0521413726899258, 0.05, +76.98905220845567, 1.0477761814231863, 0.05, +77.04125670490676, 1.0440899290217385, 0.05, +77.09331108102704, 1.0410875224057143, 0.05, +77.14524971830497, 1.038772745558522, 0.05, +77.19710713018367, 1.037148237573922, 0.05, +77.24891790292703, 1.0362154548673004, 0.05, +77.30071663834754, 1.0359747084099846, 0.05, +77.35253789444667, 1.0364251219827152, 0.05, +77.40441612742818, 1.0375646596302144, 0.05, +77.45638563407785, 1.0393901329933342, 0.05, +77.50848049406036, 1.041897199650254, 0.05, +77.56073451525768, 1.0450804239463558, 0.05, +77.6131811759316, 1.0489332134784992, 0.05, +77.66585357369924, 1.0534479553527372, 0.05, +77.71878437382217, 1.0586160024585956, 0.05, +77.77200575545871, 1.0644276327306994, 0.05, +77.82554936777287, 1.0708722462830371, 0.05, +77.87944628105366, 1.0779382656160206, 0.05, +77.93372694406575, 1.085613260241974, 0.05, +77.9884211425479, 1.09388396964305, 0.05, +78.04355795964995, 1.102736342040897, 0.05, +78.09916574274712, 1.1121556619434465, 0.05, +78.15527206610757, 1.1221264672090483, 0.05, +78.21190370372294, 1.132632752307435, 0.05, +78.26908660010548, 1.1436579276509478, 0.05, +78.326845845571, 1.1551849093104376, 0.05, +78.38520565644282, 1.1671962174363593, 0.05, +78.44418935184466, 1.1796739080366636, 0.05, +78.50381934299553, 1.1925998230173314, 0.05, +78.56411711746043, 1.2059554892979487, 0.05, +78.62510322881792, 1.2197222271498402, 0.05, +78.68679728767488, 1.2338811771392404, 0.05, +78.74921796027185, 1.2484134519394752, 0.05, +78.81238296435085, 1.2633000815800073, 0.05, +78.8763090685722, 1.2785220844270533, 0.05, +78.94101209454992, 1.2940605195544748, 0.05, +79.00650692634714, 1.3098966359445334, 0.05, +79.0728075104991, 1.3260116830392223, 0.05, +79.13992687058065, 1.342387201630963, 0.05, +79.2078771140961, 1.359004870309131, 0.05, +79.2766694481535, 1.3758466811478336, 0.05, +79.34631419271153, 1.3928948911606467, 0.05, +79.4168207955295, 1.4101320563593291, 0.05, +79.4881978516796, 1.4275411230019797, 0.05, +79.56045311515861, 1.4451052695802786, 0.05, +79.6335935304015, 1.462808304857855, 0.05, +79.707625239317, 1.4806341783099541, 0.05, +79.78255361533965, 1.4985675204531161, 0.05, +79.85838327531246, 1.5165931994562223, 0.05, +79.93511810661293, 1.5346966260094024, 0.05, +80.01276129097226, 1.5528636871867525, 0.05, +80.0913153254122, 1.5710806887986861, 0.05, +80.17078205237955, 1.589334539347004, 0.05, +80.2511626725014, 1.6076124024368414, 0.05, +80.33245777991547, 1.6259021482814375, 0.05, +80.41466738475792, 1.644192096849041, 0.05, +80.49779093067411, 1.662470918323759, 0.05, +80.58182732777952, 1.680727942108275, 0.05, +80.66677496564269, 1.6989527572634027, 0.05, +80.75263175314579, 1.7171357500621032, 0.05, +80.83939512765473, 1.735267490178733, 0.05, +80.92706208038344, 1.7533390545742957, 0.05, +81.01562918858481, 1.7713421640274114, 0.05, +81.10509262707942, 1.7892687698920058, 0.05, +81.1954481947237, 1.8071113528857163, 0.05, +81.28669133644817, 1.8248628344895852, 0.05, +81.37881716188029, 1.8425165086425115, 0.05, +81.47182046881778, 1.8600661387498942, 0.05, +81.5656957582177, 1.8775057879982966, 0.05, +81.66043725752006, 1.8948299860472269, 0.05, +81.7560389389954, 1.9120336295070088, 0.05, +81.85249453405135, 1.929111901118843, 0.05, +81.94979755559889, 1.9460604309510472, 0.05, +82.04794130839632, 1.9628750559485981, 0.05, +82.14691891433098, 1.9795521186932286, 0.05, +82.24672331918974, 1.9960880971751216, 0.05, +82.34734731153735, 2.012479846952031, 0.05, +82.4487835327249, 2.028724423751053, 0.05, +82.55102450475286, 2.0448194405591935, 0.05, +82.65406262256346, 2.060762356211859, 0.05, +82.75789018229153, 2.07655119456151, 0.05, +82.86249938844537, 2.092184123076768, 0.05, +82.96788236112909, 2.1076594536741733, 0.05, +83.07403115103112, 2.1229757980407427, 0.05, +83.18093775739177, 2.138132127213105, 0.05, +83.28859412253598, 2.153127302884223, 0.05, +83.39699214748974, 2.1679604990752095, 0.05, +83.50612370782649, 2.182631206735013, 0.05, +83.61598065524234, 2.197138948317082, 0.05, +83.72655481949792, 2.2114832851116137, 0.05, +83.83783802694497, 2.2256641489408597, 0.05, +83.94982211356404, 2.239681732381491, 0.05, +84.06249890277259, 2.253535784171071, 0.05, +84.17586024710963, 2.2672268867406133, 0.05, +84.2898980087735, 2.2807552332774623, 0.05, +84.4046040748959, 2.2941213224477854, 0.05, +84.51997036589395, 2.307325819960998, 0.05, +84.63598882807338, 2.3203692435886527, 0.05, +84.75265145686242, 2.3332525757809486, 0.05, +84.86995027968727, 2.345976456496969, 0.05, +84.98787738025408, 2.3585420113361617, 0.05, +85.10642488086704, 2.370950012259152, 0.05, +85.22558496982026, 2.3832017790643865, 0.05, +85.34534988237219, 2.3952982510384553, 0.05, +85.4657119137575, 2.407240627706133, 0.05, +85.58666343061813, 2.419030337212635, 0.05, +85.70819685673331, 2.4306685223036153, 0.05, +85.83030467755731, 2.44215641647994, 0.05, +85.95297945609914, 2.453495570836743, 0.05, +86.07621382323555, 2.4646873427281424, 0.05, +86.20000047537947, 2.4757330428785083, 0.05, +86.32433219395567, 2.4866343715240844, 0.05, +86.44920182763832, 2.4973926736529695, 0.05, +86.57460229724336, 2.5080093921007376, 0.05, +86.70052661148195, 2.5184862847718428, 0.05, +86.82696784568695, 2.5288246840999777, 0.05, +86.95391915202443, 2.539026126749602, 0.05, +87.08137377945803, 2.549092548672243, 0.05, +87.20932504021695, 2.559025215178287, 0.05, +87.33776632774371, 2.5688257505350642, 0.05, +87.46669111968242, 2.57849583877432, 0.05, +87.59609297326985, 2.588037071748617, 0.05, +87.72596552798021, 2.5974510942071727, 0.05, +87.85630249793797, 2.6067393991553227, 0.05, +87.98709767423826, 2.615903526005686, 0.05, +88.11834494889682, 2.624945493171158, 0.05, +88.25003826831049, 2.6338663882732782, 0.05, +88.3821716803754, 2.642668241298065, 0.05, +88.51473929156107, 2.6513522237136065, 0.05, +88.64773530704876, 2.6599203097539097, 0.05, +88.78115399712006, 2.6683738014259806, 0.05, +88.91498971312413, 2.6767143200813557, 0.05, +89.04923689299294, 2.684943597376293, 0.05, +89.18389003824149, 2.693062904970965, 0.05, +89.31894373952434, 2.701074025657063, 0.05, +89.45439265264048, 2.7089782623226615, 0.05, +89.59023152270309, 2.716777401252342, 0.05, +89.72645514872022, 2.724472520342449, 0.05, +89.8630572486079, 2.732041997753621, 0.05, +90.0000267162649, 2.7393893531398827, 0.05, +90.13734869007631, 2.7464394762281934, 0.05, +90.2750082983512, 2.753192165497778, 0.05, +90.41299062207648, 2.7596464745055784, 0.05, +90.55128073307219, 2.7658022199142107, 0.05, +90.68986367689334, 2.7716588764229093, 0.05, +90.82872448301609, 2.7772161224549734, 0.05, +90.9678481428226, 2.782473196130158, 0.05, +91.1072196612257, 2.7874303680618677, 0.05, +91.24682400702564, 2.7920869159986776, 0.05, +91.38664615511607, 2.7964429618086415, 0.05, +91.52667104820908, 2.8004978618601672, 0.05, +91.66688364922868, 2.804252020392002, 0.05, +91.80726889722739, 2.8077049599742243, 0.05, +91.94781172659005, 2.8108565872532374, 0.05, +92.08849707299285, 2.8137069280560083, 0.05, +92.22930987616984, 2.8162560635397127, 0.05, +92.37023507566525, 2.818503989908329, 0.05, +92.51125759402399, 2.8204503671748453, 0.05, +92.65236238176527, 2.8220957548256247, 0.05, +92.79353438685229, 2.823440101740323, 0.05, +92.9347585476456, 2.8244832158663535, 0.05, +93.07601983725255, 2.8252257921387782, 0.05, +93.21730320987062, 2.8256674523614165, 0.05, +93.35859364846688, 2.825808771925287, 0.05, +93.49987613304152, 2.825649691493002, 0.05, +93.64113566215164, 2.825190582202293, 0.05, +93.78235724427101, 2.8244316423873097, 0.05, +93.92352589776075, 2.8233730697949952, 0.05, +94.06462666304157, 2.8220153056162447, 0.05, +94.20564458099601, 2.8203583590887784, 0.05, +94.34656472830133, 2.8184029461065574, 0.05, +94.48737216960048, 2.8161488259829115, 0.05, +94.62805201582067, 2.813596924403964, 0.05, +94.76858937670153, 2.810747217617157, 0.05, +94.90896937370081, 2.8075999399857112, 0.05, +95.04917717442638, 2.8041560145113613, 0.05, +95.18919793997807, 2.8004153110339023, 0.05, +95.3290168586684, 2.7963783738064296, 0.05, +95.46861914192732, 2.792045665178501, 0.05, +95.60799001375277, 2.787417436509023, 0.05, +95.74711472561125, 2.7824942371697894, 0.05, +95.88597854985768, 2.7772764849286746, 0.05, +96.024566770212, 2.771764407086507, 0.05, +96.16286471018604, 2.7659587994807957, 0.05, +96.30085769937367, 2.75985978375241, 0.05, +96.43853109628247, 2.7534679381760885, 0.05, +96.57587028058585, 2.7467836860674177, 0.05, +96.71286065747525, 2.7398075377879736, 0.05, +96.84948764687984, 2.7325397880919025, 0.05, +96.98573670628613, 2.724981188125957, 0.05, +97.12159329888102, 2.7171318518978604, 0.05, +97.25704292064793, 2.7089924353380623, 0.05, +97.39207109998262, 2.7005635866935322, 0.05, +97.52666337044319, 2.691845409211352, 0.05, +97.66080530746058, 2.682838740347715, 0.05, +97.79448249584888, 2.6735437677660405, 0.05, +97.92768055917405, 2.6639612665034584, 0.05, +98.06038512576717, 2.654091331862292, 0.05, +98.19258186525065, 2.6439347896696557, 0.05, +98.32425646689023, 2.6334920327918825, 0.05, +98.4553946505887, 2.622763673969363, 0.05, +98.58598213336938, 2.6117496556135467, 0.05, +98.71600469977383, 2.600451328088858, 0.05, +98.84544811413517, 2.588868287226696, 0.05, +98.97429820655891, 2.577001848475037, 0.05, +99.10254080953597, 2.564852059541099, 0.05, +99.23016177720743, 2.552419353429151, 0.05, +99.35714698771397, 2.5397042101309024, 0.05, +99.48348237130774, 2.5267076718752444, 0.05, +99.60915384152308, 2.513429404306616, 0.05, +99.73414736287513, 2.4998704270411194, 0.05, +99.85844892569257, 2.486031256348646, 0.05, +99.98204453866943, 2.471912259537186, 0.05, +100.10492021938778, 2.457513614367147, 0.05, +100.22706204053954, 2.4428364230350397, 0.05, +100.34845607437205, 2.4278806766504544, 0.05, +100.46908843162286, 2.4126471450161118, 0.05, +100.58894523729106, 2.397136113363945, 0.05, +100.7080126529638, 2.3813483134549642, 0.05, +100.8262768514877, 2.3652839704779893, 0.05, +100.94372404532271, 2.3489438767001087, 0.05, +101.06034044782605, 2.3323280500668693, 0.05, +101.17611232484015, 2.315437540281854, 0.05, +101.29102593855491, 2.2982722742951465, 0.05, +101.40506760255359, 2.280833279973619, 0.05, +101.51822363628233, 2.263120674574737, 0.05, +101.63048039202158, 2.2451351147849685, 0.05, +101.74182422983864, 2.2268767563412974, 0.05, +101.8522415565516, 2.208346534259113, 0.05, +101.96171879338884, 2.189544736744775, 0.05, +102.07024238941354, 2.170471920493822, 0.05, +102.17779879649018, 2.151128141532912, 0.05, +102.28437452359321, 2.1315145420607977, 0.05, +102.38995608852031, 2.11163129854188, 0.05, +102.49453001195596, 2.0914784687129275, 0.05, +102.5980828785449, 2.0710573317788357, 0.05, +102.70060126653108, 2.0503677597236267, 0.05, +102.80207179562603, 2.029410581899037, 0.05, +102.9024824230519, 2.0082125485172804, 0.05, +103.001826756704, 1.9868866730421177, 0.05, +103.1001026899371, 1.965518664661861, 0.05, +103.19730817139882, 1.944109629234192, 0.05, +103.29344117634307, 1.922660098884959, 0.05, +103.38849974809911, 1.9011714351207372, 0.05, +103.4824819585186, 1.879644208390044, 0.05, +103.57538592014986, 1.8580792326249267, 0.05, +103.66720979545481, 1.8364775060991052, 0.05, +103.75795178922817, 1.8148398754671597, 0.05, +103.84761011865461, 1.793166588528699, 0.05, +103.93618308129192, 1.7714592527459454, 0.05, +104.02366897053467, 1.7497177848552232, 0.05, +104.11006615627532, 1.727943714812923, 0.05, +104.1953730257716, 1.7061373899256134, 0.05, +104.27958798353313, 1.6842991552306688, 0.05, +104.36270950771004, 1.6624304835381625, 0.05, +104.44473606711811, 1.640531188161452, 0.05, +104.52566620928725, 1.6186028433826083, 0.05, +104.60549849156465, 1.5966456455479583, 0.05, +104.68423148330244, 1.5746598347557998, 0.05, +104.76186383032187, 1.552646940388663, 0.05, +104.8383941610902, 1.5306066153668345, 0.05, +104.91382118010856, 1.508540380366929, 0.05, +104.9881435983269, 1.4864483643668949, 0.05, +105.06136014560529, 1.4643309455679159, 0.05, +105.13346959495227, 1.4421889869397586, 0.05, +105.2044707574984, 1.4200232509224449, 0.05, +105.27436244858086, 1.3978338216492525, 0.05, +105.34314351877352, 1.3756214038530417, 0.05, +105.41081286220505, 1.353386868630666, 0.05, +105.47736938749861, 1.3311305058711458, 0.05, +105.54281200799994, 1.3088524100266719, 0.05, +105.60713969588699, 1.2865537577409292, 0.05, +105.67035143291169, 1.264234740493902, 0.05, +105.73244622806381, 1.2418959030423071, 0.05, +105.7934230994503, 1.219537427729803, 0.05, +105.85328112191962, 1.1971604493864747, 0.05, +105.91201937015985, 1.174764964804712, 0.05, +105.96963694042535, 1.1523514053099448, 0.05, +106.02613430486242, 1.1299472887416266, 0.05, +106.08151766540892, 1.1076672109299213, 0.05, +106.13579754166219, 1.0855975250653223, 0.05, +106.18898450987479, 1.0637393642521416, 0.05, +106.24108915629378, 1.0420929283799134, 0.05, +106.29212211902886, 1.0206592547014905, 0.05, +106.3420940370355, 0.9994383601327624, 0.05, +106.39101561151841, 0.978431489658321, 0.05, +106.43889753234765, 0.9576384165846971, 0.05, +106.48575054527518, 0.9370602585505344, 0.05, +106.53158541829944, 0.9166974604853187, 0.05, +106.57641291884222, 0.8965500108555153, 0.05, +106.62024387943438, 0.8766192118431699, 0.05, +106.6630891147564, 0.8569047064404408, 0.05, +106.70495949756301, 0.8374076561321168, 0.05, +106.7458658890821, 0.8181278303818076, 0.05, +106.78581920793015, 0.7990663769609585, 0.05, +106.82483035383501, 0.7802229180973461, 0.05, +106.86291027040494, 0.7615983313986555, 0.05, +106.90006992898051, 0.7431931715115149, 0.05, +106.93632030898492, 0.7250076000881747, 0.05, +106.97167238653665, 0.7070415510347835, 0.05, +107.00613720010581, 0.6892962713831347, 0.05, +107.03972575398426, 0.6717710775689142, 0.05, +107.07244912072213, 0.6544673347574255, 0.05, +107.1043183578385, 0.6373847423273171, 0.05, +107.13534454307171, 0.6205237046643374, 0.05, +107.16553876024317, 0.6038843434292138, 0.05, +107.19491213591336, 0.5874675134037993, 0.05, +107.22347578518837, 0.5712729855003743, 0.05, +107.25124084696286, 0.5553012354896688, 0.05, +107.27821847371388, 0.5395525350204592, 0.05, +107.30441982701576, 0.5240270660378341, 0.05, +107.3298560702653, 0.5087248649906332, 0.05, +107.35453841467954, 0.4936468882847795, 0.05, +107.37847804262334, 0.4787925588761686, 0.05, +107.40168617447979, 0.46416263712898326, 0.05, +107.42417402077473, 0.4497569258987284, 0.05, +107.44595282380227, 0.4355760605509594, 0.05, +107.4670338210236, 0.4216199444265257, 0.05, +107.4874282643269, 0.40788886606568936, 0.05, +107.50714741294111, 0.3943829722843949, 0.05, +107.52620252595659, 0.38110226030951944, 0.05, +107.54460490942377, 0.3680476693434055, 0.05, +107.56236582793753, 0.35521837027511316, 0.05, +107.57949657408437, 0.34261492293695506, 0.05, +107.5960084669615, 0.330237857542522, 0.05, +107.61191280467436, 0.3180867542572845, 0.05, +107.6272209121452, 0.30616214941696446, 0.05, +107.64194411573389, 0.2944640717736246, 0.05, +107.65609372576506, 0.28299220062331126, 0.05, +107.66968110029367, 0.27174749057220665, 0.05, +107.68271757714923, 0.26072953711115976, 0.05, +107.69521451164492, 0.24993868991366122, 0.05, +107.70718323323945, 0.23937443189053612, 0.05, +107.71863512752992, 0.2290378858095795, 0.05, +107.72958155044547, 0.21892845831106597, 0.05, +107.74003387486252, 0.20904648834085401, 0.05, +107.75000346828908, 0.19939186853110655, 0.05, +107.75950172154475, 0.18996506511347092, 0.05, +107.76853999895864, 0.18076554827782967, 0.05, +107.77712970076003, 0.17179403602781004, 0.05, +107.78528220636267, 0.16305011205288086, 0.05, +107.79300893047636, 0.1545344822737693, 0.05, +107.80032124668975, 0.1462463242676136, 0.05, +107.80723057232836, 0.13818651277219704, 0.05, +107.81374830653247, 0.13035468408224243, 0.05, +107.81988585850198, 0.1227510393900229, 0.05, +107.82565463113367, 0.11537545263406414, 0.05, +107.83106603901881, 0.10822815770279097, 0.05, +107.83613149493897, 0.1013091184030679, 0.05, +107.8408624209171, 0.09461851956274916, 0.05, +107.84527023108485, 0.0881562033548595, 0.05, +107.84936634646182, 0.08192230753928773, 0.05, +107.85316219425525, 0.07591695586864092, 0.05, +107.8566691882428, 0.07013987975108531, 0.05, +107.85989876199763, 0.06459147509636537, 0.05, +107.86286233577576, 0.05927147556264567, 0.05, +107.86557134767207, 0.054180237926270844, 0.05, +107.86803722148483, 0.04931747625506562, 0.05, +107.87027138511095, 0.04468327252266137, 0.05, +107.87228527002432, 0.04027769826740106, 0.05, +107.87409031077975, 0.03610081510845211, 0.05, +107.87569794454159, 0.032152675236711815, 0.05, +107.87711960679252, 0.028433245018600083, 0.05, +107.87836671266443, 0.02494211743819678, 0.05, +107.8794507285865, 0.021680318441559855, 0.05, +107.880383054197, 0.01864651220991277, 0.05, +107.8811751560417, 0.015842036894307063, 0.05, +107.8818384602385, 0.013266083935698858, 0.05, +107.88238439196735, 0.010918634576886554, 0.05, +107.88282440254513, 0.008800211555424119, 0.05, +107.88316992700727, 0.006910489243031269, 0.05, +107.88343240124871, 0.0052494848288548, 0.05, +107.88362326182941, 0.003817211614076534, 0.05, +107.88375394580514, 0.00261367951462578, 0.05, +107.88383589058292, 0.0016388955553817853, 0.05, +107.88388053380197, 8.928643810832258E-4, 0.05, +107.8838993132393, 3.7558874652944714E-4, 0.05, +107.88390366674071, 8.707002831910194E-5, 0.05, +107.88390366674071, 0.0, 0.05, diff --git a/src/main/resources/leftProfile_dumb.csv b/src/main/resources/leftProfile_dumb.csv new file mode 100644 index 00000000..2cffb57a --- /dev/null +++ b/src/main/resources/leftProfile_dumb.csv @@ -0,0 +1,813 @@ +812 +6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +2.8125000000000025E-4, 0.005500000000000004, 0.05, +7.875000000000002E-4, 0.010124999999999999, 0.05, +0.0014125000000000006, 0.012500000000000004, 0.05, +0.0021687499999999997, 0.015124999999999982, 0.05, +0.0030687500000000003, 0.018000000000000013, 0.05, +0.004125, 0.021124999999999998, 0.05, +0.005350000000000001, 0.024500000000000008, 0.05, +0.006756249999999999, 0.028124999999999973, 0.05, +0.008356250000000003, 0.03200000000000005, 0.05, +0.010162500000000001, 0.03612499999999998, 0.05, +0.0121875, 0.04049999999999998, 0.05, +0.014443750000000002, 0.045125000000000026, 0.05, +0.01694375, 0.05000000000000001, 0.05, +0.019700000000000002, 0.055125000000000035, 0.05, +0.022725000000000002, 0.0605, 0.05, +0.026031249999999995, 0.06612499999999986, 0.05, +0.029631249999999984, 0.07199999999999977, 0.05, +0.033537499999999984, 0.078125, 0.05, +0.03776249999999997, 0.08449999999999971, 0.05, +0.042318749999999954, 0.09112499999999968, 0.05, +0.04721874999999995, 0.09799999999999989, 0.05, +0.05247499999999993, 0.10512499999999966, 0.05, +0.05809999999999992, 0.11249999999999982, 0.05, +0.06410624999999989, 0.1201249999999994, 0.05, +0.07050624999999988, 0.12799999999999978, 0.05, +0.07731249999999987, 0.13612499999999972, 0.05, +0.08453749999999983, 0.14449999999999935, 0.05, +0.09219374999999984, 0.15312500000000007, 0.05, +0.1002937499999998, 0.16199999999999937, 0.05, +0.10884999999999978, 0.17112499999999947, 0.05, +0.11787499999999977, 0.18049999999999983, 0.05, +0.12738124999999978, 0.19012499999999988, 0.05, +0.13738124999999973, 0.19999999999999907, 0.05, +0.1478874999999997, 0.21012499999999934, 0.05, +0.15891249999999968, 0.22049999999999959, 0.05, +0.17046874999999964, 0.23112499999999925, 0.05, +0.1825687499999996, 0.24199999999999944, 0.05, +0.19522499999999962, 0.25312500000000016, 0.05, +0.20844999999999958, 0.2644999999999992, 0.05, +0.22225624999999954, 0.2761249999999993, 0.05, +0.2366562499999995, 0.28799999999999937, 0.05, +0.25166249999999946, 0.3001249999999994, 0.05, +0.2672874999999994, 0.3124999999999989, 0.05, +0.2835437499999993, 0.32512499999999833, 0.05, +0.3004437499999993, 0.3379999999999994, 0.05, +0.3179999999999992, 0.3511249999999988, 0.05, +0.3362249999999992, 0.3644999999999998, 0.05, +0.3551312499999991, 0.37812499999999805, 0.05, +0.37473124999999907, 0.391999999999999, 0.05, +0.3950374999999994, 0.40612500000000606, 0.05, +0.4160625000000003, 0.4205000000000181, 0.05, +0.43781875000000114, 0.4351250000000173, 0.05, +0.4603187500000021, 0.4500000000000193, 0.05, +0.4835750000000029, 0.4651250000000162, 0.05, +0.507600000000004, 0.4805000000000226, 0.05, +0.532406250000005, 0.49612500000001836, 0.05, +0.558006250000006, 0.5120000000000213, 0.05, +0.584412500000007, 0.5281250000000193, 0.05, +0.611637500000008, 0.5445000000000211, 0.05, +0.6396937500000093, 0.5611250000000245, 0.05, +0.6685937500000105, 0.5780000000000252, 0.05, +0.6983500000000117, 0.595125000000023, 0.05, +0.7289750000000129, 0.6125000000000247, 0.05, +0.7604812500000142, 0.6301250000000258, 0.05, +0.7928812500000154, 0.6480000000000241, 0.05, +0.8261875000000168, 0.6661250000000285, 0.05, +0.8604125000000181, 0.6845000000000256, 0.05, +0.8955687500000196, 0.7031250000000289, 0.05, +0.9316687500000211, 0.7220000000000315, 0.05, +0.9687250000000227, 0.7411250000000313, 0.05, +1.0067500000000242, 0.7605000000000306, 0.05, +1.0457562500000257, 0.7801250000000293, 0.05, +1.0857562500000273, 0.8000000000000318, 0.05, +1.126762500000029, 0.8201250000000337, 0.05, +1.1687875000000307, 0.8405000000000351, 0.05, +1.2118437500000325, 0.8611250000000359, 0.05, +1.2559437500000343, 0.8820000000000361, 0.05, +1.3011000000000361, 0.9031250000000357, 0.05, +1.347325000000038, 0.9245000000000392, 0.05, +1.39463125000004, 0.9461250000000376, 0.05, +1.4430312500000417, 0.9680000000000355, 0.05, +1.492537500000044, 0.9901250000000461, 0.05, +1.543162500000046, 1.0125000000000384, 0.05, +1.5949187500000477, 1.0351250000000345, 0.05, +1.6478187500000503, 1.0580000000000522, 0.05, +1.7018750000000522, 1.0811250000000383, 0.05, +1.7571000000000543, 1.1045000000000416, 0.05, +1.8135062500000567, 1.1281250000000487, 0.05, +1.8711062500000593, 1.1520000000000508, 0.05, +1.9299125000000616, 1.1761250000000478, 0.05, +1.989937500000064, 1.2005000000000488, 0.05, +2.051193750000066, 1.2251250000000447, 0.05, +2.1136937500000683, 1.2500000000000444, 0.05, +2.1774437500000716, 1.275000000000066, 0.05, +2.242443750000074, 1.3000000000000433, 0.05, +2.3086937500000766, 1.3250000000000561, 0.05, +2.3761937500000796, 1.35000000000006, 0.05, +2.4449437500000823, 1.375000000000055, 0.05, +2.514943750000085, 1.40000000000005, 0.05, +2.586193750000088, 1.4250000000000629, 0.05, +2.6586937500000904, 1.450000000000049, 0.05, +2.7324437500000935, 1.4750000000000618, 0.05, +2.8074437500000973, 1.5000000000000746, 0.05, +2.8836937500001003, 1.5250000000000608, 0.05, +2.9611937500001035, 1.5500000000000647, 0.05, +3.039943750000106, 1.5750000000000508, 0.05, +3.1199437500001097, 1.6000000000000725, 0.05, +3.201193750000086, 1.6249999999995257, 0.05, +3.283693750000061, 1.649999999999503, 0.05, +3.367443750000035, 1.6749999999994802, 0.05, +3.452443750000009, 1.6999999999994753, 0.05, +3.538693749999983, 1.7249999999994792, 0.05, +3.6261937499999553, 1.7499999999994476, 0.05, +3.7149437499999296, 1.774999999999487, 0.05, +3.8049437499999015, 1.7999999999994376, 0.05, +3.8961937499998727, 1.8249999999994237, 0.05, +3.9886937499998454, 1.8499999999994543, 0.05, +4.0824437499998165, 1.8749999999994138, 0.05, +4.177443749999787, 1.8999999999994088, 0.05, +4.273693749999758, 1.9249999999994216, 0.05, +4.371193749999729, 1.9499999999994166, 0.05, +4.469943749999698, 1.9749999999993761, 0.05, +4.569943749999667, 1.999999999999389, 0.05, +4.671193749999636, 2.024999999999384, 0.05, +4.773693749999604, 2.0499999999993612, 0.05, +4.877443749999573, 2.074999999999374, 0.05, +4.982443749999541, 2.0999999999993513, 0.05, +5.088693749999508, 2.1249999999993463, 0.05, +5.196193749999475, 2.1499999999993413, 0.05, +5.304943749999442, 2.1749999999993364, 0.05, +5.4149437499994075, 2.1999999999993136, 0.05, +5.526193749999374, 2.2249999999993264, 0.05, +5.63869374999934, 2.2499999999993214, 0.05, +5.752437499999305, 2.2748749999992945, 0.05, +5.86741249999927, 2.2994999999993126, 0.05, +5.983606249999234, 2.323874999999269, 0.05, +6.101006249999198, 2.3479999999992884, 0.05, +6.219599999999161, 2.371874999999264, 0.05, +6.339374999999188, 2.3955000000005278, 0.05, +6.460318749999235, 2.4188750000009485, 0.05, +6.582418749999283, 2.4420000000009523, 0.05, +6.70566249999933, 2.464875000000948, 0.05, +6.830037499999377, 2.487500000000935, 0.05, +6.955531249999427, 2.509875000001003, 0.05, +7.082131249999476, 2.5320000000009735, 0.05, +7.209824999999525, 2.553875000000989, 0.05, +7.338599999999575, 2.5755000000009964, 0.05, +7.468443749999627, 2.596875000001031, 0.05, +7.599343749999676, 2.618000000000986, 0.05, +7.731287499999726, 2.638875000001004, 0.05, +7.864262499999778, 2.6595000000010316, 0.05, +7.998256249999831, 2.6798750000010685, 0.05, +8.133256249999883, 2.700000000001044, 0.05, +8.269249999999936, 2.7198750000010463, 0.05, +8.406224999999989, 2.7395000000010583, 0.05, +8.544168750000042, 2.758875000001062, 0.05, +8.683068750000096, 2.778000000001093, 0.05, +8.82291250000015, 2.79687500000108, 0.05, +8.963687500000203, 2.815500000001059, 0.05, +9.10538125000026, 2.833875000001136, 0.05, +9.247981250000315, 2.852000000001098, 0.05, +9.391475000000371, 2.869875000001123, 0.05, +9.535850000000424, 2.8875000000010687, 0.05, +9.681093750000482, 2.904875000001148, 0.05, +9.827193750000541, 2.9220000000011837, 0.05, +9.974137500000596, 2.9388750000011044, 0.05, +10.121912500000654, 2.955500000001159, 0.05, +10.27050625000071, 2.9718750000010985, 0.05, +10.41990625000077, 2.9880000000012075, 0.05, +10.570100000000826, 3.0038750000011305, 0.05, +10.721075000000885, 3.0195000000011873, 0.05, +10.872818750000944, 3.034875000001165, 0.05, +11.025318750001002, 3.0500000000011696, 0.05, +11.178562500001062, 3.0648750000012015, 0.05, +11.332537500001123, 3.079500000001225, 0.05, +11.487231250001182, 3.0938750000011694, 0.05, +11.642631250001243, 3.108000000001212, 0.05, +11.798725000001305, 3.1218750000012463, 0.05, +11.955500000001365, 3.135500000001201, 0.05, +12.112943750001426, 3.148875000001219, 0.05, +12.271043750001486, 3.1620000000011927, 0.05, +12.429787500001547, 3.1748750000012294, 0.05, +12.589162500001486, 3.1874999999987708, 0.05, +12.749156250001326, 3.1998749999968013, 0.05, +12.909756250001164, 3.2119999999967774, 0.05, +13.070950000001002, 3.2238749999967453, 0.05, +13.232725000000844, 3.235499999996847, 0.05, +13.395068750000679, 3.2468749999966917, 0.05, +13.557968750000517, 3.257999999996777, 0.05, +13.721412500000353, 3.2688749999967115, 0.05, +13.885387500000192, 3.27949999999678, 0.05, +14.049881250000029, 3.2898749999967336, 0.05, +14.214881249999861, 3.2999999999966434, 0.05, +14.380374999999695, 3.309874999996687, 0.05, +14.546349999999528, 3.3194999999966512, 0.05, +14.712793749999362, 3.3288749999966782, 0.05, +14.879693749999191, 3.3379999999965904, 0.05, +15.047037499999027, 3.3468749999967073, 0.05, +15.21481249999886, 3.355499999996674, 0.05, +15.383006249998692, 3.363874999996632, 0.05, +15.551606249998523, 3.3719999999966177, 0.05, +15.720599999998354, 3.3798749999966304, 0.05, +15.889974999998188, 3.3874999999966704, 0.05, +16.05971874999802, 3.3948749999965955, 0.05, +16.22981874999785, 3.401999999996619, 0.05, +16.40026249999768, 3.4088749999965984, 0.05, +16.57103749999751, 3.4154999999965696, 0.05, +16.742131249997335, 3.4218749999965326, 0.05, +16.913531249997167, 3.4279999999966293, 0.05, +17.085224999996992, 3.4338749999965046, 0.05, +17.25719999999682, 3.4394999999965847, 0.05, +17.42944374999665, 3.4448749999965855, 0.05, +17.601943749996476, 3.449999999996507, 0.05, +17.774687499996297, 3.45487499999642, 0.05, +17.94766249999613, 3.4594999999966802, 0.05, +18.120856249995956, 3.4638749999965057, 0.05, +18.29425624999578, 3.467999999996465, 0.05, +18.467849999995607, 3.471874999996558, 0.05, +18.641624999995432, 3.475499999996501, 0.05, +18.815568749995258, 3.4788749999965063, 0.05, +18.989668749995086, 3.4819999999965745, 0.05, +19.163912499994908, 3.4848749999964213, 0.05, +19.338287499994735, 3.487499999996544, 0.05, +19.512781249994557, 3.489874999996445, 0.05, +19.687381249994385, 3.491999999996551, 0.05, +19.86207499999421, 3.493874999996507, 0.05, +20.036849999994036, 3.4954999999965253, 0.05, +20.211693749993863, 3.4968749999965354, 0.05, +20.386593749993686, 3.497999999996466, 0.05, +20.561537499993513, 3.4988749999965307, 0.05, +20.73651249999334, 3.499499999996516, 0.05, +20.911506249993163, 3.499874999996493, 0.05, +21.086506249992986, 3.4999999999964615, 0.05, +21.261506249992813, 3.4999999999965326, 0.05, +21.43650624999264, 3.4999999999965326, 0.05, +21.611506249992466, 3.4999999999965326, 0.05, +21.786506249992293, 3.4999999999965326, 0.05, +21.961506249992116, 3.4999999999964615, 0.05, +22.136506249991942, 3.4999999999965326, 0.05, +22.31150624999177, 3.4999999999965326, 0.05, +22.486506249991592, 3.4999999999964615, 0.05, +22.66150624999142, 3.4999999999965326, 0.05, +22.836506249991242, 3.4999999999964615, 0.05, +23.01150624999107, 3.4999999999965326, 0.05, +23.186506249990895, 3.4999999999965326, 0.05, +23.361506249990722, 3.4999999999965326, 0.05, +23.53650624999055, 3.4999999999965326, 0.05, +23.71150624999037, 3.4999999999964615, 0.05, +23.886506249990198, 3.4999999999965326, 0.05, +24.061506249990025, 3.4999999999965326, 0.05, +24.23650624998985, 3.4999999999965326, 0.05, +24.411506249989678, 3.4999999999965326, 0.05, +24.5865062499895, 3.4999999999964615, 0.05, +24.761506249989328, 3.4999999999965326, 0.05, +24.936506249989154, 3.4999999999965326, 0.05, +25.11150624998898, 3.4999999999965326, 0.05, +25.286506249988808, 3.4999999999965326, 0.05, +25.46150624998863, 3.4999999999964615, 0.05, +25.636506249988457, 3.4999999999965326, 0.05, +25.81150624998828, 3.4999999999964615, 0.05, +25.986506249988107, 3.4999999999965326, 0.05, +26.161506249987937, 3.4999999999966036, 0.05, +26.336506249987757, 3.4999999999963904, 0.05, +26.511506249987587, 3.4999999999966036, 0.05, +26.68650624998741, 3.4999999999964615, 0.05, +26.86150624998724, 3.4999999999966036, 0.05, +27.036506249987063, 3.4999999999964615, 0.05, +27.211506249986883, 3.4999999999963904, 0.05, +27.386506249986716, 3.4999999999966747, 0.05, +27.561506249986536, 3.4999999999963904, 0.05, +27.736506249986366, 3.4999999999966036, 0.05, +27.911506249986193, 3.4999999999965326, 0.05, +28.086506249986016, 3.4999999999964615, 0.05, +28.261506249985842, 3.4999999999965326, 0.05, +28.436506249985666, 3.4999999999964615, 0.05, +28.611506249985492, 3.4999999999965326, 0.05, +28.786506249985322, 3.4999999999966036, 0.05, +28.961506249985142, 3.4999999999963904, 0.05, +29.136506249984972, 3.4999999999966036, 0.05, +29.31150624998479, 3.4999999999963904, 0.05, +29.486506249984625, 3.4999999999966747, 0.05, +29.66150624998445, 3.4999999999964615, 0.05, +29.836506249984275, 3.4999999999965326, 0.05, +30.0115062499841, 3.4999999999965326, 0.05, +30.186506249983925, 3.4999999999964615, 0.05, +30.36150624998375, 3.4999999999965326, 0.05, +30.536506249983574, 3.4999999999964615, 0.05, +30.7115062499834, 3.4999999999965326, 0.05, +30.886506249983228, 3.4999999999965326, 0.05, +31.06150624998305, 3.4999999999964615, 0.05, +31.236506249982877, 3.4999999999965326, 0.05, +31.411506249982708, 3.4999999999966036, 0.05, +31.586506249982527, 3.4999999999963904, 0.05, +31.761506249982357, 3.4999999999966036, 0.05, +31.936506249982177, 3.4999999999963904, 0.05, +32.111506249982, 3.4999999999965326, 0.05, +32.28650624998182, 3.4999999999963904, 0.05, +32.461506249981646, 3.4999999999965326, 0.05, +32.636506249981466, 3.4999999999963904, 0.05, +32.81150624998129, 3.4999999999965326, 0.05, +32.98650624998111, 3.4999999999963904, 0.05, +33.16150624998094, 3.4999999999965326, 0.05, +33.33650624998076, 3.4999999999963904, 0.05, +33.51150624998058, 3.4999999999963904, 0.05, +33.6865062499804, 3.4999999999963904, 0.05, +33.861506249980216, 3.4999999999963904, 0.05, +34.03650624998004, 3.4999999999965326, 0.05, +34.21150624997986, 3.4999999999963904, 0.05, +34.38650624997969, 3.4999999999965326, 0.05, +34.56150624997951, 3.4999999999963904, 0.05, +34.736506249979335, 3.4999999999965326, 0.05, +34.911506249979155, 3.4999999999963904, 0.05, +35.08650624997898, 3.4999999999965326, 0.05, +35.2615062499788, 3.4999999999963904, 0.05, +35.43650624997863, 3.4999999999965326, 0.05, +35.61150624997844, 3.4999999999962483, 0.05, +35.78650624997827, 3.4999999999965326, 0.05, +35.961506249978086, 3.4999999999963904, 0.05, +36.13650624997791, 3.4999999999965326, 0.05, +36.31150624997773, 3.4999999999963904, 0.05, +36.48650624997755, 3.4999999999963904, 0.05, +36.66150624997737, 3.4999999999963904, 0.05, +36.83650624997719, 3.4999999999963904, 0.05, +37.01150624997702, 3.4999999999965326, 0.05, +37.18650624997684, 3.4999999999963904, 0.05, +37.361506249976664, 3.4999999999965326, 0.05, +37.53650624997648, 3.4999999999963904, 0.05, +37.71150624997631, 3.4999999999965326, 0.05, +37.88650624997613, 3.4999999999963904, 0.05, +38.061506249975956, 3.4999999999965326, 0.05, +38.236506249975776, 3.4999999999963904, 0.05, +38.4115062499756, 3.4999999999965326, 0.05, +38.58650624997542, 3.4999999999963904, 0.05, +38.76150624997524, 3.4999999999963904, 0.05, +38.93650624997507, 3.4999999999965326, 0.05, +39.11150624997489, 3.4999999999963904, 0.05, +39.28650624997471, 3.4999999999963904, 0.05, +39.46150624997453, 3.4999999999965326, 0.05, +39.63650624997435, 3.4999999999963904, 0.05, +39.81150624997417, 3.4999999999963904, 0.05, +39.98650624997399, 3.4999999999963904, 0.05, +40.16150624997381, 3.4999999999963904, 0.05, +40.33650624997364, 3.4999999999965326, 0.05, +40.51150624997346, 3.4999999999963904, 0.05, +40.686506249973284, 3.4999999999965326, 0.05, +40.861506249973104, 3.4999999999963904, 0.05, +41.03650624997293, 3.4999999999965326, 0.05, +41.21150624997275, 3.4999999999963904, 0.05, +41.38650624997258, 3.4999999999965326, 0.05, +41.561506249972396, 3.4999999999963904, 0.05, +41.73650624997222, 3.4999999999965326, 0.05, +41.91150624997204, 3.4999999999963904, 0.05, +42.08650624997186, 3.4999999999963904, 0.05, +42.26150624997168, 3.4999999999963904, 0.05, +42.43650624997151, 3.4999999999965326, 0.05, +42.61150624997133, 3.4999999999963904, 0.05, +42.78650624997115, 3.4999999999963904, 0.05, +42.961506249970974, 3.4999999999965326, 0.05, +43.13650624997079, 3.4999999999963904, 0.05, +43.31150624997062, 3.4999999999965326, 0.05, +43.48650624997044, 3.4999999999963904, 0.05, +43.661506249970266, 3.4999999999965326, 0.05, +43.836506249970085, 3.4999999999963904, 0.05, +44.01150624996991, 3.4999999999965326, 0.05, +44.18650624996973, 3.4999999999963904, 0.05, +44.36150624996955, 3.4999999999963904, 0.05, +44.53650624996937, 3.4999999999963904, 0.05, +44.71150624996919, 3.4999999999963904, 0.05, +44.88650624996902, 3.4999999999965326, 0.05, +45.061506249968836, 3.4999999999963904, 0.05, +45.236506249968656, 3.4999999999963904, 0.05, +45.41150624996848, 3.4999999999965326, 0.05, +45.5865062499683, 3.4999999999963904, 0.05, +45.76150624996813, 3.4999999999965326, 0.05, +45.93650624996795, 3.4999999999963904, 0.05, +46.11150624996777, 3.4999999999963904, 0.05, +46.286506249967594, 3.4999999999965326, 0.05, +46.461506249967414, 3.4999999999963904, 0.05, +46.63650624996724, 3.4999999999965326, 0.05, +46.81150624996706, 3.4999999999963904, 0.05, +46.98650624996689, 3.4999999999965326, 0.05, +47.161506249966706, 3.4999999999963904, 0.05, +47.336506249966526, 3.4999999999963904, 0.05, +47.511506249966345, 3.4999999999963904, 0.05, +47.68650624996617, 3.4999999999965326, 0.05, +47.86150624996599, 3.4999999999963904, 0.05, +48.03650624996582, 3.4999999999965326, 0.05, +48.21150624996564, 3.4999999999963904, 0.05, +48.386506249965464, 3.4999999999965326, 0.05, +48.561506249965284, 3.4999999999963904, 0.05, +48.7365062499651, 3.4999999999963904, 0.05, +48.91150624996492, 3.4999999999963904, 0.05, +49.08650624996474, 3.4999999999963904, 0.05, +49.26150624996457, 3.4999999999965326, 0.05, +49.43650624996439, 3.4999999999963904, 0.05, +49.611506249964215, 3.4999999999965326, 0.05, +49.786506249964035, 3.4999999999963904, 0.05, +49.96150624996386, 3.4999999999965326, 0.05, +50.13650624996444, 3.500000000011596, 0.05, +50.31150624996525, 3.5000000000161435, 0.05, +50.48650624996604, 3.5000000000158593, 0.05, +50.66150624996683, 3.500000000015717, 0.05, +50.83650624996762, 3.5000000000158593, 0.05, +51.01150624996841, 3.5000000000158593, 0.05, +51.18650624996921, 3.5000000000160014, 0.05, +51.36150624996999, 3.500000000015575, 0.05, +51.5365062499708, 3.5000000000161435, 0.05, +51.711506249971585, 3.500000000015717, 0.05, +51.88650624997239, 3.5000000000161435, 0.05, +52.06150624997317, 3.500000000015575, 0.05, +52.23650624997397, 3.5000000000160014, 0.05, +52.411506249974764, 3.5000000000158593, 0.05, +52.58650624997556, 3.5000000000158593, 0.05, +52.76150624997634, 3.500000000015717, 0.05, +52.93650624997715, 3.5000000000161435, 0.05, +53.111506249977936, 3.500000000015717, 0.05, +53.28650624997873, 3.5000000000158593, 0.05, +53.46150624997952, 3.5000000000158593, 0.05, +53.63650624998032, 3.5000000000160014, 0.05, +53.811506249981115, 3.5000000000158593, 0.05, +53.98650624998191, 3.5000000000158593, 0.05, +54.16150624998269, 3.500000000015717, 0.05, +54.3365062499835, 3.5000000000161435, 0.05, +54.51150624998429, 3.5000000000158593, 0.05, +54.68650624998508, 3.500000000015717, 0.05, +54.86150624998587, 3.5000000000158593, 0.05, +55.03650624998667, 3.5000000000160014, 0.05, +55.211506249987465, 3.5000000000158593, 0.05, +55.386506249988244, 3.500000000015575, 0.05, +55.56150624998905, 3.5000000000161435, 0.05, +55.73650624998984, 3.500000000015717, 0.05, +55.91150624999063, 3.5000000000158593, 0.05, +56.08650624999142, 3.5000000000158593, 0.05, +56.26150624999222, 3.5000000000160014, 0.05, +56.436506249993016, 3.5000000000158593, 0.05, +56.61150624999381, 3.5000000000158593, 0.05, +56.786506249994595, 3.500000000015717, 0.05, +56.9615062499954, 3.5000000000161435, 0.05, +57.13650624999619, 3.500000000015717, 0.05, +57.31150624999698, 3.5000000000158593, 0.05, +57.486506249997774, 3.5000000000158593, 0.05, +57.661506249998574, 3.5000000000160014, 0.05, +57.83650624999937, 3.5000000000158593, 0.05, +58.01150625000016, 3.5000000000158593, 0.05, +58.18650625000095, 3.5000000000158593, 0.05, +58.36150625000175, 3.5000000000160014, 0.05, +58.53650625000253, 3.500000000015575, 0.05, +58.71150625000333, 3.5000000000160014, 0.05, +58.886506250004125, 3.5000000000158593, 0.05, +59.061506250004925, 3.5000000000160014, 0.05, +59.23650625000571, 3.500000000015717, 0.05, +59.41150625000651, 3.5000000000160014, 0.05, +59.586506250007304, 3.5000000000158593, 0.05, +59.76150625000809, 3.500000000015717, 0.05, +59.93650625000888, 3.5000000000158593, 0.05, +60.111506250009676, 3.5000000000158593, 0.05, +60.286506250010476, 3.5000000000160014, 0.05, +60.46150625001127, 3.5000000000158593, 0.05, +60.63650625001206, 3.5000000000158593, 0.05, +60.811506250012854, 3.5000000000158593, 0.05, +60.986506250013655, 3.5000000000160014, 0.05, +61.16150625001445, 3.5000000000158593, 0.05, +61.33650625001523, 3.500000000015717, 0.05, +61.511506250016026, 3.5000000000158593, 0.05, +61.686506250016826, 3.5000000000160014, 0.05, +61.86150625001761, 3.500000000015717, 0.05, +62.03650625001841, 3.5000000000160014, 0.05, +62.211506250019205, 3.5000000000158593, 0.05, +62.386506250020005, 3.5000000000160014, 0.05, +62.561506250020784, 3.500000000015575, 0.05, +62.736506250021584, 3.5000000000160014, 0.05, +62.91150625002238, 3.5000000000158593, 0.05, +63.08650625002318, 3.5000000000160014, 0.05, +63.26150625002396, 3.500000000015717, 0.05, +63.43650625002476, 3.5000000000160014, 0.05, +63.611506250025556, 3.5000000000158593, 0.05, +63.786506250026356, 3.5000000000160014, 0.05, +63.961506250027135, 3.500000000015575, 0.05, +64.13650625002792, 3.500000000015717, 0.05, +64.31150625002873, 3.5000000000161435, 0.05, +64.48650625002952, 3.5000000000158593, 0.05, +64.66150625003031, 3.5000000000158593, 0.05, +64.8365062500311, 3.5000000000158593, 0.05, +65.0115062500319, 3.5000000000158593, 0.05, +65.18650625003269, 3.5000000000158593, 0.05, +65.36150625003349, 3.5000000000158593, 0.05, +65.53650625003428, 3.5000000000158593, 0.05, +65.71150625003509, 3.5000000000161435, 0.05, +65.88650625003586, 3.500000000015575, 0.05, +66.06150625003666, 3.5000000000158593, 0.05, +66.23650625003745, 3.5000000000158593, 0.05, +66.41150625003826, 3.5000000000161435, 0.05, +66.58650625003904, 3.500000000015575, 0.05, +66.76150625003984, 3.5000000000161435, 0.05, +66.93650625004064, 3.5000000000158593, 0.05, +67.11150625004143, 3.5000000000158593, 0.05, +67.28650625004221, 3.500000000015575, 0.05, +67.46150625004302, 3.5000000000161435, 0.05, +67.63650625004381, 3.5000000000158593, 0.05, +67.8115062500446, 3.5000000000158593, 0.05, +67.9865062500454, 3.5000000000158593, 0.05, +68.16150625004619, 3.5000000000158593, 0.05, +68.33650625004698, 3.5000000000158593, 0.05, +68.51150625004776, 3.500000000015575, 0.05, +68.68650625004857, 3.5000000000161435, 0.05, +68.86150625004936, 3.5000000000158593, 0.05, +69.03650625005015, 3.5000000000158593, 0.05, +69.21150625005095, 3.5000000000158593, 0.05, +69.38650625005174, 3.5000000000158593, 0.05, +69.56150625005253, 3.5000000000158593, 0.05, +69.73650625005334, 3.5000000000161435, 0.05, +69.91150625005412, 3.500000000015575, 0.05, +70.08650625005491, 3.5000000000158593, 0.05, +70.2615062500557, 3.5000000000158593, 0.05, +70.43650625005651, 3.5000000000161435, 0.05, +70.61150625005729, 3.500000000015575, 0.05, +70.7865062500581, 3.5000000000161435, 0.05, +70.96150625005889, 3.5000000000158593, 0.05, +71.13650625005968, 3.5000000000158593, 0.05, +71.31150625006046, 3.500000000015575, 0.05, +71.48650625006127, 3.5000000000161435, 0.05, +71.66150625006206, 3.5000000000158593, 0.05, +71.83650625006285, 3.5000000000158593, 0.05, +72.01150625006365, 3.5000000000158593, 0.05, +72.18650625006444, 3.5000000000158593, 0.05, +72.36150625006523, 3.5000000000158593, 0.05, +72.53650625006603, 3.5000000000158593, 0.05, +72.71150625006682, 3.5000000000158593, 0.05, +72.88650625006761, 3.5000000000158593, 0.05, +73.0615062500684, 3.5000000000158593, 0.05, +73.2365062500692, 3.5000000000158593, 0.05, +73.41150625006999, 3.5000000000158593, 0.05, +73.58650625007078, 3.5000000000158593, 0.05, +73.76150625007159, 3.5000000000161435, 0.05, +73.93650625007237, 3.500000000015575, 0.05, +74.11150625007318, 3.5000000000161435, 0.05, +74.28650625007396, 3.500000000015575, 0.05, +74.46150625007475, 3.5000000000158593, 0.05, +74.63650625007554, 3.5000000000158593, 0.05, +74.81150625007635, 3.5000000000161435, 0.05, +74.98650625007714, 3.5000000000158593, 0.05, +75.16150625007793, 3.5000000000158593, 0.05, +75.33650625007871, 3.500000000015575, 0.05, +75.51150625007952, 3.5000000000161435, 0.05, +75.68650625008031, 3.5000000000158593, 0.05, +75.8615062500811, 3.5000000000158593, 0.05, +76.0365062500819, 3.5000000000158593, 0.05, +76.21150625008269, 3.5000000000158593, 0.05, +76.38650625008349, 3.5000000000158593, 0.05, +76.56150625008428, 3.5000000000158593, 0.05, +76.73650625008507, 3.5000000000158593, 0.05, +76.91150625008588, 3.5000000000161435, 0.05, +77.08650625008667, 3.5000000000158593, 0.05, +77.26150625008745, 3.500000000015575, 0.05, +77.43650625008824, 3.5000000000158593, 0.05, +77.61150625008904, 3.5000000000158593, 0.05, +77.78650625008983, 3.5000000000158593, 0.05, +77.96150625009062, 3.5000000000158593, 0.05, +78.13650625009143, 3.5000000000161435, 0.05, +78.31150625009221, 3.500000000015575, 0.05, +78.486506250093, 3.5000000000158593, 0.05, +78.6615062500938, 3.5000000000158593, 0.05, +78.8365062500946, 3.5000000000161435, 0.05, +79.0115062500954, 3.5000000000158593, 0.05, +79.18650271438189, 3.499929285729877, 0.05, +79.36148585723981, 3.499662857158512, 0.05, +79.53644317866915, 3.4991464285866414, 0.05, +79.71136217866989, 3.4983800000148335, 0.05, +79.88623035724206, 3.4973635714433726, 0.05, +80.06103521438564, 3.4960971428716903, 0.05, +80.23576425010062, 3.4945807142995022, 0.05, +80.41040496438703, 3.4928142857282296, 0.05, +80.58494485724485, 3.4907978571564513, 0.05, +80.75937142867409, 3.4885314285847357, 0.05, +80.93367217867474, 3.486015000013083, 0.05, +81.1078346072468, 3.4832485714412087, 0.05, +81.28184621439027, 3.480232142869397, 0.05, +81.45569450010517, 3.4769657142979327, 0.05, +81.62936696439148, 3.4734492857262467, 0.05, +81.80285110724921, 3.4696828571546234, 0.05, +81.97613442867834, 3.4656664285824945, 0.05, +82.14920442867889, 3.461400000010997, 0.05, +82.32204860725085, 3.4568835714392776, 0.05, +82.49465446439422, 3.452117142867337, 0.05, +82.667009500109, 3.4471007142957433, 0.05, +82.83910121439521, 3.4418342857242124, 0.05, +83.01091710725282, 3.4363178571521757, 0.05, +83.18244467868185, 3.430551428580486, 0.05, +83.35367142868229, 3.4245350000088592, 0.05, +83.52458485725415, 3.418268571437295, 0.05, +83.69517246439743, 3.4117521428655095, 0.05, +83.8654217501121, 3.4049857142935025, 0.05, +84.0353202143982, 3.3979692857218424, 0.05, +84.20485535725572, 3.3907028571505293, 0.05, +84.37401467868465, 3.3831864285784263, 0.05, +84.54278567868498, 3.3754200000066703, 0.05, +84.71115585725673, 3.367403571434977, 0.05, +84.87911271439988, 3.3591371428630623, 0.05, +85.04664375011446, 3.3506207142914946, 0.05, +85.21373646440045, 3.3418542857199895, 0.05, +85.38037835725785, 3.332837857147979, 0.05, +85.54655692868667, 3.323571428576315, 0.05, +85.71225967868689, 3.31405500000443, 0.05, +85.87747410725854, 3.304288571432892, 0.05, +86.0421877144016, 3.2942721428614163, 0.05, +86.20638800011606, 3.284005714289151, 0.05, +86.37006246440194, 3.273489285717517, 0.05, +86.53319860725924, 3.2627228571459455, 0.05, +86.69578392868793, 3.2517064285738684, 0.05, +86.85780592868807, 3.2404400000027067, 0.05, +87.01925210725959, 3.228923571430471, 0.05, +87.18010996440252, 3.217157142858582, 0.05, +87.34036700011688, 3.2051407142873245, 0.05, +87.50001071440265, 3.192874285715277, 0.05, +87.65902860725983, 3.1803578571435764, 0.05, +87.81740817868842, 3.1675914285719386, 0.05, +87.97513692868841, 3.154574999999795, 0.05, +88.13220235725981, 3.1413085714279987, 0.05, +88.28859196440264, 3.127792142856549, 0.05, +88.44429325011687, 3.114025714284594, 0.05, +88.59929371440252, 3.1000092857129857, 0.05, +88.75358085725959, 3.0857428571414403, 0.05, +88.90714217868806, 3.071226428569389, 0.05, +89.05996517868793, 3.0564599999974007, 0.05, +89.21203735725923, 3.0414435714260435, 0.05, +89.36334621440194, 3.0261771428541806, 0.05, +89.51387925011606, 3.0106607142823805, 0.05, +89.6636239644016, 2.994894285710643, 0.05, +89.81256785725853, 2.9788778571386842, 0.05, +89.96069842868688, 2.9626114285670724, 0.05, +90.10800317868664, 2.946094999995239, 0.05, +90.25446960725782, 2.9293285714234685, 0.05, +90.4000852144004, 2.9123121428517607, 0.05, +90.5448375001144, 2.8950457142798314, 0.05, +90.6887139643998, 2.877529285707965, 0.05, +90.83170210725662, 2.8597628571364453, 0.05, +90.97378942868484, 2.84174642856442, 0.05, +91.11496342868449, 2.823479999993026, 0.05, +91.25521160725553, 2.804963571420842, 0.05, +91.39452146439798, 2.786197142849005, 0.05, +91.53288050011184, 2.767180714277231, 0.05, +91.67027621439713, 2.7479142857058036, 0.05, +91.80669610725381, 2.7283978571335865, 0.05, +91.94212767868193, 2.708631428562285, 0.05, +92.07655842868144, 2.688614999990193, 0.05, +92.20997585725235, 2.6683485714181643, 0.05, +92.34236746439468, 2.6478321428467666, 0.05, +92.47372075010843, 2.6270657142748632, 0.05, +92.60402321439358, 2.6060492857030226, 0.05, +92.73326235725014, 2.584782857131245, 0.05, +92.8614256786781, 2.5632664285592455, 0.05, +92.98850067867748, 2.541499999987593, 0.05, +93.11447485724828, 2.5194835714160035, 0.05, +93.23933571439046, 2.497217142843624, 0.05, +93.36307075010409, 2.474700714272444, 0.05, +93.4856674643891, 2.4519342857001902, 0.05, +93.60711335724552, 2.4289178571285674, 0.05, +93.72739592867336, 2.405651428556723, 0.05, +93.84650267867262, 2.382134999985226, 0.05, +93.96442110724327, 2.3583685714129388, 0.05, +94.08113871438535, 2.334352142841567, 0.05, +94.1966430000988, 2.310085714269121, 0.05, +94.3109214643837, 2.285569285697875, 0.05, +94.42396160723999, 2.2608028571258387, 0.05, +94.535754464382, 2.235857142840132, 0.05, +94.64629732152399, 2.2108571428398704, 0.05, +94.75559017866597, 2.185857142839609, 0.05, +94.86363303580794, 2.1608571428393475, 0.05, +94.97042589294992, 2.1358571428396544, 0.05, +95.07596875009187, 2.1108571428391087, 0.05, +95.18026160723385, 2.0858571428394157, 0.05, +95.2833044643758, 2.060857142839154, 0.05, +95.38509732151776, 2.035857142839177, 0.05, +95.48564017865971, 2.0108571428389155, 0.05, +95.58493303580164, 1.985857142838654, 0.05, +95.68297589294359, 1.960857142838961, 0.05, +95.77976875008552, 1.9358571428386995, 0.05, +95.87531160722743, 1.9108571428381538, 0.05, +95.96960446436934, 1.8858571428381765, 0.05, +96.06264732151125, 1.8608571428381993, 0.05, +96.15444017865316, 1.835857142838222, 0.05, +96.24498303579506, 1.8108571428379605, 0.05, +96.33427589293696, 1.7858571428379832, 0.05, +96.42231875007884, 1.7608571428377218, 0.05, +96.50911160722072, 1.7358571428374603, 0.05, +96.59465446436259, 1.710857142837483, 0.05, +96.67894732150448, 1.68585714283779, 0.05, +96.76199017864634, 1.6608571428372443, 0.05, +96.8437830357882, 1.635857142837267, 0.05, +96.92432589293007, 1.6108571428372898, 0.05, +97.00361875007192, 1.5858571428370283, 0.05, +97.08166160721376, 1.5608571428367668, 0.05, +97.15845446435559, 1.5358571428365053, 0.05, +97.23399732149741, 1.510857142836528, 0.05, +97.30829017863925, 1.485857142836835, 0.05, +97.38133303578107, 1.4608571428362893, 0.05, +97.45312589292288, 1.435857142836312, 0.05, +97.52366875006469, 1.4108571428360506, 0.05, +97.59296160720649, 1.3858571428360733, 0.05, +97.6610044643483, 1.360857142836096, 0.05, +97.7277973214901, 1.3358571428361188, 0.05, +97.79334017863188, 1.310857142835573, 0.05, +97.85763303577366, 1.2858571428355958, 0.05, +97.92067589291544, 1.2608571428356186, 0.05, +97.9824722857715, 1.2359278571210552, 0.05, +98.04303200005613, 1.2111942856927271, 0.05, +98.10236753576935, 1.1867107142643363, 0.05, +98.16049139291115, 1.1624771428361669, 0.05, +98.21741607148155, 1.1384935714079347, 0.05, +98.2731540714805, 1.1147599999790714, 0.05, +98.32771789290805, 1.091276428550998, 0.05, +98.38112003576417, 1.0680428571222933, 0.05, +98.43337300004886, 1.0450592856938101, 0.05, +98.48448928576215, 1.0223257142658326, 0.05, +98.53448139290401, 0.999842142837224, 0.05, +98.58336182147445, 0.9776085714088367, 0.05, +98.63114307147347, 0.9556249999803867, 0.05, +98.67783764290105, 0.9338914285515898, 0.05, +98.72345803575725, 0.912407857123867, 0.05, +98.76801675004201, 0.8911742856952287, 0.05, +98.81152628575533, 0.8701907142665277, 0.05, +98.85399914289727, 0.8494571428386166, 0.05, +98.89544782146777, 0.8289735714100743, 0.05, +98.93588482146686, 0.8087399999817535, 0.05, +98.97532264289453, 0.7887564285533699, 0.05, +99.01377378575076, 0.7690228571246394, 0.05, +99.05125075003558, 0.7495392856964145, 0.05, +99.08776603574898, 0.7303057142681268, 0.05, +99.12333214289096, 0.7113221428394922, 0.05, +99.15796157146153, 0.6925885714113633, 0.05, +99.19166682146069, 0.6741049999831716, 0.05, +99.22446039288839, 0.6558714285540646, 0.05, +99.25635478574469, 0.6378878571260316, 0.05, +99.2873625000296, 0.6201542856982201, 0.05, +99.31749603574306, 0.6026707142692089, 0.05, +99.34676789288511, 0.5854371428409877, 0.05, +99.37519057145576, 0.5684535714129879, 0.05, +99.40277657145496, 0.5517199999840727, 0.05, +99.42953839288278, 0.5352364285562317, 0.05, +99.45548853573915, 0.5190028571274752, 0.05, +99.48063950002411, 0.5030192856992244, 0.05, +99.50500378573764, 0.4872857142706266, 0.05, +99.52859389287977, 0.4718021428425345, 0.05, +99.55142232145049, 0.4565685714143797, 0.05, +99.57350157144975, 0.4415849999853094, 0.05, +99.59484414287763, 0.4268514285575975, 0.05, +99.61546253573407, 0.41236785712868596, 0.05, +99.63536925001911, 0.3981342857008485, 0.05, +99.65457678573271, 0.3841507142720957, 0.05, +99.67309764287491, 0.3704171428438485, 0.05, +99.69094432144567, 0.3569335714152544, 0.05, +99.70812932144504, 0.34369999998745016, 0.05, +99.72466514287298, 0.3307164285587305, 0.05, +99.7405642857295, 0.31798285713051655, 0.05, +99.75583925001462, 0.30549928570223983, 0.05, +99.7705025357283, 0.29326571427361614, 0.05, +99.78456664287057, 0.28128214284549813, 0.05, +99.79804407144144, 0.26954857141731736, 0.05, +99.81094732144088, 0.2580649999887896, 0.05, +99.8232888928689, 0.24683142856048335, 0.05, +99.83508128572551, 0.2358478571321143, 0.05, +99.84633700001068, 0.2251142857033983, 0.05, +99.85706853572445, 0.2146307142754722, 0.05, +99.8672883928668, 0.2043971428469149, 0.05, +99.87700907143773, 0.19441357141857907, 0.05, +99.88624307143724, 0.18467999999018048, 0.05, +99.89500289286534, 0.17519642856200335, 0.05, +99.90330103572202, 0.16596285713376346, 0.05, +99.91115000000728, 0.1569792857051766, 0.05, +99.91856228572112, 0.1482457142768112, 0.05, +99.92555039286357, 0.1397621428489515, 0.05, +99.93212682143458, 0.13152857142017638, 0.05, +99.93830407143417, 0.12354499999190693, 0.05, +99.94409464286234, 0.11581142856329052, 0.05, +99.94951103571913, 0.10832785713574822, 0.05, +99.95456575000446, 0.10109428570672208, 0.05, +99.95927128571839, 0.09411071427848583, 0.05, +99.9636401428609, 0.08737714285018683, 0.05, +99.967684821432, 0.08089357142210929, 0.05, +99.97141782143169, 0.07465999999368478, 0.05, +99.97485164285995, 0.06867642856519751, 0.05, +99.97799878571679, 0.0629428571369317, 0.05, +99.98087175000222, 0.05745928570860315, 0.05, +99.98348303571623, 0.05222571428021183, 0.05, +99.98584514285885, 0.0472421428523262, 0.05, +99.98797057143003, 0.042508571423525154, 0.05, +99.9898718214298, 0.03802499999551401, 0.05, +99.99156139285816, 0.03379142856715589, 0.05, +99.99305178571511, 0.029807857139019234, 0.05, +99.99435550000061, 0.02607428570996717, 0.05, +99.99548503571472, 0.02259071428227344, 0.05, +99.9964528928574, 0.0193571428536643, 0.05, +99.99727157142868, 0.01637357142556084, 0.05, +99.99795357142855, 0.013639999997394625, 0.05, +99.998511392857, 0.011156428568881438, 0.05, +99.99895753571403, 0.008922857140589713, 0.05, +99.99930449999962, 0.006939285711951015, 0.05, +99.99956478571383, 0.005205714284102214, 0.05, +99.9997508928566, 0.0037221428553380065, 0.05, +99.99987532142796, 0.002488571427363695, 0.05, +99.99995057142792, 0.0015049999990424112, 0.05, +99.99998914285645, 7.714285706583723E-4, 0.05, +100.00000353571357, 2.878571424957954E-4, 0.05, +100.00000624999929, 5.428571427046336E-5, 0.05, +100.00000624999929, 0.0, 0.05, diff --git a/src/main/resources/rightProfile.csv b/src/main/resources/rightProfile.csv index d349ebc7..7657b3af 100644 --- a/src/main/resources/rightProfile.csv +++ b/src/main/resources/rightProfile.csv @@ -1,1147 +1,939 @@ -1146 6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, -6.3979198129539205E-6, 2.958396259078418E-6, 0.05, -6.730740121155927E-6, 6.656406164040121E-6, 0.05, -7.322423161052439E-6, 1.183366079793024E-5, 0.05, -8.246934296921023E-6, 1.8490222717371686E-5, 0.05, -9.57824401438665E-6, 2.6626194349312525E-5, 0.05, -1.1390330412650036E-5, 3.6241727965267745E-5, 0.05, -1.140254507800249E-4, 0.0020527024073474973, 0.05, -6.172838460942016E-4, 0.010065167906283534, 0.05, -0.0012385805797318194, 0.012425934672752357, 0.05, -0.0019903588334635202, 0.015035565074634018, 0.05, -0.002885033203570747, 0.017893487402144536, 0.05, -0.0039350309336994025, 0.020999954602573104, 0.05, -0.005152779686005718, 0.024354975046126305, 0.05, -0.0065507040759068425, 0.027958487798022496, 0.05, -0.008141224887367004, 0.03181041622920322, 0.05, -0.009936784155774647, 0.035911185368152854, 0.05, -0.01194978884972533, 0.04026009387901365, 0.05, -0.014192671647435104, 0.0448576559541955, 0.05, -0.016677859757119686, 0.04970376219369162, 0.05, -0.019417773849294336, 0.05479828184349296, 0.05, -0.02242484045738296, 0.06014133216177249, 0.05, -0.025711481912289842, 0.06573282909813763, 0.05, -0.02929012872646622, 0.07157293628352757, 0.05, -0.03317320209931469, 0.07766146745696934, 0.05, -0.03737311963040981, 0.08399835062190243, 0.05, -0.04190231127762728, 0.09058383294434941, 0.05, -0.04677320460973636, 0.09741786664218159, 0.05, -0.05199821418554838, 0.10450019151624056, 0.05, -0.05758976689617732, 0.1118310542125787, 0.05, -0.06356028168394007, 0.11941029575525504, 0.05, -0.06992218220967739, 0.12723801051474645, 0.05, -0.07668788858121878, 0.13531412743082788, 0.05, -0.08386983043419828, 0.14363883705958996, 0.05, -0.09148041811859008, 0.15221175368783585, 0.05, -0.09953207556552598, 0.16103314893871817, 0.05, -0.10803721776480495, 0.17010284398557918, 0.05, -0.1170082733870086, 0.179421112444073, 0.05, -0.12645764974942628, 0.18898752724835363, 0.05, -0.13639777804753658, 0.1988025659622063, 0.05, -0.14684106180640513, 0.20886567517737117, 0.05, -0.15779991811735833, 0.2191771262190637, 0.05, -0.1692867705658698, 0.2297370489702292, 0.05, -0.18131403697048368, 0.24054532809227736, 0.05, -0.19389411830936157, 0.2516016267775579, 0.05, -0.2070394351894967, 0.2629063376027024, 0.05, -0.22076239884010485, 0.27445927301216333, 0.05, -0.23507541429350828, 0.28626030906806854, 0.05, -0.24999090419017056, 0.29830979793324536, 0.05, -0.26552127350859606, 0.31060738636851004, 0.05, -0.2816789242081459, 0.3231530139909962, 0.05, -0.2984762611871555, 0.33594673958019144, 0.05, -0.3159257043609333, 0.34898886347555624, 0.05, -0.3340396436542722, 0.36227878586677725, 0.05, -0.3528304943218005, 0.3758170133505668, 0.05, -0.3723106474024566, 0.3896030616131216, 0.05, -0.3924925053807479, 0.4036371595658265, 0.05, -0.41338847095828873, 0.4179193115508165, 0.05, -0.43501093745105723, 0.43244932985537, 0.05, -0.4573723100700361, 0.4472274523795767, 0.05, -0.48048496768254445, 0.46225315225016755, 0.05, -0.5043613118905373, 0.47752688415985806, 0.05, -0.5290137286808952, 0.49304833580715746, 0.05, -0.5544546104702085, 0.508817635786266, 0.05, -0.5806963397703419, 0.5248345860026671, 0.05, -0.60775130231301, 0.5410992508533639, 0.05, -0.6356318768300262, 0.5576114903403241, 0.05, -0.664350451304345, 0.5743714894863761, 0.05, -0.6939193976425666, 0.5913789267644328, 0.05, -0.7243510884579166, 0.6086338163070014, 0.05, -0.7556579032564459, 0.6261362959705841, 0.05, -0.7878522062166716, 0.6438860592045146, 0.05, -0.8209463672498726, 0.6618832206640198, 0.05, -0.8549527470212359, 0.6801275954272676, 0.05, -0.8898837100531635, 0.6986192606385518, 0.05, -0.9257516147897622, 0.7173580947319754, 0.05, -0.9625688143845613, 0.7363439918959827, 0.05, -1.0003476573953547, 0.755576860215867, 0.05, -1.0391005032708323, 0.7750569175095517, 0.05, -1.0788396849578648, 0.7947836337406513, 0.05, -1.1195775500718959, 0.8147573022806234, 0.05, -1.1613264304835578, 0.8349776082332383, 0.05, -1.204098667281267, 0.8554447359541831, 0.05, -1.247906576185184, 0.8761581780783368, 0.05, -1.2927625008574168, 0.8971184934446589, 0.05, -1.338678742014655, 0.9183248231447642, 0.05, -1.3856676298970982, 0.9397777576488631, 0.05, -1.433741461486, 0.9614766317780357, 0.05, -1.4829125584321816, 0.9834219389236322, 0.05, -1.5331932073550507, 1.0056129784573815, 0.05, -1.5845957068248708, 1.0280499893964015, 0.05, -1.6371323486644185, 1.0507328367909525, 0.05, -1.6908154167747211, 1.073661362206055, 0.05, -1.7456571857975107, 1.0968353804557918, 0.05, -1.8016699219420356, 1.120254722890499, 0.05, -1.8588659026640661, 1.1439196144406127, 0.05, -1.917257375183617, 1.1678294503910174, 0.05, -1.9768565902519142, 1.1919843013659435, 0.05, -2.0376757939603003, 1.2163840741677212, 0.05, -2.0997272201254216, 1.2410285233024234, 0.05, -2.163016893143893, 1.2657934603694272, 0.05, -2.227544622803847, 1.2905545931990814, 0.05, -2.2933102147566697, 1.315311839056455, 0.05, -2.3603134659728124, 1.340065024322854, 0.05, -2.4285541641662167, 1.36481396386809, 0.05, -2.4980321071556943, 1.3895588597895547, 0.05, -2.5687470601148994, 1.4142990591841045, 0.05, -2.6406987952047385, 1.439034701796786, 0.05, -2.7138870847593255, 1.4637657910917383, 0.05, -2.7883116752153816, 1.4884918091211226, 0.05, -2.863972317163791, 1.5132128389681894, 0.05, -2.940868751328382, 1.5379286832918166, 0.05, -3.01900071387026, 1.5626392508375557, 0.05, -3.0983679180562693, 1.5873440837201875, 0.05, -3.1789700864238326, 1.612043367351263, 0.05, -3.2608069162173656, 1.6367365958706588, 0.05, -3.343878112553792, 1.6614239267285287, 0.05, -3.4281833512175215, 1.686104773274582, 0.05, -3.513722318500188, 1.7107793456533287, 0.05, -3.6004946758191685, 1.7354471463796062, 0.05, -3.688500074225628, 1.7601079681291976, 0.05, -3.7777381691313607, 1.7847618981146498, 0.05, -3.868208582812692, 1.809408273626626, 0.05, -3.95991094211484, 1.834047186042968, 0.05, -4.052844863439537, 1.8586784264939353, 0.05, -4.147009933603232, 1.883301403273894, 0.05, -4.242405744191372, 1.907916211762813, 0.05, -4.339031864726593, 1.932522410704416, 0.05, -4.436887858002806, 1.9571198655242656, 0.05, -4.535973272800137, 1.981708295946632, 0.05, -4.636287632441776, 2.006287192832762, 0.05, -4.737830463995241, 2.0308566310693137, 0.05, -4.840601263372458, 2.05541598754435, 0.05, -4.944599519239872, 2.0799651173482725, 0.05, -5.049824712197924, 2.1045038591610368, 0.05, -5.156276288300214, 2.1290315220458087, 0.05, -5.263953691955869, 2.1535480731131, 0.05, -5.37285634903212, 2.1780531415250133, 0.05, -5.482983665694789, 2.2025463332533777, 0.05, -5.594335029319354, 2.2270272724913087, 0.05, -5.706903624379009, 2.2513719011931115, 0.05, -5.820676451144033, 2.275456535300475, 0.05, -5.935640469312452, 2.2992803633683914, 0.05, -6.051782658975842, 2.322843793267803, 0.05, -6.169089959705703, 2.3461460145972155, 0.05, -6.2875493235404205, 2.3691872766943556, 0.05, -6.4071476775488945, 2.3919670801694854, 0.05, -6.527871938395545, 2.4144852169330018, 0.05, -6.6497090234449425, 2.4367417009879535, 0.05, -6.772645829408703, 2.458736119275217, 0.05, -6.896669242597277, 2.480468263771471, 0.05, -7.021766153383878, 2.5019382157320336, 0.05, -7.147923429183088, 2.523145515984178, 0.05, -7.27512793770314, 2.5440901704010552, 0.05, -7.403366539841029, 2.5647720427577734, 0.05, -7.532626090519905, 2.5851910135775285, 0.05, -7.662893435593764, 2.6053469014771884, 0.05, -7.794155424256278, 2.6252397732502764, 0.05, -7.926398903084572, 2.6448695765658816, 0.05, -8.05961071652518, 2.6642362688121537, 0.05, -8.193777709501713, 2.6833398595306854, 0.05, -8.32888672757939, 2.702180361553507, 0.05, -8.464924627672518, 2.720758001862565, 0.05, -8.601878267770475, 2.739072801959144, 0.05, -8.739734525207487, 2.7571251487402186, 0.05, -8.878480278529345, 2.7749150664371802, 0.05, -9.01810243035504, 2.7924430365138844, 0.05, -9.158587889763151, 2.8097091881622465, 0.05, -9.29992360186445, 2.826714242025962, 0.05, -9.442096524324064, 2.843458449192309, 0.05, -9.585093648676468, 2.859942487048077, 0.05, -9.728902000007322, 2.876167026617066, 0.05, -9.873508636512014, 2.8921327300938398, 0.05, -10.018900661227402, 2.907840494307748, 0.05, -10.16506521642358, 2.923291103923545, 0.05, -10.31198950558002, 2.938485783128775, 0.05, -10.45966077120271, 2.9534253124538057, 0.05, -10.608066331219863, 2.968111200343052, 0.05, -10.757193564707212, 2.9825446697469604, 0.05, -10.907029917938397, 2.9967270646237165, 0.05, -11.05756291638886, 3.010659969009282, 0.05, -11.20878016907782, 3.024345053779166, 0.05, -11.36066937361844, 3.0377840908124387, 0.05, -11.51321831804005, 3.0509788884321867, 0.05, -11.666414888327136, 3.063931405741742, 0.05, -11.820247081740485, 3.07664386826698, 0.05, -11.974702995799175, 3.089118281173805, 0.05, -12.129770845487368, 3.1013569937638517, 0.05, -12.285438963705895, 3.113362364370549, 0.05, -12.441695804445807, 3.125136814798247, 0.05, -12.598529948258175, 3.1366828762473595, 0.05, -12.755930102597858, 3.148003086793656, 0.05, -12.913885101289909, 3.1590999738410046, 0.05, -13.072383911513596, 3.1699762044737345, 0.05, -13.231415633446117, 3.180634438650437, 0.05, -13.39096949272278, 3.1910771855332607, 0.05, -13.551034844784564, 3.2013070412356748, 0.05, -13.711601171807871, 3.2113265404661298, 0.05, -13.872658077054673, 3.221138104936051, 0.05, -14.034195279059764, 3.230744040101812, 0.05, -14.196202608251214, 3.240146583828986, 0.05, -14.358669998561048, 3.2493478061966683, 0.05, -14.521587479225499, 3.2583496132890164, 0.05, -14.684945164507583, 3.267153705641698, 0.05, -14.848733246136314, 3.275761632574602, 0.05, -15.012941980238883, 3.284174682051374, 0.05, -15.177561675723613, 3.29239390969459, 0.05, -15.34258268207963, 3.300420127120357, 0.05, -15.50799537796505, 3.3082539177083996, 0.05, -15.673790156897315, 3.3158955786452893, 0.05, -15.83995741404107, 3.3233451428750915, 0.05, -16.00648753238749, 3.33060236692835, 0.05, -16.17337087020569, 3.337666756364049, 0.05, -16.340597747784326, 3.344537551572703, 0.05, -16.50815843618039, 3.351213767921331, 0.05, -16.67604314268252, 3.3576941300425815, 0.05, -16.84424200208565, 3.3639771880626244, 0.05, -17.012745064687916, 3.3700612520453515, 0.05, -17.18154228763261, 3.3759444588938696, 0.05, -17.35062352587139, 3.381624764775653, 0.05, -17.519978524938484, 3.3870999813418794, 0.05, -17.68959691442784, 3.392367789787165, 0.05, -17.859468202101514, 3.397425753473459, 0.05, -18.029581771393904, 3.4022713858478215, 0.05, -18.199926875411478, 3.406902080351505, 0.05, -18.370492638317618, 3.4113152581228015, 0.05, -18.541268051040227, 3.415508254452189, 0.05, -18.71224197399855, 3.419478459166488, 0.05, -18.883403134670264, 3.423223213434241, 0.05, -19.054740133322092, 3.4267399730365815, 0.05, -19.226241441035043, 3.430026154259017, 0.05, -19.397895407483077, 3.4330793289607033, 0.05, -19.569690259444453, 3.435897039227498, 0.05, -19.741614109976034, 3.438477010631602, 0.05, -19.913654958016142, 3.440816960802171, 0.05, -20.085800697555158, 3.4429147907803337, 0.05, -20.25803912193604, 3.4447684876176488, 0.05, -20.430357925622943, 3.4463760737380635, 0.05, -20.602744715383288, 3.4477357952068997, 0.05, -20.775187011640043, 3.4488459251351045, 0.05, -20.94767841730116, 3.449828113222322, 0.05, -21.12021863132575, 3.4508042804918135, 0.05, -21.29280729665665, 3.4517733066180556, 0.05, -21.465444009273494, 3.4527342523368603, 0.05, -21.63812831963772, 3.453686207284506, 0.05, -21.81085973653206, 3.454628337886827, 0.05, -21.98363773690214, 3.4555600074016004, 0.05, -22.156461761780836, 3.4564804975739376, 0.05, -22.329331228319116, 3.457389330765601, 0.05, -22.502245527981362, 3.458285993244896, 0.05, -22.675204034940037, 3.459170139173523, 0.05, -22.848206102158088, 3.4600413443610245, 0.05, -23.021251071772717, 3.460899392292586, 0.05, -23.194338272311555, 3.461744010776753, 0.05, -23.367467027571056, 3.462575105190017, 0.05, -23.540636650708414, 3.4633924627471466, 0.05, -23.7138464541016, 3.4641960678636705, 0.05, -23.887095746949004, 3.4649858569481085, 0.05, -24.06038383617943, 3.4657617846085302, 0.05, -24.23371003436314, 3.4665239636741765, 0.05, -24.407073653017594, 3.4672723730891235, 0.05, -24.580474009607695, 3.4680071318019947, 0.05, -24.753910428286748, 3.468728373581092, 0.05, -24.927382236184336, 3.46943615795178, 0.05, -25.10088877090541, 3.4701306944214974, 0.05, -25.274429376119233, 3.470812104276427, 0.05, -25.44800340786195, 3.4714806348543585, 0.05, -25.621610227910452, 3.472136400970051, 0.05, -25.79524921026583, 3.472779647107541, 0.05, -25.968919739575043, 3.4734105861842677, 0.05, -26.14262121078317, 3.4740294241625427, 0.05, -26.31635303089666, 3.474636402269826, 0.05, -26.49011461785091, 3.4752317390850074, 0.05, -26.663905402414173, 3.4758156912652582, 0.05, -26.837724827600073, 3.4763885037180358, 0.05, -27.01157234573185, 3.4769503626355203, 0.05, -27.185447425020033, 3.4775015857636635, 0.05, -27.359349544070746, 3.478042381014265, 0.05, -27.533278194696397, 3.478573012513027, 0.05, -27.707232879492484, 3.479093695921741, 0.05, -27.881213115434242, 3.4796047188351995, 0.05, -28.055218429791847, 3.4801062871520965, 0.05, -28.229248362839847, 3.480598660960014, 0.05, -28.403302467013788, 3.4810820834787792, 0.05, -28.577380305328166, 3.4815567662875644, 0.05, -28.75148145456009, 3.4820229846384714, 0.05, -28.92560550079964, 3.4824809247910005, 0.05, -29.099752043889723, 3.4829308618016634, 0.05, -29.273920692667545, 3.483372975556475, 0.05, -29.44811106938163, 3.4838075342816612, 0.05, -29.622322804699106, 3.484234706349585, 0.05, -29.796555542998753, 3.4846547659929215, 0.05, -29.970808935881248, 3.485067857649861, 0.05, -30.1450826472121, 3.4854742266170358, 0.05, -30.319376352131613, 3.4858740983902434, 0.05, -30.493689734288264, 3.4862676431330297, 0.05, -30.66802248638391, 3.486655041912924, 0.05, -30.842374313012723, 3.4870365325762465, 0.05, -31.01674492641677, 3.487412268080933, 0.05, -31.191134049111852, 3.487782453901627, 0.05, -31.36554141180033, 3.4881472537695255, 0.05, -31.539966755912143, 3.4885068822362872, 0.05, -31.714409829256464, 3.4888614668864473, 0.05, -31.888870389323476, 3.4892112013402232, 0.05, -32.06334820375138, 3.489556288558167, 0.05, -32.23784304504589, 3.4898968258902334, 0.05, -32.412354696152704, 3.4902330221362265, 0.05, -32.586882947903874, 3.4905650350233652, 0.05, -32.76142759807655, 3.4908930034535284, 0.05, -32.93598845286084, 3.4912170956858217, 0.05, -33.110565325430656, 3.491537451396282, 0.05, -33.28515803620791, 3.4918542155450876, 0.05, -33.45976641345935, 3.492167545028704, 0.05, -33.63439029254243, 3.492477581661537, 0.05, -33.80902951509113, 3.4927844509740913, 0.05, -33.9836839304751, 3.4930883076793626, 0.05, -34.15835339413333, 3.493389273164516, 0.05, -34.33303776886453, 3.4936874946240346, 0.05, -34.507736923667686, 3.4939830960631935, 0.05, -34.6824507334659, 3.494276195964201, 0.05, -34.85717908069242, 3.4945669445304, 0.05, -35.031921852839844, 3.4948554429484435, 0.05, -35.206678944622304, 3.4951418356491923, 0.05, -35.38145025627118, 3.4954262329775063, 0.05, -35.55623569422681, 3.4957087591125715, 0.05, -35.73103517070749, 3.49598952961373, 0.05, -35.90584860379638, 3.4962686617777794, 0.05, -36.08067591795522, 3.4965462831767806, 0.05, -36.25551704267531, 3.4968224944017616, 0.05, -36.43037191346879, 3.4970974158696375, 0.05, -36.60524047168438, 3.4973711643119176, 0.05, -36.780122664047866, 3.497643847269645, 0.05, -36.95501844290059, 3.4979155770544517, 0.05, -37.12992776613947, 3.4981864647775684, 0.05, -37.30485059716698, 3.498456620550323, 0.05, -37.47978690485196, 3.4987261536996375, 0.05, -37.65473666344547, 3.4989951718700762, 0.05, -37.82969985270539, 3.4992637851983948, 0.05, -38.00467645783728, 3.4995321026377955, 0.05, -38.17966646936153, 3.4998002304850773, 0.05, -38.35466988320649, 3.500068276899194, 0.05, -38.52968670072683, 3.500336350406809, 0.05, -38.704716928613266, 3.5006045577287748, 0.05, -38.87976057895803, 3.500873006895271, 0.05, -39.0548176693953, 3.5011418087453854, 0.05, -39.22988822279469, 3.501411067987811, 0.05, -39.40497226751098, 3.5016808943257196, 0.05, -39.58006983738511, 3.501951397482675, 0.05, -39.755180971743314, 3.502222687164062, 0.05, -39.93030571541388, 3.5024948734113357, 0.05, -40.105444118742305, 3.502768066568476, 0.05, -40.28059623767777, 3.503042378709319, 0.05, -40.45576213420273, 3.503317930499211, 0.05, -40.63094187497205, 3.5035948153864873, 0.05, -40.80613553365065, 3.503873173571932, 0.05, -40.981343188489674, 3.5041530967805934, 0.05, -41.15656492437385, 3.5044347176836426, 0.05, -41.3318008320365, 3.504718153252923, 0.05, -41.5070510080569, 3.505003520407935, 0.05, -41.682315554848735, 3.5052909358367192, 0.05, -41.85759458100128, 3.5055805230508983, 0.05, -42.03288820205996, 3.505872421173596, 0.05, -42.208196539062655, 3.5061667400539913, 0.05, -42.383519719543706, 3.506463609621049, 0.05, -42.55885787772078, 3.5067631635415135, 0.05, -42.734211155145246, 3.50706554848932, 0.05, -42.909579698365526, 3.5073708644055865, 0.05, -43.08496366218358, 3.5076792763610873, 0.05, -43.2603632079712, 3.507990915752378, 0.05, -43.435778503353816, 3.508305907652201, 0.05, -43.61120972537281, 3.5086244403798887, 0.05, -43.78665705555593, 3.508946603662396, 0.05, -43.96212068425569, 3.5092725739951667, 0.05, -44.13760081055867, 3.5096025260597856, 0.05, -44.31309763879861, 3.5099365647986724, 0.05, -44.48861138270951, 3.5102748782178907, 0.05, -44.66414226411938, 3.5106176281973402, 0.05, -44.839690512364335, 3.5109649648991956, 0.05, -45.01525636625697, 3.5113170778526395, 0.05, -45.19084007118503, 3.5116740985611585, 0.05, -45.366441883473165, 3.5120362457627308, 0.05, -45.542062066239716, 3.512403655330952, 0.05, -45.71770089372932, 3.5127765497922048, 0.05, -45.893358647058285, 3.513155066579284, 0.05, -46.06903561847308, 3.5135394282959274, 0.05, -46.24473210871996, 3.513929804937551, 0.05, -46.42044842984977, 3.51432642259623, 0.05, -46.59618490096256, 3.514729422255786, 0.05, -46.77194185485229, 3.5151390777944895, 0.05, -46.94771963141289, 3.515555531211975, 0.05, -47.12351858288397, 3.515979029421562, 0.05, -47.299339072333126, 3.5164097889832235, 0.05, -47.47518147169741, 3.516847987285712, 0.05, -47.65104616501502, 3.5172938663520967, 0.05, -47.826933549057685, 3.5177476808533505, 0.05, -48.00284403057182, 3.5182096302827683, 0.05, -48.17877802632433, 3.5186799150501433, 0.05, -48.35473596606658, 3.5191587948449263, 0.05, -48.53071829334462, 3.5196465455607786, 0.05, -48.70672546038347, 3.5201433407769547, 0.05, -48.882757932235194, 3.5206494370345442, 0.05, -49.058816188377655, 3.5211651228492857, 0.05, -49.234900716900164, 3.5216905704501227, 0.05, -49.41101202046181, 3.522226071232996, 0.05, -49.58715061401609, 3.522771871085593, 0.05, -49.763317022838386, 3.523328176445918, 0.05, -49.93951178744208, 3.5238952920738447, 0.05, -50.115735456903074, 3.5244733892199522, 0.05, -50.29198859638495, 3.525062789637493, 0.05, -50.468271779950896, 3.5256636713190637, 0.05, -50.64458559451347, 3.5262762912514733, 0.05, -50.82093063832434, 3.5269008762174057, 0.05, -50.99730752024683, 3.527537638449668, 0.05, -51.17371686258474, 3.528186846758306, 0.05, -51.35015929402425, 3.5288486287902954, 0.05, -51.52663545539527, 3.5295232274203956, 0.05, -51.7031459974607, 3.530210841308524, 0.05, -51.87969157741899, 3.530911599165764, 0.05, -52.0562728630969, 3.531625713558294, 0.05, -52.232890527187635, 3.5323532818146344, 0.05, -52.409545247011344, 3.533094396474238, 0.05, -52.58623770864691, 3.5338492327113658, 0.05, -52.76296859836997, 3.534617794461162, 0.05, -52.939738606939436, 3.53540017138921, 0.05, -53.11654842137749, 3.5361962887610834, 0.05, -53.29339873383237, 3.537006249097565, 0.05, -53.47029022771294, 3.537829877611319, 0.05, -53.64722358474207, 3.5386671405827608, 0.05, -53.82419947764082, 3.539517857974875, 0.05, -54.00121856954943, 3.5403818381722063, 0.05, -54.1782815108965, 3.5412588269413803, 0.05, -54.355388936836114, 3.542148518792405, 0.05, -54.53254146389009, 3.5430505410795115, 0.05, -54.709739687027756, 3.5439644627533293, 0.05, -54.88698417513871, 3.544889762219079, 0.05, -55.06427546693246, 3.5458258358750574, 0.05, -55.24161407051731, 3.546772071697043, 0.05, -55.41900045159066, 3.5477276214671054, 0.05, -55.59643503819174, 3.548691732021602, 0.05, -55.773918209693186, 3.549663430028801, 0.05, -55.95145029181639, 3.550641642464202, 0.05, -56.129031555367646, 3.5516252710250886, 0.05, -56.30666220732181, 3.5526130390832042, 0.05, -56.48434238750847, 3.5536036037332295, 0.05, -56.66207216201635, 3.5545954901576127, 0.05, -56.839851518609834, 3.555587131869683, 0.05, -57.01768035855512, 3.5565767989057364, 0.05, -57.19555849345939, 3.557562698085439, 0.05, -57.37348563880232, 3.558542906858675, 0.05, -57.55146140877, 3.55951539935359, 0.05, -57.729485311185606, 3.5604780483120972, 0.05, -57.90755674019466, 3.5614285801810777, 0.05, -58.08567497511649, 3.562364698436699, 0.05, -58.26383917442232, 3.5632839861166774, 0.05, -58.44204837229738, 3.5641839575011307, 0.05, -58.62030147434219, 3.5650620408962683, 0.05, -58.79859725822958, 3.5659156777477596, 0.05, -58.97693436850403, 3.566742205489074, 0.05, -59.15531131836989, 3.5675389973171816, 0.05, -59.333726488069985, 3.5683033940019424, 0.05, -59.51217812750878, 3.5690327887759388, 0.05, -59.690664357085964, 3.569724591543677, 0.05, -59.869183171665334, 3.5703762915873454, 0.05, -60.04773244454686, 3.5709854576305236, 0.05, -60.226309933044945, 3.5715497699617003, 0.05, -60.40491328495393, 3.5720670381795836, 0.05, -60.58354004592099, 3.572535219341311, 0.05, -60.762187668953146, 3.5729524606430467, 0.05, -60.94085352252317, 3.573317071400438, 0.05, -61.119534903540554, 3.5736276203476107, 0.05, -61.29822904682758, 3.5738828657404955, 0.05, -61.47693313629936, 3.574081789435534, 0.05, -61.65564432043656, 3.574223682743988, 0.05, -61.8343597243465, 3.574308078198765, 0.05, -62.013076461535235, 3.5743347437746835, 0.05, -62.19179164968372, 3.5743037629697048, 0.05, -62.37050241961046, 3.5742153985346947, 0.05, -62.54920593700316, 3.5740703478540268, 0.05, -62.72789940643989, 3.573869388734642, 0.05, -62.90658008600131, 3.573613591228456, 0.05, -63.08524530433603, 3.5733043666943187, 0.05, -63.26389246618283, 3.572943236936037, 0.05, -63.442519061302825, 3.57253190239983, 0.05, -63.62112268071358, 3.5720723882152154, 0.05, -63.79970101462314, 3.571566678191126, 0.05, -63.978251871582586, 3.571017139188948, 0.05, -64.15677317077487, 3.57042598384554, 0.05, -64.33526296304521, 3.5697958454069383, 0.05, -64.51371941839446, 3.5691291069850437, 0.05, -64.69214084070141, 3.5684284461389835, 0.05, -64.87052565976326, 3.567696381236891, 0.05, -65.04887244177323, 3.5669356401993566, 0.05, -65.22717988176669, 3.566148799869192, 0.05, -65.40544680274658, 3.565338419597748, 0.05, -65.58367216096659, 3.5645071643999975, 0.05, -65.76185503300404, 3.5636574407490955, 0.05, -65.9399946193909, 3.562791727737223, 0.05, -66.11809023738708, 3.5619123599235647, 0.05, -66.29614132019452, 3.5610216561487427, 0.05, -66.47414740533522, 3.5601217028139986, 0.05, -66.65210814061989, 3.5592147056933174, 0.05, -66.83002326548474, 3.5583024972969395, 0.05, -67.00789261864585, 3.5573870632222673, 0.05, -67.18571612003423, 3.556470027767351, 0.05, -67.36349378048307, 3.5555532089768715, 0.05, -67.54122567388988, 3.5546378681362425, 0.05, -67.71891195779196, 3.553725678041469, 0.05, -67.89655284600623, 3.5528177642854732, 0.05, -68.07414861973983, 3.551915474672012, 0.05, -68.25169961238556, 3.5510198529146195, 0.05, -68.42920619927268, 3.550131737742305, 0.05, -68.6066688145771, 3.5492523060883516, 0.05, -68.78408792682187, 3.548382244895331, 0.05, -68.96146403158963, 3.547522095355251, 0.05, -69.13879767425175, 3.546672853242391, 0.05, -69.3160894109699, 3.5458347343627854, 0.05, -69.49333983680647, 3.5450085167316123, 0.05, -69.67054956126034, 3.5441944890773724, 0.05, -69.84771920605685, 3.543392895930111, 0.05, -70.02484942129641, 3.542604304791097, 0.05, -70.20194085310922, 3.5418286362562323, 0.05, -70.37899417282657, 3.5410663943469602, 0.05, -70.55601004730411, 3.5403174895508847, 0.05, -70.73298915574861, 3.5395821688899534, 0.05, -70.90993217752003, 3.5388604354284907, 0.05, -71.08683978964636, 3.5381522425266243, 0.05, -71.26371267961686, 3.537457799409871, 0.05, -71.44055152039249, 3.5367768155127486, 0.05, -71.61735699243486, 3.5361094408474867, 0.05, -71.79412976434723, 3.535455438247287, 0.05, -71.9708705044665, 3.534814802385345, 0.05, -72.1475798712292, 3.5341873352538813, 0.05, -72.32425852053431, 3.5335729861022127, 0.05, -72.50090709164864, 3.5329714222865602, 0.05, -72.67752622719382, 3.5323827109035415, 0.05, -72.85411655711388, 3.5318065984010625, 0.05, -73.03067868596695, 3.53124257706123, 0.05, -73.20721323564595, 3.5306909935800794, 0.05, -73.38372080134411, 3.5301513139630667, 0.05, -73.56020197055884, 3.5296233842945406, 0.05, -73.73665731518776, 3.5291068925784077, 0.05, -73.91308740601444, 3.5286018165336195, 0.05, -74.08949279856151, 3.5281078509413364, 0.05, -74.26587403702263, 3.5276247692222706, 0.05, -74.44223165354117, 3.5271523303709604, 0.05, -74.61856616418375, 3.5266902128514115, 0.05, -74.79487808959529, 3.5262385082308056, 0.05, -74.97116792554432, 3.525796718980573, 0.05, -75.14743615419779, 3.5253645730693903, 0.05, -75.32368326042601, 3.5249421245643147, 0.05, -75.49990971001436, 3.5245289917672253, 0.05, -75.67611595886493, 3.5241249770113274, 0.05, -75.85230245273898, 3.5237298774811125, 0.05, -76.02846962708963, 3.5233434870131277, 0.05, -76.20461790239568, 3.5229655061209924, 0.05, -76.38074769559236, 3.522595863933724, 0.05, -76.55685941378808, 3.5222343639143805, 0.05, -76.7329534519477, 3.52188076319243, 0.05, -76.90903019523063, 3.521534865658588, 0.05, -77.08509001934529, 3.521196482293233, 0.05, -77.61345169875413, 10.567233588177045, 0.05, -77.78885137603099, 3.507993545537108, 0.05, -77.96425438576956, 3.5080601947713643, 0.05, -78.13966077515146, 3.5081277876376773, 0.05, -78.31507058495257, 3.508196196022143, 0.05, -78.49048386334763, 3.5082655679013564, 0.05, -78.66590064648327, 3.5083356627126205, 0.05, -78.84132098714622, 3.5084068132591044, 0.05, -79.01674492506731, 3.5084787584218837, 0.05, -79.19217251066306, 3.5085517119147736, 0.05, -79.36760378833826, 3.5086255535041375, 0.05, -79.54303880572847, 3.5087003478043988, 0.05, -79.71847761732687, 3.5087762319680214, 0.05, -79.89392026492781, 3.5088529520188136, 0.05, -80.06936680143436, 3.508930730130734, 0.05, -80.24481728431245, 3.5090096575616974, 0.05, -80.42027175594791, 3.5090894327092506, 0.05, -80.59573027018733, 3.5091702847883837, 0.05, -80.77119288864624, 3.5092523691782356, 0.05, -80.94665965840535, 3.5093353951823434, 0.05, -81.12213063915665, 3.509419615025927, 0.05, -81.29760588684944, 3.5095049538558207, 0.05, -81.47308545818694, 3.5095914267499753, 0.05, -81.64856940965866, 3.509679029434432, 0.05, -81.82405780879529, 3.5097679827324884, 0.05, -81.99955070564516, 3.509857936997405, 0.05, -82.17504816863813, 3.5099492598592708, 0.05, -82.35055025722028, 3.5100417716430865, 0.05, -82.52605703191422, 3.51013549387887, 0.05, -82.70156856649922, 3.510230691699984, 0.05, -82.87708492373562, 3.5103271447281625, 0.05, -83.0526061659978, 3.5104248452434708, 0.05, -83.2281323643302, 3.5105239666477277, 0.05, -83.40366358914599, 3.5106244963159776, 0.05, -83.57919990763854, 3.5107263698508153, 0.05, -83.75474139478392, 3.510829742907604, 0.05, -83.9302881281852, 3.510934668025578, 0.05, -84.10584017245746, 3.511040885445272, 0.05, -84.28139760907969, 3.5111487324444917, 0.05, -84.4569605133458, 3.511258085322423, 0.05, -84.6325289633021, 3.5113689991257284, 0.05, -84.80810304042124, 3.511481542383126, 0.05, -84.98368282420084, 3.5115956755918756, 0.05, -85.15926839656443, 3.5117114472717916, 0.05, -85.33485984446277, 3.5118289579667055, 0.05, -85.51045725025982, 3.511948115941005, 0.05, -85.68606070354545, 3.512069065712643, 0.05, -85.86167028941841, 3.512191717459209, 0.05, -86.03728610156159, 3.512316242863429, 0.05, -86.21290823071088, 3.512442582985831, 0.05, -86.38853677081275, 3.5125708020374673, 0.05, -86.56417181394421, 3.5127008626294223, 0.05, -86.73981345889054, 3.5128328989264994, 0.05, -86.91546180165123, 3.512966855213858, 0.05, -87.09111694869549, 3.513102940885198, 0.05, -87.26677899289818, 3.513240884053939, 0.05, -87.44244804463196, 3.513381034675577, 0.05, -87.61812420945904, 3.5135232965417575, 0.05, -87.7938075877651, 3.513667566121249, 0.05, -87.96949829787343, 3.513814202166415, 0.05, -88.14519644685157, 3.513962979562919, 0.05, -88.32090214646885, 3.514113992345778, 0.05, -88.4966155126053, 3.514267322729117, 0.05, -88.67233666187671, 3.514422985428212, 0.05, -88.84806571430495, 3.514581048564774, 0.05, -89.02380279572151, 3.5147416283312185, 0.05, -89.19954802363219, 3.514904558213508, 0.05, -89.37530152567011, 3.5150700407583546, 0.05, -89.5510634280297, 3.5152380471919917, 0.05, -89.72683386142221, 3.5154086678500143, 0.05, -89.90261295924914, 3.5155819565385373, 0.05, -90.07840085559943, 3.515757927005817, 0.05, -90.25419769019686, 3.5159366919487676, 0.05, -90.43000359509735, 3.516118098009811, 0.05, -90.60581871878786, 3.516302473810197, 0.05, -90.78164319944517, 3.5164896131463124, 0.05, -90.95747719060101, 3.5166798231169576, 0.05, -91.13332083104501, 3.5168728088801253, 0.05, -91.30917428123968, 3.5170690038933476, 0.05, -91.48503769158418, 3.51726820689003, 0.05, -91.66091121996442, 3.517470567604693, 0.05, -91.83679501888345, 3.5176759783806193, 0.05, -92.01268925563114, 3.51788473495399, 0.05, -92.18859409312223, 3.518096749821802, 0.05, -92.36450970090057, 3.5183121555666634, 0.05, -92.54043624219157, 3.5185308258201573, 0.05, -92.71637389177553, 3.518752991679225, 0.05, -92.89232282223334, 3.5189786091560147, 0.05, -93.06828321324176, 3.5192078201683406, 0.05, -93.24425524434038, 3.5194406219725773, 0.05, -93.420239095367, 3.519677020532214, 0.05, -93.59623495288142, 3.519917150288409, 0.05, -93.77224300429042, 3.520161028179888, 0.05, -93.94826344206389, 3.5204087554693864, 0.05, -94.12429645563752, 3.5206602714725936, 0.05, -94.30034224143124, 3.5209157158743003, 0.05, -94.47640099712108, 3.5211751137967386, 0.05, -94.65247292189689, 3.5214384955161937, 0.05, -94.82855822579761, 3.521706078014316, 0.05, -95.00465710546597, 3.5219775933671515, 0.05, -95.18076977371089, 3.522253364898491, 0.05, -95.35689643640988, 3.522533253979852, 0.05, -95.53303731318006, 3.5228175354035267, 0.05, -95.70919261179584, 3.5231059723156704, 0.05, -95.88536255017226, 3.523398767528464, 0.05, -96.06154734795116, 3.5236959555780625, 0.05, -96.23774722904604, 3.5239976218974634, 0.05, -96.41396241236637, 3.524303666406867, 0.05, -96.5901931223206, 3.524614199084484, 0.05, -96.76643958475981, 3.5249292487841437, 0.05, -96.94270202686917, 3.5252488421872568, 0.05, -97.11898067702955, 3.525573003207575, 0.05, -97.29527576464977, 3.5259017524043044, 0.05, -97.47158751996955, 3.5262351063954847, 0.05, -97.64791617383368, 3.5265730772826567, 0.05, -97.82426195743803, 3.52691567208704, 0.05, -98.00062510253956, 3.5272629020306647, 0.05, -98.17700584447672, 3.527614838743406, 0.05, -98.35340441008071, 3.527971312079673, 0.05, -98.52982102899645, 3.5283323783147478, 0.05, -98.70625593612772, 3.5286981426251973, 0.05, -98.88270935587599, 3.5290683949655333, 0.05, -99.05918151784606, 3.529443239401404, 0.05, -99.23567264312325, 3.529822505543978, 0.05, -99.41218296127202, 3.5302063629753335, 0.05, -99.5887126874193, 3.5305945229455746, 0.05, -99.76526203870671, 3.5309870257481193, 0.05, -99.94183122834883, 3.531383792842584, 0.05, -100.11842046450863, 3.53178472319592, 0.05, -100.29502995568055, 3.532189823438189, 0.05, -100.47165989580836, 3.532598802556158, 0.05, -100.6483104807976, 3.533011699784983, 0.05, -100.82498189478483, 3.5334282797445087, 0.05, -101.00167431960847, 3.5338484964728014, 0.05, -101.178387928079, 3.534272169410651, 0.05, -101.35512288324308, 3.534699103281637, 0.05, -101.53187933764399, 3.5351290880180506, 0.05, -101.70865743753875, 3.535561997895194, 0.05, -101.88545731547809, 3.5359975587868444, 0.05, -102.06227909830105, 3.5364356564591763, 0.05, -102.239122892904, 3.5368758920592978, 0.05, -102.41598879899276, 3.5373181217750793, 0.05, -102.59287690052697, 3.537762030684309, 0.05, -102.7697872635087, 3.5382072596346137, 0.05, -102.94671994522243, 3.5386536342745343, 0.05, -103.12367498186723, 3.539100732895838, 0.05, -103.30065239180236, 3.5395481987026356, 0.05, -103.47765217878957, 3.539995739744204, 0.05, -103.6546743236917, 3.540442898042471, 0.05, -103.83171878786332, 3.5408892834325227, 0.05, -104.00878551227962, 3.541334488325769, 0.05, -104.1858744175615, 3.5417781056375373, 0.05, -104.3629854001046, 3.5422196508621777, 0.05, -104.54011833140558, 3.542658626019529, 0.05, -104.71727305742074, 3.5430945203032653, 0.05, -104.89444940325542, 3.543526916693503, 0.05, -105.07164716180503, 3.543955170992182, 0.05, -105.24886610511422, 3.5443788661838425, 0.05, -105.42610597305833, 3.5447973588820605, 0.05, -105.60336647773086, 3.5452100934506623, 0.05, -105.78064730307055, 3.545616506793873, 0.05, -105.95794810491323, 3.546016036853413, 0.05, -106.13526850504326, 3.5464080026006966, 0.05, -106.31260809634331, 3.546791826001208, 0.05, -106.48996644535842, 3.5471669803021624, 0.05, -106.66734308009417, 3.5475326947150267, 0.05, -106.84473750397643, 3.547888477645132, 0.05, -107.02214918500665, 3.548233620604569, 0.05, -107.19957756319621, 3.548567563791219, 0.05, -107.37702204577946, 3.548889651664905, 0.05, -107.55448201001612, 3.5491992847331604, 0.05, -107.73195680508435, 3.5494959013647724, 0.05, -107.90944574713566, 3.5497788410261415, 0.05, -108.08694812628582, 3.5500475830032294, 0.05, -108.26446320453174, 3.550301564918236, 0.05, -108.4419902165402, 3.5505402401694006, 0.05, -108.61952837056178, 3.55076308043145, 0.05, -108.79707685078094, 3.5509696043830528, 0.05, -108.97463481854396, 3.551159355260338, 0.05, -109.15220141323225, 3.551331893765633, 0.05, -109.3297757536967, 3.551486809289046, 0.05, -109.50735693989373, 3.5516237239405535, 0.05, -109.684944055541, 3.551742312945495, 0.05, -109.86253616872641, 3.55184226370825, 0.05, -110.04013233646948, 3.5519233548616045, 0.05, -110.21773160217182, 3.551985314046818, 0.05, -110.39533300172127, 3.5520279909889316, 0.05, -110.57293556503613, 3.552051266297296, 0.05, -110.75053831693124, 3.552055037902298, 0.05, -110.92814027851617, 3.552039231698624, 0.05, -111.10574047205016, 3.5520038706798904, 0.05, -111.2833379226359, 3.5519490117146244, 0.05, -111.46093165829437, 3.5518747131694894, 0.05, -111.6385207139281, 3.5517811126746217, 0.05, -111.81610413328033, 3.551668387044764, 0.05, -111.99368097047679, 3.5515367439291454, 0.05, -112.17125029334129, 3.5513864572900715, 0.05, -112.34881118300163, 3.551217793206819, 0.05, -112.52636273836993, 3.551031107365814, 0.05, -112.70390407642836, 3.5508267611685866, 0.05, -112.8814343341703, 3.550605154838679, 0.05, -113.05895267033902, 3.5503667233746894, 0.05, -113.23645826715999, 3.5501119364193627, 0.05, -113.41395033104597, 3.549841277719477, 0.05, -113.59142809449956, 3.549555269071923, 0.05, -113.76889081681468, 3.5492544463022115, 0.05, -113.94633778518443, 3.5489393673950254, 0.05, -114.12376831575543, 3.5486106114199676, 0.05, -114.3011817538255, 3.548268761401379, 0.05, -114.47857747525873, 3.5479144286646895, 0.05, -114.65595488622235, 3.5475482192724352, 0.05, -114.83331342370941, 3.5471707497413187, 0.05, -115.01065255611111, 3.546782648033958, 0.05, -115.1879717829348, 3.546384536473577, 0.05, -115.36527063549886, 3.5459770512814206, 0.05, -115.54254867532318, 3.545560796486197, 0.05, -115.71980549594609, 3.5451364124583873, 0.05, -115.89704072125521, 3.544704506182304, 0.05, -116.07425400463998, 3.544265667695423, 0.05, -116.25144503086544, 3.5438205245092966, 0.05, -116.42861351300111, 3.5433696427134436, 0.05, -116.60575919307024, 3.542913601382728, 0.05, -116.78288184112056, 3.5424529610061715, 0.05, -116.95998125432409, 3.5419882640707794, 0.05, -117.1370572572332, 3.541520058182115, 0.05, -117.31410969899194, 3.5410488351749696, 0.05, -117.49113845481385, 3.5405751164383017, 0.05, -117.66814342285576, 3.5400993608384006, 0.05, -117.84512452508336, 3.539622044551881, 0.05, -118.02208170594643, 3.5391436172612627, 0.05, -118.19901493013852, 3.538664483841776, 0.05, -118.37592418414837, 3.5381850801970995, 0.05, -118.55280947277352, 3.5377057725029193, 0.05, -118.72967081973498, 3.5372269392293068, 0.05, -118.90650826660314, 3.536748937363312, 0.05, -119.08332187065263, 3.536272080989767, 0.05, -119.26011170664071, 3.53579671976177, 0.05, -119.4368778615103, 3.5353230973917897, 0.05, -119.61362043847055, 3.5348515392051163, 0.05, -119.79033955341188, 3.53438229882672, 0.05, -119.96703533381296, 3.5339156080216148, 0.05, -120.1437079189048, 3.533451701836701, 0.05, -120.32035745811515, 3.5329907842070485, 0.05, -120.49698411184507, 3.532533074598246, 0.05, -120.67358804862238, 3.532078735546189, 0.05, -120.8501694455785, 3.531627939122444, 0.05, -121.02672848767989, 3.53118084202789, 0.05, -121.20326536743349, 3.5307375950718645, 0.05, -121.37978028215859, 3.530298294502144, 0.05, -121.55627343601566, 3.5298630771414343, 0.05, -121.73274503931923, 3.5294320660713856, 0.05, -121.90919530556572, 3.5290053249299156, 0.05, -122.08562445268419, 3.5285829423695136, 0.05, -122.26203270254416, 3.52816499719936, 0.05, -122.43842028039083, 3.5277515569332456, 0.05, -122.61478741282289, 3.5273426486411963, 0.05, -122.79113432959005, 3.5269383353430888, 0.05, -122.96746126316908, 3.526538671580597, 0.05, -123.14376844623548, 3.526143661328015, 0.05, -123.32005611264162, 3.525753328122736, 0.05, -123.49632449762431, 3.5253676996539642, 0.05, -123.67257383669195, 3.524986781352636, 0.05, -123.848804364724, 3.524610560640903, 0.05, -124.02501631740208, 3.5242390535613732, 0.05, -124.20120992978421, 3.5238722476425837, 0.05, -124.3773854370011, 3.5235101443377213, 0.05, -124.55354307057509, 3.523152671479833, 0.05, -124.7296830648007, 3.5227998845120156, 0.05, -124.90580564980074, 3.522451700000834, 0.05, -125.0819110563755, 3.522108131495175, 0.05, -125.25799951098355, 3.5217690921610614, 0.05, -125.43407124198252, 3.5214346199794093, 0.05, -125.61012647272005, 3.5211046147505214, 0.05, -125.78616542628144, 3.520779071227804, 0.05, -125.96218832368086, 3.520457947988375, 0.05, -126.13819538169307, 3.52014116024418, 0.05, -126.31418681609341, 3.5198286880070238, 0.05, -126.49016284192089, 3.519520516549517, 0.05, -126.66612367015173, 3.5192165646169453, 0.05, -126.84206950781994, 3.5189167533642842, 0.05, -127.0180005607595, 3.5186210587911098, 0.05, -127.19391703366558, 3.518329458121591, 0.05, -127.36981912697041, 3.518041866096651, 0.05, -127.54570703704917, 3.517758201575133, 0.05, -127.72158095926916, 3.517478444399879, 0.05, -127.89744108683186, 3.517202551253898, 0.05, -128.07328760840375, 3.5169304314375442, 0.05, -128.24912071067206, 3.5166620453665134, 0.05, -128.42494057778737, 3.5163973423059502, 0.05, -128.60074738960904, 3.516136236433732, 0.05, -128.77654132530455, 3.5158787139099155, 0.05, -128.95232255897173, 3.515624673343354, 0.05, -129.12809126370965, 3.515374094758351, 0.05, -129.30384760915146, 3.5151269088364026, 0.05, -129.47959176108668, 3.5148830387042445, 0.05, -129.65532388306295, 3.5146424395254807, 0.05, -129.8310441373789, 3.5144050863191816, 0.05, -130.00675268122396, 3.514170876900769, 0.05, -130.1824496708341, 3.5139397922026414, 0.05, -130.3581352578663, 3.5137117406439913, 0.05, -130.53380959254702, 3.5134866936138653, 0.05, -130.70947282241488, 3.5132645973571246, 0.05, -130.88512509194103, 3.5130453905232915, 0.05, -131.0607665426592, 3.5128290143633993, 0.05, -131.23639731395784, 3.51261542597279, 0.05, -131.41201754244184, 3.5124045696801565, 0.05, -131.5876273619245, 3.512196389652802, 0.05, -131.76322690414491, 3.511990844408424, 0.05, -131.9388162983849, 3.511787884799603, 0.05, -132.1143956700247, 3.5115874327959986, 0.05, -132.2899651437533, 3.51138947457213, 0.05, -132.46552484055744, 3.5111939360827087, 0.05, -132.6410748803645, 3.5110007961413245, 0.05, -132.81661537974364, 3.510809987582526, 0.05, -132.9921464528551, 3.510621462229432, 0.05, -133.16766821209214, 3.5104351847408424, 0.05, -133.34318076672164, 3.5102510925901553, 0.05, -133.51868422527542, 3.5100691710753456, 0.05, -133.694178692122, 3.5098893369317246, 0.05, -133.8696642713699, 3.5097115849583838, 0.05, -134.04514106329563, 3.5095358385143203, 0.05, -134.2206091677519, 3.5093620891252724, 0.05, -134.39606868054292, 3.509190255820667, 0.05, -134.57151969662561, 3.509020321653541, 0.05, -134.7469623098699, 3.5088522648857814, 0.05, -134.92239660963557, 3.5086859953132055, 0.05, -135.09782268525683, 3.5085215124249927, 0.05, -135.27324062328185, 3.508358760500657, 0.05, -135.4486505093278, 3.508197720919034, 0.05, -135.62405242589776, 3.508038331399619, 0.05, -135.79944645409006, 3.5078805638459474, 0.05, -135.97483267396157, 3.50772439743024, 0.05, -136.15021116172906, 3.5075697553498757, 0.05, -136.3255819942461, 3.507416650340905, 0.05, -136.5009452454456, 3.5072650239895666, 0.05, -136.67630098686055, 3.5071148282989544, 0.05, -136.8516492901781, 3.506966066350834, 0.05, -137.0269902233301, 3.5068186630401725, 0.05, -137.20232385389417, 3.506672611281441, 0.05, -137.37765024732042, 3.5065278685250423, 0.05, -137.55296946856626, 3.5063844249168685, 0.05, -137.72828157867897, 3.5062422022541537, 0.05, -137.90358663949556, 3.5061012163317686, 0.05, -138.07888471032663, 3.5059614166215316, 0.05, -138.25417584830979, 3.5058227596629044, 0.05, -138.42945727301, 3.5056284940040765, 0.05, -138.6047199414165, 3.505253368129875, 0.05, -138.77995138978974, 3.50462896746486, 0.05, -138.9551391542499, 3.503755289203424, 0.05, -139.13027077090808, 3.502632333163267, 0.05, -139.30533377750223, 3.5012601318831473, 0.05, -139.4803157106849, 3.4996386636531644, 0.05, -139.65520410846938, 3.497767955689485, 0.05, -139.8299865092541, 3.495648015694422, 0.05, -140.0046504515471, 3.4932788458598365, 0.05, -140.17918347430341, 3.4906604551263154, 0.05, -140.3535731170086, 3.4877928541036156, 0.05, -140.52780691852885, 3.4846760304051725, 0.05, -140.70187241958428, 3.4813100211083974, 0.05, -140.8757571600993, 3.4776948103006813, 0.05, -141.04944868102538, 3.47383041852139, 0.05, -141.2229345228037, 3.469716835566559, 0.05, -141.39620222708277, 3.4653540855811293, 0.05, -141.56923933537206, 3.4607421657861024, 0.05, -141.74203338979873, 3.4558810885334887, 0.05, -141.91457193196686, 3.45077084336235, 0.05, -142.0868425050695, 3.4454114620531526, 0.05, -142.25883265143614, 3.439802927332215, 0.05, -142.4305299146403, 3.433945264083149, 0.05, -142.60192183813047, 3.42783846980334, 0.05, -142.77299596548977, 3.4214825471860038, 0.05, -142.94373984084845, 3.414877507173682, 0.05, -143.1141410089238, 3.408023361507131, 0.05, -143.2841870145547, 3.4009201126180466, 0.05, -143.4538654025602, 3.3935677601103245, 0.05, -143.62316371848544, 3.385966318504693, 0.05, -143.79206950842914, 3.378115798873958, 0.05, -143.96057031852985, 3.3700162020143654, 0.05, -144.12865369516982, 3.361667532799309, 0.05, -144.2963071855463, 3.353069807530069, 0.05, -144.46351833668743, 3.3442230228222507, 0.05, -144.6302746965937, 3.3351271981251838, 0.05, -144.79656381327777, 3.3257823336815204, 0.05, -144.9623732353113, 3.316188440670885, 0.05, -145.12769051155402, 3.306345524854618, 0.05, -145.29250319154679, 3.2962535998552553, 0.05, -145.45679882500514, 3.2859126691668696, 0.05, -145.6205649622903, 3.275322745703415, 0.05, -145.7837891540934, 3.264483836062164, 0.05, -145.9464589517112, 3.2533959523561164, 0.05, -146.10856190685206, 3.242059102816899, 0.05, -146.27008557172573, 3.2304732974735506, 0.05, -146.4310174990823, 3.2186385471311527, 0.05, -146.5913452421773, 3.206554861900325, 0.05, -146.75105635483263, 3.194222253106509, 0.05, -146.91013839140706, 3.1816407314888933, 0.05, -147.06857890683094, 3.1688103084776613, 0.05, -147.22636545660396, 3.155730995460455, 0.05, -147.38348559683723, 3.1424028046656916, 0.05, -147.53992688421698, 3.1288257475951946, 0.05, -147.69567687610893, 3.1149998378387944, 0.05, -147.85072313042366, 3.10092508629454, 0.05, -148.00505320586353, 3.0866015087976577, 0.05, -148.15865466161617, 3.0720291150526804, 0.05, -148.31151505764052, 3.057207920487229, 0.05, -148.46362195455904, 3.0421379383703666, 0.05, -148.6149629136992, 3.0268191828031545, 0.05, -148.76552549726333, 3.0112516712824755, 0.05, -148.91529726780382, 2.995435410809799, 0.05, -149.06426578893127, 2.9793704225489783, 0.05, -149.21241862496026, 2.9630567205797633, 0.05, -149.35974334080242, 2.946494316843098, 0.05, -149.50622750240547, 2.9296832320608193, 0.05, -149.65185867624191, 2.9126234767288173, 0.05, -149.79662442979338, 2.895315071029118, 0.05, -149.94051233119515, 2.8777580280353914, 0.05, -150.08350994957496, 2.8599523675962804, 0.05, -150.2256048545282, 2.8418980990650042, 0.05, -150.36678461724202, 2.823595254276512, 0.05, -150.5070368088505, 2.805043832169438, 0.05, -150.64634900183734, 2.7862438597369477, 0.05, -150.78470876953148, 2.7671953538829084, 0.05, -150.92210368608258, 2.747898331021902, 0.05, -151.05852132642661, 2.7283528068806526, 0.05, -151.1939492665526, 2.7085588025198275, 0.05, -151.32837508332454, 2.6885163354385755, 0.05, -151.46178635442158, 2.668225421940359, 0.05, -151.59417065833523, 2.6476860782731997, 0.05, -151.72551557455702, 2.6268983244358477, 0.05, -151.85580868368024, 2.605862182464179, 0.05, -151.9850375667508, 2.5845776614116094, 0.05, -152.11318980633658, 2.563044791715688, 0.05, -152.2402529854514, 2.5412635822966836, 0.05, -152.36621468806354, 2.5192340522427403, 0.05, -152.49106249911793, 2.4969562210879968, 0.05, -152.61478400433867, 2.4744301044150956, 0.05, -152.73736679071146, 2.451655727455868, 0.05, -152.85879844562555, 2.4286330982816176, 0.05, -152.97906655785695, 2.405362244627748, 0.05, -153.09815871635166, 2.3818431698943696, 0.05, -153.21606251182905, 2.358075909548052, 0.05, -153.33276553514898, 2.3340604663986673, 0.05, -153.44825537824093, 2.309796861839161, 0.05, -153.56251963361714, 2.2852851075242677, 0.05, -153.67554589535706, 2.260525234798615, 0.05, -153.78732458694603, 2.2355738317794356, 0.05, -153.89785237311864, 2.210555723452353, 0.05, -154.00712933151425, 2.1855391679121676, 0.05, -154.1151555382608, 2.1605241349310007, 0.05, -154.22193106979864, 2.135510630756642, 0.05, -154.3274560019568, 2.1104986431631865, 0.05, -154.43173040978718, 2.0854881566080334, 0.05, -154.53475436881564, 2.0604791805695237, 0.05, -154.63652795284472, 2.0354716805816193, 0.05, -154.7370512366125, 2.0104656753556984, 0.05, -154.83632429358184, 1.9854611393868593, 0.05, -154.93434719654462, 1.9604580592557503, 0.05, -155.0311200189187, 1.9354564474815943, 0.05, -155.12664283237552, 1.9104562691362321, 0.05, -155.22091570895546, 1.885457531598893, 0.05, -155.31393872022764, 1.8604602254433744, 0.05, -155.4057119366253, 1.8354643279531435, 0.05, -155.49623542901224, 1.8104698477387877, 0.05, -155.58550926764374, 1.7854767726301957, 0.05, -155.67353352105104, 1.7604850681459532, 0.05, -155.76030825819305, 1.7354947428403815, 0.05, -155.8458335480764, 1.7105057976669373, 0.05, -155.93010945864478, 1.6855182113674423, 0.05, -156.01313605640868, 1.6605319552778879, 0.05, -156.09491340832128, 1.6355470382519515, 0.05, -156.17544158102186, 1.6105634540114435, 0.05, -156.2547206393597, 1.5855811667567068, 0.05, -156.33275064928443, 1.560600198494523, 0.05, -156.40953167443, 1.535620502911356, 0.05, -156.48506377896115, 1.510642090622622, 0.05, -156.55934702562908, 1.4856649333587475, 0.05, -156.63238147771585, 1.4606890417354064, 0.05, -156.70416719608934, 1.4357143674697592, 0.05, -156.77470424258388, 1.4107409298905487, 0.05, -156.84399267732607, 1.3857686948439267, 0.05, -156.91203255998937, 1.3607976532660389, 0.05, -156.97882395015526, 1.3358278033175177, 0.05, -157.0443669056476, 1.3108591098468192, 0.05, -157.10866148417432, 1.2858915705345577, 0.05, -157.1717077430521, 1.2609251775557646, 0.05, -157.2335085643301, 1.2360164255595996, 0.05, -157.2940730669629, 1.2112900526560688, 0.05, -157.35341377693211, 1.1868141993841472, 0.05, -157.41154321827864, 1.1625888269302684, 0.05, -157.4684739147902, 1.138613930230925, 0.05, -157.5242183872796, 1.1148894497879251, 0.05, -157.57878915602214, 1.0914153748509807, 0.05, -157.6321987397533, 1.0681916746233637, 0.05, -157.68445965519896, 1.045218308913065, 0.05, -157.73558441843545, 1.0224952647297294, 0.05, -157.78558554341313, 1.0000224995537192, 0.05, -157.83447554261437, 0.9777999840247531, 0.05, -157.882266928579, 0.9558277192930446, 0.05, -157.92897221029352, 0.9341056342902166, 0.05, -157.97460389770353, 0.9126337482001208, 0.05, -158.01917449717243, 0.8914119893781566, 0.05, -158.06269651507216, 0.8704403579947299, 0.05, -158.10518245677088, 0.8497188339745244, 0.05, -158.14664482535343, 0.829247371651084, 0.05, -158.18709612376773, 0.8090259682856743, 0.05, -158.22654885274332, 0.789054579511925, 0.05, -158.26501551259722, 0.7693331970780988, 0.05, -158.3025086018733, 0.7498617855221971, 0.05, -158.33904061860716, 0.7306403346766097, 0.05, -158.37462405908096, 0.7116688094761838, 0.05, -158.40927141876836, 0.6929471937479648, 0.05, -158.44299519226723, 0.6744754699776364, 0.05, -158.47580787308559, 0.6562536163671142, 0.05, -158.50772195308815, 0.6382816000514031, 0.05, -158.53874992362253, 0.6205594106874865, 0.05, -158.5689042748986, 0.6030870255217877, 0.05, -158.59819749727842, 0.5858644475959272, 0.05, -158.62664207782163, 0.5688916108640616, 0.05, -158.65425050457517, 0.5521685350710923, 0.05, -158.68103526415197, 0.5356951915360909, 0.05, -158.70700884220622, 0.5194715610852415, 0.05, -158.73218372320818, 0.5034976200392584, 0.05, -158.75657239216358, 0.4877733791079157, 0.05, -158.78018733087896, 0.4722987743075641, 0.05, -158.80304102326184, 0.45707384765739273, 0.05, -158.82514594966293, 0.4420985280218691, 0.05, -158.84651459198952, 0.42737284653177066, 0.05, -158.86715942927185, 0.4128967456466741, 0.05, -158.8870929426592, 0.39867026774675896, 0.05, -158.90632760962885, 0.3846933393928701, 0.05, -158.92487590861674, 0.37096597975774004, 0.05, -158.94275031727267, 0.3574881731185653, 0.05, -158.9599633123905, 0.3442599023566449, 0.05, -158.9765273698936, 0.33128115006229725, 0.05, -158.99245496695463, 0.3185519412203881, 0.05, -159.00775857714572, 0.3060722038220222, 0.05, -159.02245067573534, 0.29384197179247246, 0.05, -159.03654373696975, 0.28186122468834174, 0.05, -159.05005023386303, 0.27012993786544104, 0.05, -159.06298264070088, 0.25864813675668014, 0.05, -159.07535342918547, 0.24741576969192694, 0.05, -159.08717507166298, 0.236432849550029, 0.05, -159.09846004063056, 0.22569937935125517, 0.05, -159.10922080681755, 0.21521532374006172, 0.05, -159.1194698417364, 0.20498069837660982, 0.05, -159.12921961544686, 0.1949954742092123, 0.05, -159.13848259900024, 0.18525967106765437, 0.05, -159.1472712625846, 0.17577327168756876, 0.05, -159.15559807481543, 0.166536244616403, 0.05, -159.1634755060757, 0.1575486252056606, 0.05, -159.17091602440706, 0.14881036662699135, 0.05, -159.1779320998254, 0.14032150836657797, 0.05, -159.1845362007956, 0.13208201940409936, 0.05, -159.19074079475675, 0.12409187922271886, 0.05, -159.19655834996576, 0.1163511041798902, 0.05, -159.20200133501478, 0.1088597009805857, 0.05, -159.2070822173376, 0.10161764645587347, 0.05, -159.2118134639852, 0.09462493295235426, 0.05, -159.21620754300133, 0.08788158032264462, 0.05, -159.2202769207563, 0.08138755509963701, 0.05, -159.22403406496545, 0.0751428841831157, 0.05, -159.2274914417367, 0.06914753542504222, 0.05, -159.2306615188067, 0.06340154139975306, 0.05, -159.23355676192588, 0.05790486238343236, 0.05, -159.2361896385559, 0.052657532600774756, 0.05, -159.23857261422685, 0.04765951341877008, 0.05, -159.2407181553395, 0.04291082225259324, 0.05, -159.24263872875744, 0.038411468358945884, 0.05, -159.2443467998812, 0.0341614224754159, 0.05, -159.24585483559068, 0.030160714189046, 0.05, -159.24717530176028, 0.026409323392243077, 0.05, -159.24832066345118, 0.02290723381791135, 0.05, -159.24930338836973, 0.01965449837080429, 0.05, -159.25013594110362, 0.01665105467778218, 0.05, -159.2508307877668, 0.013896933263472184, 0.05, -159.2514003940141, 0.011392124946083042, 0.05, -159.25185722704393, 0.009136660596802343, 0.05, -159.25221375067756, 0.0071304726722973945, 0.05, -159.25248243261146, 0.005373638678069842, 0.05, -159.25267573728843, 0.003866093539123925, 0.05, -159.2528061308107, 0.0026078704456319823, 0.05, -159.25288607912026, 0.0015989661908072412, 0.05, -159.25292804805468, 8.393786885886842E-4, 0.05, -159.2529445033917, 3.29106740282966E-4, 0.05, -159.25294791088047, 6.814977558332475E-5, 0.05, -159.25294791088047, 0.0, 0.05, +2.3709378636590627E-5, 3.4918757273181254E-4, 0.05, +6.29929520824073E-5, 7.856714689163331E-4, 0.05, +1.3283031859582853E-4, 0.0013967473302684246, 0.05, +2.4195095420087868E-4, 0.0021824127121010035, 0.05, +3.990841347510599E-4, 0.003142663611003623, 0.05, +6.129588384760976E-4, 0.004277494074500755, 0.05, +6.301243960692638E-4, 3.4331115186332314E-4, 0.05, +7.828303429615591E-4, 0.003054118937845906, 0.05, +9.713593504636496E-4, 0.0037705801500418114, 0.05, +0.0011994837233597348, 0.004562487457921706, 0.05, +0.0014709769372661056, 0.005429864278127412, 0.05, +0.0017896132566205926, 0.006372726387089743, 0.05, +0.002159167864443123, 0.007391092156450605, 0.05, +0.0025834170038695993, 0.008484982788529528, 0.05, +0.003066139046066802, 0.009654440843944057, 0.05, +0.0036111130506969735, 0.010899480092603425, 0.05, +0.004222120513813938, 0.01222014926233929, 0.05, +0.004902944764089292, 0.013616485005507085, 0.05, +0.005657371714046305, 0.015088538999140255, 0.05, +0.006489189482878515, 0.0166363553766442, 0.05, +0.0074021895375840615, 0.018260001094110922, 0.05, +0.008400166170421238, 0.01995953265674355, 0.05, +0.00948691725734405, 0.021735021738456213, 0.05, +0.010666244676420472, 0.02358654838152843, 0.05, +0.011941954459410119, 0.02551419565979294, 0.05, +0.013317857158221659, 0.0275180539762308, 0.05, +0.014797768523195483, 0.029598227299476493, 0.05, +0.016385509647402607, 0.03175482248414248, 0.05, +0.018084907527169628, 0.033987957595340415, 0.05, +0.01989979558735398, 0.036297761203687044, 0.05, +0.021834014019049094, 0.03868436863390229, 0.05, +0.023891410847692408, 0.04114793657286625, 0.05, +0.026075841952684226, 0.04368862209983632, 0.05, +0.028391171363710097, 0.046306588220517454, 0.05, +0.030841273054949804, 0.04900203382479417, 0.05, +0.03343003048831716, 0.05177514866734706, 0.05, +0.03616133808084704, 0.0546261518505977, 0.05, +0.03903910136208466, 0.057555265624752404, 0.05, +0.04206723839772489, 0.06056274071280459, 0.05, +0.045249679896235316, 0.06364882997020863, 0.05, +0.04859037094372703, 0.06681382094983425, 0.05, +0.05209327104830244, 0.07005800209150832, 0.05, +0.05576235590063791, 0.07338169704670945, 0.05, +0.05960161797495128, 0.07678524148626736, 0.05, +0.06361506767055314, 0.08026899391203708, 0.05, +0.06780673485400283, 0.083833343668994, 0.05, +0.07218066930506731, 0.08747868902128937, 0.05, +0.07674094327288138, 0.09120547935628137, 0.05, +0.08149165118097085, 0.09501415816178937, 0.05, +0.08643691240995727, 0.09890522457972849, 0.05, +0.09158087284415285, 0.10287920868391166, 0.05, +0.0969277051096864, 0.10693664531067086, 0.05, +0.10248161168002916, 0.11107813140685503, 0.05, +0.1082468264178864, 0.11530429475714485, 0.05, +0.11422761555503955, 0.11961578274306311, 0.05, +0.12042828062711937, 0.12401330144159654, 0.05, +0.1268531604005962, 0.12849759546953632, 0.05, +0.13350663239011984, 0.13306943979047284, 0.05, +0.1403931162442059, 0.1377296770817211, 0.05, +0.1475170751604853, 0.14247917832558776, 0.05, +0.1548830188449306, 0.14731887368890653, 0.05, +0.16249550598425408, 0.15224974278646913, 0.05, +0.1703591476367821, 0.15727283305056017, 0.05, +0.17847860935099374, 0.16238923428423305, 0.05, +0.18685861454843802, 0.16760010394888547, 0.05, +0.1955039479777395, 0.1729066685860299, 0.05, +0.20441945866955996, 0.17831021383640916, 0.05, +0.2136100633863009, 0.1838120943348185, 0.05, +0.22308075122935261, 0.1894137568610343, 0.05, +0.23283658585995398, 0.19511669261202708, 0.05, +0.24288271087221183, 0.2009225002451571, 0.05, +0.25322435354475537, 0.20683285345087013, 0.05, +0.26386682885551366, 0.21284950621516563, 0.05, +0.2748155442929728, 0.21897430874918244, 0.05, +0.28607600457617804, 0.22520920566410532, 0.05, +0.2976538164917728, 0.2315562383118952, 0.05, +0.309554693986358, 0.23801754989170346, 0.05, +0.32178446345284123, 0.24459538932966515, 0.05, +0.33434906921448354, 0.25129211523284634, 0.05, +0.3472545792097519, 0.25811019990536743, 0.05, +0.3605071908809653, 0.26505223342426765, 0.05, +0.37411323726942963, 0.2721209277692875, 0.05, +0.3880791935300099, 0.27931912521160507, 0.05, +0.4024116828631258, 0.28664978666231716, 0.05, +0.4171174838752418, 0.29411602024232036, 0.05, +0.4322035373050717, 0.3017210685965988, 0.05, +0.447676953036312, 0.3094683146248051, 0.05, +0.4635450175545493, 0.3173612903647462, 0.05, +0.4798152015902856, 0.32540368071472664, 0.05, +0.4964951677825566, 0.3335993238454196, 0.05, +0.5135927786600224, 0.3419522175493159, 0.05, +0.5311161050545761, 0.3504665278910731, 0.05, +0.549073433960493, 0.3591465781183399, 0.05, +0.5674732776286654, 0.36799687336344683, 0.05, +0.5863243820262083, 0.3770220879508589, 0.05, +0.605635735782255, 0.3862270751209357, 0.05, +0.625416579414288, 0.39561687264065826, 0.05, +0.6456764143173697, 0.4051966980616331, 0.05, +0.6664250123645419, 0.4149719609434441, 0.05, +0.6876703384078915, 0.42490652086699265, 0.05, +0.7094185176444346, 0.43496358473086333, 0.05, +0.7316759030255264, 0.44514770762183675, 0.05, +0.7544490790329135, 0.45546352014774055, 0.05, +0.7777448652745841, 0.4659157248334114, 0.05, +0.801570320018309, 0.476509094874497, 0.05, +0.8259327433422267, 0.48724846647835485, 0.05, +0.8508396800641622, 0.4981387344387116, 0.05, +0.8762989227115217, 0.5091848529471893, 0.05, +0.9023185137509088, 0.5203918207877417, 0.05, +0.9289067479945259, 0.5317646848723414, 0.05, +0.956072174331478, 0.5433085267390423, 0.05, +0.9838235976057904, 0.5550284654862481, 0.05, +1.012170079669517, 0.5669296412745317, 0.05, +1.041120940509988, 0.5790172168094208, 0.05, +1.0706857586684906, 0.591296363170054, 0.05, +1.100874371786121, 0.6037722623526063, 0.05, +1.1316968762423527, 0.616450089124635, 0.05, +1.1631636268074148, 0.629335011301243, 0.05, +1.1952852357019195, 0.6424321778900929, 0.05, +1.2280725713227358, 0.6557467124163259, 0.05, +1.2615367565666538, 0.6692837048783571, 0.05, +1.2956891662872336, 0.6830481944115983, 0.05, +1.3305414257714876, 0.6970451896850794, 0.05, +1.3661054066205978, 0.7112796169822013, 0.05, +1.402393224060346, 0.7257563487949665, 0.05, +1.4394172326486045, 0.740480171765168, 0.05, +1.4771900224609096, 0.7554557962461023, 0.05, +1.5157244136759545, 0.7706878243008966, 0.05, +1.5550334520382862, 0.7861807672466348, 0.05, +1.5951304032885174, 0.8019390250046213, 0.05, +1.636028745820472, 0.8179668506390922, 0.05, +1.6777421662915337, 0.8342684094212317, 0.05, +1.720284551048921, 0.8508476951477487, 0.05, +1.763669979222484, 0.8677085634712569, 0.05, +1.8079127153499994, 0.8848547225503086, 0.05, +1.8530272008945976, 0.9022897108919655, 0.05, +1.8990280460752278, 0.9200169036126055, 0.05, +1.9459300206172239, 0.9380394908399218, 0.05, +1.9937480445310694, 0.9563604782769076, 0.05, +2.0424944891614327, 0.9749288926072663, 0.05, +2.0921790549892023, 0.9936913165553907, 0.05, +2.1428113786873815, 1.012646473963581, 0.05, +2.1944010158372556, 1.0317927429974854, 0.05, +2.2469574243401325, 1.0511281700575354, 0.05, +2.3004899474514904, 1.0706504622271584, 0.05, +2.355007796931718, 1.0903569896045486, 0.05, +2.410520035384143, 1.1102447690485067, 0.05, +2.4670355623380007, 1.1303105390771486, 0.05, +2.524563095874537, 1.1505506707307274, 0.05, +2.583111156246407, 1.1709612074374014, 0.05, +2.6426880537187056, 1.191537949445968, 0.05, +2.703301869112686, 1.212276307879605, 0.05, +2.764960441968812, 1.2331714571225254, 0.05, +2.8276713557558484, 1.2542182757407287, 0.05, +2.891441923004061, 1.2754113449642506, 0.05, +2.956279172687943, 1.2967449936776392, 0.05, +3.0221898375525096, 1.3182132972913332, 0.05, +3.089180342036766, 1.3398100896851286, 0.05, +3.157256790820863, 1.3615289756819373, 0.05, +3.2264249561721097, 1.3833633070249347, 0.05, +3.296690270712052, 1.4053062907988425, 0.05, +3.368057814346193, 1.4273508726828261, 0.05, +3.440532307443078, 1.4494898619376988, 0.05, +3.5141181027608543, 1.4717159063555332, 0.05, +3.5888191754304133, 1.4940214533911778, 0.05, +3.6646391187868756, 1.5163988671292494, 0.05, +3.7415811362888944, 1.5388403500403762, 0.05, +3.8196480355819538, 1.5613379858611869, 0.05, +3.8988422260126434, 1.58388380861379, 0.05, +3.9791657118334025, 1.606469716415179, 0.05, +4.060620089654152, 1.629087556414982, 0.05, +4.143206546013966, 1.6517291271962713, 0.05, +4.226925855057385, 1.6743861808683869, 0.05, +4.311778374786768, 1.6970503945876483, 0.05, +4.397764050442144, 1.7197135131075239, 0.05, +4.484882410315849, 1.7423671974740853, 0.05, +4.573132567274576, 1.7650031391745393, 0.05, +4.662513221039991, 1.7876130753083033, 0.05, +4.753022656677308, 1.8101887127463263, 0.05, +4.844658749693452, 1.8327218603228794, 0.05, +4.937418965508227, 1.8552043162955083, 0.05, +5.031300365775613, 1.877628005347722, 0.05, +5.12629960695306, 1.8999848235489252, 0.05, +5.22241295073609, 1.922266875660615, 0.05, +5.319636262931325, 1.9444662439046916, 0.05, +5.417965017725786, 1.9665750958892185, 0.05, +5.517394309279243, 1.9885858310691311, 0.05, +5.617918848187301, 2.0104907781611656, 0.05, +5.719532975940031, 2.0322825550546035, 0.05, +5.822230663713332, 2.0539537554660185, 0.05, +5.926005523308609, 2.0754971919055367, 0.05, +6.030850809944787, 2.096905732723556, 0.05, +6.136759432880658, 2.1181724587174258, 0.05, +6.243723958646701, 2.139290515320852, 0.05, +6.351736623674349, 2.160253300552962, 0.05, +6.460789332940936, 2.18105418533174, 0.05, +6.570873675218385, 2.201686845548977, 0.05, +6.681980926352349, 2.2221450226792787, 0.05, +6.794102060933157, 2.2424226916161536, 0.05, +6.907227751958511, 2.2625138205070905, 0.05, +7.021348388834613, 2.2824127375220304, 0.05, +7.1364540776050545, 2.302113775408826, 0.05, +7.252534651889657, 2.321611485692042, 0.05, +7.3695796779822835, 2.34090052185253, 0.05, +7.487578468320189, 2.3599758067581136, 0.05, +7.606520082115454, 2.378832275905289, 0.05, +7.726393339410879, 2.397465145908503, 0.05, +7.847186823586903, 2.415869683520484, 0.05, +7.96888889105486, 2.434041349359136, 0.05, +8.091487681091714, 2.451975800737066, 0.05, +8.214971119913589, 2.469668776437493, 0.05, +8.339326929378048, 2.4871161892891998, 0.05, +8.464542633321965, 2.5043140788783558, 0.05, +8.590605566911426, 2.5212586717892203, 0.05, +8.717502882049285, 2.5379463027571796, 0.05, +8.845221554356975, 2.554373446153809, 0.05, +8.973748390113425, 2.570536715128987, 0.05, +9.10307003291624, 2.5864328560562924, 0.05, +9.233172970216609, 2.602058746007405, 0.05, +9.36404353958234, 2.6174113873146423, 0.05, +9.495667935374723, 2.6324879158476397, 0.05, +9.62803221496947, 2.6472855918949594, 0.05, +9.761122303158471, 2.6618017637800144, 0.05, +9.894924000297689, 2.6760339427843607, 0.05, +10.02942298665138, 2.689979727073827, 0.05, +10.164604828251663, 2.7036368320056883, 0.05, +10.300454978325291, 2.7170030014725586, 0.05, +10.436958792695307, 2.7300762874003284, 0.05, +10.574101521227306, 2.7428545706399547, 0.05, +10.711868324709783, 2.7553360696495734, 0.05, +10.85024427275066, 2.767518960817522, 0.05, +10.98921435024041, 2.7794015497950184, 0.05, +11.128763460990895, 2.790982215009691, 0.05, +11.268876433046763, 2.802259441117379, 0.05, +11.409538023638868, 2.813231811842097, 0.05, +11.550732920796364, 2.8238979431499076, 0.05, +11.69244574790858, 2.8342565422443347, 0.05, +11.83466106889316, 2.8443064196915895, 0.05, +11.977363391328739, 2.854046448711576, 0.05, +12.120542287944101, 2.86357793230723, 0.05, +12.264192490785566, 2.8730040568293114, 0.05, +12.408308814648807, 2.8823264772648063, 0.05, +12.55288615662666, 2.8915468395570545, 0.05, +12.697919498825923, 2.900666843985269, 0.05, +12.843403904038182, 2.9096881042451685, 0.05, +12.989334518120454, 2.918612281645463, 0.05, +13.135706567006128, 2.9274409777134562, 0.05, +13.282515356771249, 2.9361757953024026, 0.05, +13.429756272283651, 2.9448183102480283, 0.05, +13.577424778849966, 2.9533701313263094, 0.05, +13.725516418778833, 2.961832798577312, 0.05, +13.874026811411769, 2.9702078526587177, 0.05, +14.022951653347377, 2.9784968387121813, 0.05, +14.17228671350075, 2.9867012030674567, 0.05, +14.322027841057722, 2.994822551139442, 0.05, +14.47217095499204, 3.002862278686341, 0.05, +14.622712048279773, 3.010821865754678, 0.05, +14.77364718703075, 3.018702775019532, 0.05, +14.92497250961939, 3.026506451772787, 0.05, +15.076684222132581, 3.0342342502637925, 0.05, +15.228778604541809, 3.041887648184539, 0.05, +15.381252003133811, 3.0494679718400657, 0.05, +15.534100833204516, 3.056976601414102, 0.05, +15.687321578205045, 3.0644149000105907, 0.05, +15.840910788892645, 3.0717842137519904, 0.05, +15.994865078647585, 3.0790857950988046, 0.05, +16.14918113091246, 3.0863210452974634, 0.05, +16.303855690161978, 3.0934911849903206, 0.05, +16.458885565049417, 3.100597497748764, 0.05, +16.614267627595016, 3.10764125091196, 0.05, +16.769998812383, 3.114623695759729, 0.05, +16.926076114800523, 3.1215460483504684, 0.05, +17.082496590009075, 3.128409504171065, 0.05, +17.239257354550872, 3.1352152908359603, 0.05, +17.396355583812586, 3.1419645852342453, 0.05, +17.55378851110492, 3.148658545846643, 0.05, +17.71155342788888, 3.155298335679187, 0.05, +17.86964768304556, 3.1618851031335935, 0.05, +18.028068680730183, 3.16841995369247, 0.05, +18.186813882110616, 3.174904027608705, 0.05, +18.345880802745498, 3.181338412697654, 0.05, +18.505267013463772, 3.187724214365486, 0.05, +18.664970137795976, 3.194062486644106, 0.05, +18.824987852743117, 3.200354298942827, 0.05, +18.985317888130623, 3.2066007077500926, 0.05, +19.145958025974586, 3.2128027568792725, 0.05, +19.30690609986084, 3.2189614777250335, 0.05, +19.468159993158086, 3.22507786594494, 0.05, +19.62971764018042, 3.2311529404466612, 0.05, +19.791577024732735, 3.2371876910463113, 0.05, +19.953736180427303, 3.243183113891365, 0.05, +20.11619318851677, 3.2491401617893856, 0.05, +20.278946178411783, 3.2550597979002562, 0.05, +20.441993327723388, 3.2609429862320884, 0.05, +20.605332860592977, 3.26679065739181, 0.05, +20.768963048335248, 3.2726037548454454, 0.05, +20.932882208369026, 3.2783832006755813, 0.05, +21.097088703466746, 3.2841299019543992, 0.05, +21.26158094071337, 3.2898447449324375, 0.05, +21.42635737428334, 3.295528671399417, 0.05, +21.59141650021551, 3.3011825186433708, 0.05, +21.75675686008285, 3.3068071973467785, 0.05, +21.922377038766797, 3.312403573678967, 0.05, +22.088275663856166, 3.3179725017873785, 0.05, +22.254451405788362, 3.3235148386439173, 0.05, +22.42090297746597, 3.329031433552168, 0.05, +22.587629133885745, 3.33452312839544, 0.05, +22.754628671779777, 3.339990757880621, 0.05, +22.921900429268888, 3.345435149782237, 0.05, +23.089443285528187, 3.3508571251859744, 0.05, +23.25725616040379, 3.356257497512059, 0.05, +23.425338013235425, 3.3616370566326848, 0.05, +23.593687845448084, 3.3669966442531734, 0.05, +23.76230469657679, 3.3723370225741625, 0.05, +23.931187646670768, 3.3776590018795196, 0.05, +24.100335814552, 3.3829633576246625, 0.05, +24.269748358866114, 3.3882508862822727, 0.05, +24.43942447573255, 3.3935223373287515, 0.05, +24.60936340154688, 3.3987785162865434, 0.05, +24.779564410196205, 3.404020172986537, 0.05, +24.950026813466046, 3.4092480653968127, 0.05, +25.12074996180191, 3.4144629667172937, 0.05, +25.29173324330899, 3.4196656301415906, 0.05, +25.46297608361655, 3.4248568061512117, 0.05, +25.634477945853472, 3.4300372447384784, 0.05, +25.806238330494107, 3.4352076928126944, 0.05, +25.97825677521521, 3.4403688944220967, 0.05, +26.150532854763515, 3.4455215909660852, 0.05, +26.323066180834253, 3.4506665214147914, 0.05, +26.495856401960392, 3.4558044225227915, 0.05, +26.66890320341243, 3.4609360290407354, 0.05, +26.842206307109127, 3.4660620739338945, 0.05, +27.015765471538433, 3.471183288586153, 0.05, +27.18958049168937, 3.4763004030187483, 0.05, +27.36365119899397, 3.4814141460920456, 0.05, +27.537977461279826, 3.4865252457171403, 0.05, +27.712559182733347, 3.491634429070432, 0.05, +27.887396303872848, 3.4967424227899824, 0.05, +28.062488801532176, 3.5018499531865492, 0.05, +28.237836688854742, 3.5069577464513326, 0.05, +28.413440015297628, 3.5120665288577455, 0.05, +28.58929886664573, 3.5171770269620786, 0.05, +28.765413365078366, 3.5222899686527236, 0.05, +28.9417836690889, 3.5274060802106737, 0.05, +29.118409973628346, 3.5325260907889464, 0.05, +29.295292510133525, 3.5376507301036084, 0.05, +29.472431546591885, 3.5427807291672, 0.05, +29.64982738761634, 3.5479168204891, 0.05, +29.82748037453024, 3.553059738277963, 0.05, +30.005390885462297, 3.558210218641176, 0.05, +30.18355933545145, 3.5633689997830285, 0.05, +30.36198617656184, 3.568536822207784, 0.05, +30.54067189820192, 3.5737144328016734, 0.05, +30.71961702679158, 3.5789025717931082, 0.05, +30.89882212624965, 3.58410198916146, 0.05, +31.07828779810528, 3.589313437112572, 0.05, +31.2580146816375, 3.5945376706444567, 0.05, +31.438003454547175, 3.5997754581935095, 0.05, +31.618254832043117, 3.6050275499188493, 0.05, +31.798769567546117, 3.610294710060005, 0.05, +31.9795484541393, 3.615577731863707, 0.05, +32.160592322247766, 3.620877362169233, 0.05, +32.3419020424234, 3.6261944035127236, 0.05, +32.523478523630374, 3.631529624139537, 0.05, +32.705322715394985, 3.636883835292153, 0.05, +32.88743560554347, 3.6422578029698136, 0.05, +33.06981822328938, 3.6476523549181383, 0.05, +33.2524716378975, 3.6530682921623523, 0.05, +33.43539695855859, 3.6585064132217613, 0.05, +33.61859533598063, 3.663967548440704, 0.05, +33.802067962105326, 3.6694525224939953, 0.05, +33.985816070426935, 3.6749621664321754, 0.05, +34.16984093632141, 3.6804973178894205, 0.05, +34.354143877385134, 3.6860588212744796, 0.05, +34.53872625405362, 3.691647533369685, 0.05, +34.72358947052193, 3.6972643293661793, 0.05, +34.908734972285465, 3.7029100352707145, 0.05, +35.09416425104112, 3.7085855751131582, 0.05, +35.279878840845505, 3.714291796087648, 0.05, +35.46588032244955, 3.7200296320809616, 0.05, +35.65217031932681, 3.725799937545169, 0.05, +35.83875050201469, 3.7316036537576363, 0.05, +36.02562258696046, 3.7374416989153727, 0.05, +36.21278833696525, 3.7433150000957927, 0.05, +36.40024956163798, 3.7492244934545713, 0.05, +36.58800811785892, 3.755171124418791, 0.05, +36.77606591025312, 3.7611558478841234, 0.05, +36.964424892856066, 3.76717965205883, 0.05, +37.153087068309375, 3.773243509066232, 0.05, +37.34205448825571, 3.7793483989267616, 0.05, +37.53132925434988, 3.785495321883273, 0.05, +37.72091352041531, 3.791685321308581, 0.05, +37.91080949007744, 3.7979193932425996, 0.05, +38.10101941866481, 3.8041985717474462, 0.05, +38.291545615346465, 3.810523933633104, 0.05, +38.48239044077455, 3.8168965085617517, 0.05, +38.67355630871141, 3.8233173587371785, 0.05, +38.8650456906407, 3.829787638585688, 0.05, +39.05686110823131, 3.836308351812289, 0.05, +39.24900514217454, 3.842880678864584, 0.05, +39.44148042897148, 3.849505735938832, 0.05, +39.63428966027841, 3.856184626138613, 0.05, +39.82743558787017, 3.862918551835082, 0.05, +40.020921019047144, 3.8697086235394154, 0.05, +40.21474882072619, 3.8765560335809384, 0.05, +40.40892192276776, 3.8834620408314167, 0.05, +40.60344331107692, 3.8904277661832736, 0.05, +40.798316034854174, 3.897454475545087, 0.05, +40.993543205251434, 3.904543407945258, 0.05, +41.189127995484796, 3.911695804667185, 0.05, +41.3850736424199, 3.918912938702092, 0.05, +41.58138344878209, 3.926196127243897, 0.05, +41.77806077873463, 3.9335465990506813, 0.05, +41.97510906459091, 3.940965717125665, 0.05, +42.17253180542613, 3.94845481670443, 0.05, +42.37033256688182, 3.956015229113723, 0.05, +42.56851498187194, 3.9636482998024074, 0.05, +42.76708275417372, 3.9713554460355964, 0.05, +42.96603965489783, 3.979138014482074, 0.05, +43.16538952960357, 3.9869974941148745, 0.05, +43.36513629043141, 3.994935216556731, 0.05, +43.56528392505469, 4.00295269246571, 0.05, +43.76583649309569, 4.011051360820006, 0.05, +43.966798125940414, 4.019232656894536, 0.05, +44.16817303300948, 4.02749814138132, 0.05, +44.36996549773132, 4.035849294436844, 0.05, +44.572179878818105, 4.044287621735643, 0.05, +44.774820613692675, 4.052814697491374, 0.05, +44.97789221298168, 4.061431985780006, 0.05, +45.18139927399508, 4.070141220268048, 0.05, +45.385346465156026, 4.07894382321891, 0.05, +45.589738538395, 4.087841464779403, 0.05, +45.79458032807236, 4.096835793547193, 0.05, +45.99987674595708, 4.105928357694446, 0.05, +46.2056327899753, 4.115120880364265, 0.05, +46.411853537321655, 4.124414946927137, 0.05, +46.61854415013243, 4.1338122562155455, 0.05, +46.82570987666473, 4.143314530645992, 0.05, +47.033356044738454, 4.152923361474429, 0.05, +47.241488073930256, 4.162640583836002, 0.05, +47.45011146303581, 4.172467782111072, 0.05, +47.65923180296985, 4.182406798680828, 0.05, +47.86885476455312, 4.192459231665356, 0.05, +48.07898611264402, 4.202626961817971, 0.05, +48.28963169377252, 4.212911622570059, 0.05, +48.50079744402195, 4.223315004988537, 0.05, +48.71248939176106, 4.233838954782198, 0.05, +48.92471364431832, 4.244485051145127, 0.05, +49.13747640423756, 4.255255198384897, 0.05, +49.350783959797084, 4.26615111119043, 0.05, +49.564642685500765, 4.277174514073548, 0.05, +49.77905904920439, 4.28832727407261, 0.05, +49.99403960001527, 4.299611016217622, 0.05, +50.209590977461154, 4.311027548917699, 0.05, +50.42571990926203, 4.322578636017443, 0.05, +50.64243320527381, 4.334265920235665, 0.05, +50.8597377643279, 4.34609118108179, 0.05, +51.077640568495575, 4.358056083353485, 0.05, +51.2961486861792, 4.370162353672586, 0.05, +51.51526926477896, 4.382411571995107, 0.05, +51.735009537074774, 4.3948054459163615, 0.05, +51.95537681278457, 4.4073455141958915, 0.05, +52.17637848374008, 4.4200334191101565, 0.05, +52.398022015400954, 4.432870633217462, 0.05, +52.62031495037046, 4.445858699390093, 0.05, +52.84326490342556, 4.4589990611021175, 0.05, +53.066879560272085, 4.47229313693042, 0.05, +53.29116667705456, 4.485742335649547, 0.05, +53.51613407219996, 4.49934790290802, 0.05, +53.741789624472894, 4.513111045458587, 0.05, +53.96814127780346, 4.527033066611297, 0.05, +54.19519702919238, 4.541115027778277, 0.05, +54.422964923382764, 4.555357883807694, 0.05, +54.65145306107304, 4.569762753805508, 0.05, +54.88066957779934, 4.584330334525918, 0.05, +55.110622655664194, 4.599061557297149, 0.05, +55.34132050160084, 4.6139569187329625, 0.05, +55.57277135889443, 4.629017145871751, 0.05, +55.804983488838865, 4.64424259888873, 0.05, +56.037965168288764, 4.659633588998027, 0.05, +56.27172468682074, 4.675190370639462, 0.05, +56.50627033554141, 4.6909129744134175, 0.05, +56.74161039773115, 4.706801243794792, 0.05, +56.977753149754534, 4.722855040467699, 0.05, +57.214706845384256, 4.739073912594421, 0.05, +57.452479705131445, 4.7554571949438005, 0.05, +57.6910799144281, 4.772004185933175, 0.05, +57.93051560836538, 4.78871387874563, 0.05, +58.17079486452934, 4.805585123279118, 0.05, +58.41192569032711, 4.822616515955381, 0.05, +58.65391601304834, 4.839806454424565, 0.05, +58.89677366756274, 4.8571530902881, 0.05, +59.14050637765138, 4.874654201772746, 0.05, +59.38512175690932, 4.892307585158921, 0.05, +59.630627282721775, 4.910110516249095, 0.05, +59.87703028423072, 4.928060030178886, 0.05, +60.12433793410072, 4.946152997400111, 0.05, +60.372557226519234, 4.964385848370171, 0.05, +60.62169495843699, 4.9827546383551535, 0.05, +60.87175772669562, 5.001255365172594, 0.05, +61.122751892551186, 5.019883317111368, 0.05, +61.37468357815938, 5.038633712163769, 0.05, +61.62755863755776, 5.057501187967667, 0.05, +61.881382646132366, 5.076480171492067, 0.05, +62.136160874209565, 5.0955645615440455, 0.05, +62.39189827515795, 5.11474801896772, 0.05, +62.648599450758155, 5.134023512004077, 0.05, +62.906268641676334, 5.153383818363588, 0.05, +63.16490970586945, 5.172821283862308, 0.05, +63.42452608332519, 5.192327549114893, 0.05, +63.68512078757775, 5.2118940850512585, 0.05, +63.94669637375138, 5.23151172347253, 0.05, +64.20925492252692, 5.251170975510929, 0.05, +64.47279800443845, 5.270861638230458, 0.05, +64.73732666548618, 5.290573220954737, 0.05, +65.00284140323245, 5.310294754925538, 0.05, +65.26934213093718, 5.330014554094409, 0.05, +65.53682816635691, 5.349720708394725, 0.05, +65.80529819897482, 5.369400652358235, 0.05, +66.07475026788602, 5.389041378223853, 0.05, +66.34518173704788, 5.408629383237266, 0.05, +66.61658927257994, 5.428150710641129, 0.05, +66.88896881640775, 5.447590876556296, 0.05, +67.16231556298418, 5.466934931528301, 0.05, +67.43662393907094, 5.486167521735312, 0.05, +67.71188758055378, 5.505272829656766, 0.05, +67.98809931185227, 5.524234625969672, 0.05, +68.26525112385546, 5.543036240063809, 0.05, +68.54333415511849, 5.561660625260345, 0.05, +68.82233867832444, 5.580090464119137, 0.05, +69.10225407530679, 5.598307939647006, 0.05, +69.38306882986531, 5.616295091170456, 0.05, +69.66477051023348, 5.634033607363526, 0.05, +69.94734575749622, 5.651504945254842, 0.05, +70.23078027584336, 5.66869036694281, 0.05, +70.51505882592781, 5.685571001688978, 0.05, +70.80016521699906, 5.70212782142515, 0.05, +71.08608230448834, 5.718341749785672, 0.05, +71.37279198780209, 5.734193666274919, 0.05, +71.66027521315262, 5.749664507010411, 0.05, +71.9485119756596, 5.76473525013964, 0.05, +72.23748132600491, 5.779387006906311, 0.05, +72.5271613802406, 5.793601084713891, 0.05, +72.81752933128456, 5.8073590208793275, 0.05, +73.10856146371155, 5.820642648539771, 0.05, +73.40023317142678, 5.833434154304443, 0.05, +73.6925189782527, 5.845716136518645, 0.05, +73.98539256144652, 5.857471663876229, 0.05, +74.27882677814895, 5.868684334048713, 0.05, +74.57279369475171, 5.879338332055233, 0.05, +74.86726461880075, 5.889418480980617, 0.05, +75.16221013387333, 5.898910301451539, 0.05, +75.45760013914958, 5.907800105524817, 0.05, +75.75340388613176, 5.916074939643881, 0.05, +76.04959002585849, 5.923722794534592, 0.05, +76.3461266483242, 5.930732449314064, 0.05, +76.6429813372329, 5.937093778173833, 0.05, +76.94012121385262, 5.942797532394457, 0.05, +77.23751299001901, 5.947835523327935, 0.05, +77.53512302017408, 5.952200603101314, 0.05, +77.83291736074042, 5.955886811326879, 0.05, +78.13086181880496, 5.958889161290815, 0.05, +78.42892201264902, 5.96120387688128, 0.05, +78.72706343135407, 5.962828374100974, 0.05, +79.02525148720966, 5.963761117111834, 0.05, +79.32345158081193, 5.964001872045637, 0.05, +79.62162915447033, 5.963551473167766, 0.05, +79.9197497521225, 5.9624119530435555, 0.05, +80.2177790782943, 5.960586523436026, 0.05, +80.51568305187152, 5.958079471544351, 0.05, +80.81342787095969, 5.954896381763278, 0.05, +81.11098005175235, 5.951043615853344, 0.05, +81.40830649696574, 5.94652890426784, 0.05, +81.70537454941042, 5.941361048893857, 0.05, +82.00215202229144, 5.9355494576204535, 0.05, +82.29860727172392, 5.929104988649572, 0.05, +82.59470922692935, 5.922039104108566, 0.05, +82.89042744006576, 5.9143642627282995, 0.05, +83.1857321263041, 5.906093724766732, 0.05, +83.48059419801072, 5.897241434132311, 0.05, +83.77498531603213, 5.887822360428038, 0.05, +84.06887790129399, 5.877851705237263, 0.05, +84.36224518274167, 5.867345628953673, 0.05, +84.65506121630051, 5.856320671176707, 0.05, +84.94730090946697, 5.844793863329337, 0.05, +85.23894005297282, 5.832782870116951, 0.05, +85.52995531780442, 5.820305296631885, 0.05, +85.82032429750079, 5.807379593927216, 0.05, +86.11002550787848, 5.794024207553686, 0.05, +86.39903839727162, 5.7802577878630474, 0.05, +86.68734334757984, 5.766099006164228, 0.05, +86.97492169574772, 5.751566963357588, 0.05, +87.26175572731142, 5.736680631273954, 0.05, +87.54782867291831, 5.721458912137763, 0.05, +87.83312470381833, 5.70592061800038, 0.05, +88.11762894767969, 5.690084877227286, 0.05, +88.40132745108265, 5.673970068059204, 0.05, +88.68420719505038, 5.657594879354458, 0.05, +88.96625606708548, 5.640977440702068, 0.05, +89.24746286142434, 5.624135886777168, 0.05, +89.52781726027938, 5.607087977100864, 0.05, +89.80730981475263, 5.589851089465149, 0.05, +90.08593193704014, 5.572442445750335, 0.05, +90.36367585567905, 5.554878372778065, 0.05, +90.64053464265622, 5.537175739543311, 0.05, +90.91650214114362, 5.519349969748016, 0.05, +91.19157299228974, 5.501417022922173, 0.05, +91.46574257476219, 5.483391649448995, 0.05, +91.73900699872279, 5.465288479212072, 0.05, +92.01136308451301, 5.447121715804523, 0.05, +92.2828083294595, 5.428904898929912, 0.05, +92.55334090523971, 5.410651515604171, 0.05, +92.82295959458432, 5.39237378689216, 0.05, +93.09166380490585, 5.374084206430522, 0.05, +93.35945353696974, 5.355794641277651, 0.05, +93.62632933843318, 5.337516029268845, 0.05, +93.89229230826213, 5.3192593965790325, 0.05, +94.15734403757504, 5.301034586258437, 0.05, +94.42148663648183, 5.282851978135878, 0.05, +94.68472266545923, 5.264720579548073, 0.05, +94.94705511988732, 5.246649088561843, 0.05, +95.20848743551774, 5.228646312608283, 0.05, +95.46902343358417, 5.210719961328516, 0.05, +95.72866731291911, 5.192877586699036, 0.05, +95.98742363039176, 5.175126349452863, 0.05, +96.24529727368349, 5.15747286583463, 0.05, +96.50229344991136, 5.139923524557434, 0.05, +96.75841765266986, 5.122484055170091, 0.05, +97.01367565450617, 5.105160036726156, 0.05, +97.26807348753613, 5.087956660599169, 0.05, +97.52161741573222, 5.0708785639219816, 0.05, +97.77431393089056, 5.053930303166699, 0.05, +98.02616971915045, 5.037115765197806, 0.05, +98.27719166850072, 5.020438987005417, 0.05, +98.52738683064561, 5.003903242897718, 0.05, +98.77676241635004, 4.987511714088601, 0.05, +99.02532577054711, 4.971267083941625, 0.05, +99.27308439320139, 4.955172453085363, 0.05, +99.52004587510757, 4.9392296381238, 0.05, +99.7662179237194, 4.923440972236499, 0.05, +100.01160833925853, 4.907808310782699, 0.05, +100.25622499350547, 4.89233308493881, 0.05, +100.50007582872425, 4.877016704375557, 0.05, +100.74316886445278, 4.861860714570601, 0.05, +100.9855121524495, 4.846865759934286, 0.05, +101.22711378209922, 4.832032592994437, 0.05, +101.46798188701365, 4.81736209828848, 0.05, +101.70812462119734, 4.802854683673748, 0.05, +101.94755013832523, 4.788510342557684, 0.05, +102.18626660852483, 4.774329403992031, 0.05, +102.42428222353637, 4.760312300230736, 0.05, +102.66160512862591, 4.74645810179083, 0.05, +102.89824349174552, 4.732767262392067, 0.05, +103.13420544391448, 4.719239043379337, 0.05, +103.36949909445738, 4.705873010857857, 0.05, +103.60413253222016, 4.692668755255671, 0.05, +103.8381137958541, 4.679625272678854, 0.05, +104.07145090731039, 4.66674222912595, 0.05, +104.30415182465869, 4.654018346965971, 0.05, +104.5362244790114, 4.641453087054004, 0.05, +104.76767672873176, 4.629044994407267, 0.05, +104.99851640338142, 4.616793492993134, 0.05, +105.22875125734645, 4.604697079300704, 0.05, +105.45838898703295, 4.592754593729973, 0.05, +105.68743724484875, 4.580965156316171, 0.05, +105.91590360495975, 4.5693272022200375, 0.05, +106.1437955660049, 4.557839220902955, 0.05, +106.37112057510345, 4.546500181971018, 0.05, +106.59788600442596, 4.535308586450179, 0.05, +106.82409914256806, 4.524262762841878, 0.05, +107.04976722612797, 4.513361671198268, 0.05, +107.27489740349439, 4.502603547328613, 0.05, +107.49949674088678, 4.491986747847871, 0.05, +107.72357224776937, 4.481510137651754, 0.05, +107.9471308363692, 4.471171771996613, 0.05, +108.1701793381908, 4.460970036432147, 0.05, +108.39272453718388, 4.450903979861459, 0.05, +108.61477310943165, 4.440971444955493, 0.05, +108.83633165383151, 4.431170887997085, 0.05, +109.05740669634972, 4.421500850364027, 0.05, +109.2780046814579, 4.411959702163754, 0.05, +109.49813197635697, 4.402545897981488, 0.05, +109.71779485807636, 4.393257634387628, 0.05, +109.93699951776682, 4.384093193809155, 0.05, +110.15575210098832, 4.375051664429928, 0.05, +110.3740586303382, 4.366130586997529, 0.05, +110.59192508475311, 4.357329088298292, 0.05, +110.80935732915133, 4.348644887964275, 0.05, +111.0263611816083, 4.34007704913936, 0.05, +111.24294235918664, 4.331623551566869, 0.05, +111.45910650542264, 4.323282924720006, 0.05, +111.67485920035122, 4.315053898571583, 0.05, +111.89020592486449, 4.306934490265371, 0.05, +112.1051521033073, 4.298923568856431, 0.05, +112.3197030666474, 4.291019266802121, 0.05, +112.53386409254014, 4.283220517854731, 0.05, +112.74764035106733, 4.275525170543863, 0.05, +112.96103513821355, 4.267895742924294, 0.05, +113.1740441098629, 4.260179432987047, 0.05, +113.38665709966715, 4.2522597960849104, 0.05, +113.59886400251514, 4.244138056960013, 0.05, +113.81065471008456, 4.235814151388275, 0.05, +114.0220191632237, 4.227289062782799, 0.05, +114.2329473192667, 4.218563120859833, 0.05, +114.44342916161317, 4.209636846929228, 0.05, +114.65345466073113, 4.200509982359108, 0.05, +114.86301384676625, 4.191183720702427, 0.05, +115.07209672922392, 4.181657649153408, 0.05, +115.28069335546058, 4.171932524733261, 0.05, +115.4887937485993, 4.162007862774424, 0.05, +115.6963879809995, 4.151884648003928, 0.05, +115.90346610418445, 4.141562463698721, 0.05, +116.11001817331115, 4.13104138253413, 0.05, +116.31603425188176, 4.1203215714123225, 0.05, +116.52150441184465, 4.109403199257848, 0.05, +116.72641872365159, 4.098286236138834, 0.05, +116.93076722848411, 4.08697009665037, 0.05, +117.13454000024254, 4.075455435168363, 0.05, +117.33772709791607, 4.063741953470809, 0.05, +117.54031855266376, 4.051829094953819, 0.05, +117.74230442862883, 4.0397175193011705, 0.05, +117.94367474322843, 4.027406291992064, 0.05, +118.14441953282697, 4.014895791970967, 0.05, +118.34452880496899, 4.0021854428402, 0.05, +118.54399256669343, 3.9892752344888818, 0.05, +118.74280081002817, 3.9761648666948823, 0.05, +118.94094350991179, 3.9628539976724966, 0.05, +119.1384106392941, 3.9493425876459867, 0.05, +119.33519213700852, 3.935629954288549, 0.05, +119.53127795538659, 3.9217163675614333, 0.05, +119.72665799191907, 3.90760073064961, 0.05, +119.92132216881498, 3.8932835379181183, 0.05, +120.11526036553882, 3.87876393447681, 0.05, +120.30846243550532, 3.8640413993300613, 0.05, +120.50091825208028, 3.8491163314992862, 0.05, +120.69261763485467, 3.8339876554876238, 0.05, +120.88355039493467, 3.8186552015999653, 0.05, +121.07370632815271, 3.803118664360808, 0.05, +121.26307519968624, 3.7873774306706345, 0.05, +121.45164676341517, 3.771431274578485, 0.05, +121.63941075204202, 3.7552797725372287, 0.05, +121.82635686344477, 3.7389222280548142, 0.05, +122.0124747982842, 3.722358696788722, 0.05, +122.19775421380469, 3.705588310409665, 0.05, +122.38218475397646, 3.6886108034354423, 0.05, +122.56575603844398, 3.671425689350365, 0.05, +122.74845766778638, 3.654032586848127, 0.05, +122.93027920863348, 3.636430816941827, 0.05, +123.11121022358344, 3.6186202989991583, 0.05, +123.29124022839933, 3.6006000963177525, 0.05, +123.47035872765662, 3.582369985145633, 0.05, +123.64855521375266, 3.5639297219208586, 0.05, +123.82581913061652, 3.5452783372773027, 0.05, +124.00213992187138, 3.5264158250969913, 0.05, +124.17750698776261, 3.507341317824703, 0.05, +124.35190972353217, 3.488054715391323, 0.05, +124.5253374746594, 3.468555022544338, 0.05, +124.6977795845245, 3.4488421973021404, 0.05, +124.86922536588855, 3.4289156272810017, 0.05, +125.039664115096, 3.4087749841490247, 0.05, +125.20908506844964, 3.388419067072843, 0.05, +125.37747749352495, 3.367848501506315, 0.05, +125.54483057529279, 3.3470616353567775, 0.05, +125.71113352744065, 3.326059042957228, 0.05, +125.87637551027804, 3.3048396567476654, 0.05, +126.04054565571535, 3.283402908746254, 0.05, +126.20363307029811, 3.261748291655241, 0.05, +126.36562687123137, 3.239876018665254, 0.05, +126.52651609806733, 3.2177845367193747, 0.05, +126.68628979961225, 3.195474030898305, 0.05, +126.84493700160141, 3.1729440397829864, 0.05, +127.00244669724667, 3.150193912905145, 0.05, +127.15880783529511, 3.1272227609688983, 0.05, +127.3140093789193, 3.10403087248383, 0.05, +127.4680402350592, 3.080617122798339, 0.05, +127.62088930401357, 3.056981379087241, 0.05, +127.77254544875117, 3.0331228947520903, 0.05, +127.92299752326682, 3.009041490312708, 0.05, +128.07223434061473, 2.9847363469583543, 0.05, +128.22024470880794, 2.9602073638641393, 0.05, +128.36701738207782, 2.9354534653974005, 0.05, +128.51254112594967, 2.910474877437077, 0.05, +128.65680464666877, 2.8852704143824, 0.05, +128.79979666047805, 2.8598402761857336, 0.05, +128.94150583650492, 2.8341835205373442, 0.05, +129.0819208306971, 2.8082998838435183, 0.05, +129.22103025455985, 2.78218847725524, 0.05, +129.35882272394457, 2.7558493876945467, 0.05, +129.49528681866752, 2.729281894459014, 0.05, +129.63041109935236, 2.7024856136965005, 0.05, +129.76418407634944, 2.6754595399415857, 0.05, +129.8965942773737, 2.648204020485364, 0.05, +130.02763018744116, 2.6207182013488626, 0.05, +130.15728024166148, 2.5930010844062843, 0.05, +130.2855329010149, 2.565053187068321, 0.05, +130.41237656512288, 2.5368732821595374, 0.05, +130.53779963160352, 2.508461329612556, 0.05, +130.6617920956402, 2.4798492807335695, 0.05, +130.78435086087157, 2.4511753046271014, 0.05, +130.90547802562347, 2.4225432950379013, 0.05, +131.02517565389465, 2.3939525654237728, 0.05, +131.14344574227584, 2.3654017676240775, 0.05, +131.26029027318313, 2.336890618145545, 0.05, +131.3757111682916, 2.3084179021692504, 0.05, +131.48971030560227, 2.2799827462134505, 0.05, +131.60228953274154, 2.251584542785283, 0.05, +131.71345065957289, 2.223222536627051, 0.05, +131.8231954234348, 2.19489527723865, 0.05, +131.93152557421593, 2.166603015622387, 0.05, +132.03844277265748, 2.138343968831108, 0.05, +132.14394869074025, 2.110118361655596, 0.05, +132.24804494104694, 2.0819250061339925, 0.05, +132.35073307833858, 2.053762745832986, 0.05, +132.45201466989823, 2.025631831193119, 0.05, +132.55189119590122, 1.9975305200599676, 0.05, +132.6503641581893, 1.9694592457615914, 0.05, +132.74743499778333, 1.941416791880544, 0.05, +132.84310509904384, 1.9134020252102164, 0.05, +132.93737586937192, 1.8854154065615125, 0.05, +133.03024862653763, 1.8574551433141266, 0.05, +133.12172471337942, 1.8295217368356982, 0.05, +133.21180541457025, 1.8016140238167702, 0.05, +133.30049197301216, 1.7737311688380364, 0.05, +133.38778562038803, 1.7458729475172967, 0.05, +133.47368757217757, 1.7180390357909436, 0.05, +133.5581989877406, 1.6902283112606986, 0.05, +133.64132100896927, 1.6624404245729534, 0.05, +133.72305477135592, 1.6346752477328157, 0.05, +133.80340136988775, 1.6069319706368648, 0.05, +133.88236184828975, 1.5792095680401614, 0.05, +133.9599372652887, 1.5515083399789704, 0.05, +134.03612863608706, 1.5238274159674414, 0.05, +134.11093695459274, 1.4961663701139312, 0.05, +134.18436317247688, 1.4685243576826685, 0.05, +134.2564082573782, 1.4409016980266665, 0.05, +134.32707312520088, 1.4132973564532814, 0.05, +134.39635866710546, 1.3857108380912664, 0.05, +134.46426737781334, 1.358174214157667, 0.05, +134.5308085828801, 1.3308241013352595, 0.05, +134.59599672987218, 1.3037629398418404, 0.05, +134.659846265344, 1.2769907094362372, 0.05, +134.72237158080188, 1.2505063091579265, 0.05, +134.78358706491576, 1.224309682277881, 0.05, +134.84350704420217, 1.1983995857282896, 0.05, +134.90214585851606, 1.1727762862780726, 0.05, +134.95951777461534, 1.1474383219856787, 0.05, +135.01563706848137, 1.1223858773203963, 0.05, +135.0705179866844, 1.0976183640606798, 0.05, +135.12417472072548, 1.0731346808219144, 0.05, +135.17662148727462, 1.0489353309828418, 0.05, +135.22787243043246, 1.0250188631566042, 0.05, +135.27794171410451, 1.001385673441217, 0.05, +135.32684344022175, 0.9780345223447031, 0.05, +135.37459173258813, 0.9549658473276892, 0.05, +135.42120064709906, 0.932178290218424, 0.05, +135.4666842481348, 0.9096720207150467, 0.05, +135.51105659056944, 0.8874468486925589, 0.05, +135.55433169759763, 0.8655021405636968, 0.05, +135.5965235484239, 0.84383701652541, 0.05, +135.63764615785257, 0.822452188573519, 0.05, +135.67771346228346, 0.801346088617878, 0.05, +135.7167394431035, 0.7805196164007574, 0.05, +135.7547380284541, 0.759971707011991, 0.05, +135.79172313639796, 0.7397021588772097, 0.05, +135.82770865914662, 0.719710454973443, 0.05, +135.86270850779746, 0.6999969730166308, 0.05, +135.8967365487708, 0.6805608194667323, 0.05, +135.92980664681477, 0.6614019608790503, 0.05, +135.96193265381643, 0.6425201400332178, 0.05, +135.9931284044138, 0.6239150119471562, 0.05, +136.02340770826893, 0.6055860771028378, 0.05, +136.05278440572556, 0.5875339491327649, 0.05, +136.08127227742384, 0.569757433965428, 0.05, +136.10888512475753, 0.5522569466741412, 0.05, +136.13563671373993, 0.5350317796479676, 0.05, +136.16154082534888, 0.5180822321789138, 0.05, +136.18661121278245, 0.5014077486712337, 0.05, +136.21086162515172, 0.4850082473853276, 0.05, +136.2343057998131, 0.46888349322735373, 0.05, +136.2569574542212, 0.4530330881623182, 0.05, +136.27883034263712, 0.4374577683185385, 0.05, +136.29993815173526, 0.4221561819629309, 0.05, +136.32029458384739, 0.4071286422423162, 0.05, +136.33991335585975, 0.39237544024701954, 0.05, +136.35880814342448, 0.3778957512948298, 0.05, +136.37699263840526, 0.36368989961535353, 0.05, +136.394480519344, 0.34975761877498807, 0.05, +136.41128543132032, 0.33609823952631596, 0.05, +136.42742106227647, 0.32271261912266636, 0.05, +136.44290106288094, 0.3096000120892671, 0.05, +136.45773909187588, 0.2967605798987817, 0.05, +136.47194876516753, 0.2841934658326766, 0.05, +136.48554375370693, 0.27189977078822103, 0.05, +136.4985376821326, 0.2598785685133758, 0.05, +136.5109441846196, 0.2481300497399759, 0.05, +136.52277687888056, 0.23665388521932357, 0.05, +136.53404940068398, 0.22545043606842013, 0.05, +136.5447753452121, 0.214518890562251, 0.05, +136.55496834155795, 0.20385992691709656, 0.05, +136.56464198585704, 0.19347288598168144, 0.05, +136.5738099082976, 0.18335844881118518, 0.05, +136.5824856828613, 0.17351549127374288, 0.05, +136.5906829284113, 0.16394491100022116, 0.05, +136.59841523561087, 0.15464614399150228, 0.05, +136.60569620081262, 0.14561930403476905, 0.05, +136.6125394070125, 0.1368641239976826, 0.05, +136.61895844555397, 0.12838077082982408, 0.05, +136.62496690045046, 0.12016909792955646, 0.05, +136.63057836182432, 0.11222922747701117, 0.05, +136.63580640590425, 0.10456088159880102, 0.05, +136.64066461286373, 0.09716413918960846, 0.05, +136.64516656628595, 0.09003906844468797, 0.05, +136.64932583018302, 0.08318527794103006, 0.05, +136.65315598867542, 0.07660316984822532, 0.05, +136.6566706069839, 0.07029236616982115, 0.05, +136.65988326863118, 0.06425323294519567, 0.05, +136.66280753757246, 0.05848537882580269, 0.05, +136.66545698024194, 0.05298885338953549, 0.05, +136.667845165153, 0.04776369822159834, 0.05, +136.66998566251888, 0.04280994731733566, 0.05, +136.67189204389123, 0.03812762744700928, 0.05, +136.673577877259, 0.033716667355185435, 0.05, +136.6750567050872, 0.029576556564274534, 0.05, +136.67634212944378, 0.025708487131866648, 0.05, +136.67744767212545, 0.022110853633154823, 0.05, +136.67838693334173, 0.018785224325670608, 0.05, +136.67917346457156, 0.015730624596909173, 0.05, +136.67982081551412, 0.012947018851307166, 0.05, +136.6803425663062, 0.010435015841243948, 0.05, +136.68075227732612, 0.008194220398688676, 0.05, +136.68106350961125, 0.0062246457028252615, 0.05, +136.6812898247088, 0.004526301951485309, 0.05, +136.68144478454613, 0.003099196746545851, 0.05, +136.68154195131984, 0.001943335474205092, 0.05, +136.68159488740466, 0.0010587216961897457, 0.05, +136.68161715528083, 4.453575232663447E-4, 0.05, +136.68162231748144, 1.0324401227344432E-4, 0.05, +136.68162231748144, 0.0, 0.05, diff --git a/src/main/resources/rightProfile_dumb.csv b/src/main/resources/rightProfile_dumb.csv new file mode 100644 index 00000000..2cffb57a --- /dev/null +++ b/src/main/resources/rightProfile_dumb.csv @@ -0,0 +1,813 @@ +812 +6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +6.2499999999999995E-6, 0.0, 0.05, +2.8125000000000025E-4, 0.005500000000000004, 0.05, +7.875000000000002E-4, 0.010124999999999999, 0.05, +0.0014125000000000006, 0.012500000000000004, 0.05, +0.0021687499999999997, 0.015124999999999982, 0.05, +0.0030687500000000003, 0.018000000000000013, 0.05, +0.004125, 0.021124999999999998, 0.05, +0.005350000000000001, 0.024500000000000008, 0.05, +0.006756249999999999, 0.028124999999999973, 0.05, +0.008356250000000003, 0.03200000000000005, 0.05, +0.010162500000000001, 0.03612499999999998, 0.05, +0.0121875, 0.04049999999999998, 0.05, +0.014443750000000002, 0.045125000000000026, 0.05, +0.01694375, 0.05000000000000001, 0.05, +0.019700000000000002, 0.055125000000000035, 0.05, +0.022725000000000002, 0.0605, 0.05, +0.026031249999999995, 0.06612499999999986, 0.05, +0.029631249999999984, 0.07199999999999977, 0.05, +0.033537499999999984, 0.078125, 0.05, +0.03776249999999997, 0.08449999999999971, 0.05, +0.042318749999999954, 0.09112499999999968, 0.05, +0.04721874999999995, 0.09799999999999989, 0.05, +0.05247499999999993, 0.10512499999999966, 0.05, +0.05809999999999992, 0.11249999999999982, 0.05, +0.06410624999999989, 0.1201249999999994, 0.05, +0.07050624999999988, 0.12799999999999978, 0.05, +0.07731249999999987, 0.13612499999999972, 0.05, +0.08453749999999983, 0.14449999999999935, 0.05, +0.09219374999999984, 0.15312500000000007, 0.05, +0.1002937499999998, 0.16199999999999937, 0.05, +0.10884999999999978, 0.17112499999999947, 0.05, +0.11787499999999977, 0.18049999999999983, 0.05, +0.12738124999999978, 0.19012499999999988, 0.05, +0.13738124999999973, 0.19999999999999907, 0.05, +0.1478874999999997, 0.21012499999999934, 0.05, +0.15891249999999968, 0.22049999999999959, 0.05, +0.17046874999999964, 0.23112499999999925, 0.05, +0.1825687499999996, 0.24199999999999944, 0.05, +0.19522499999999962, 0.25312500000000016, 0.05, +0.20844999999999958, 0.2644999999999992, 0.05, +0.22225624999999954, 0.2761249999999993, 0.05, +0.2366562499999995, 0.28799999999999937, 0.05, +0.25166249999999946, 0.3001249999999994, 0.05, +0.2672874999999994, 0.3124999999999989, 0.05, +0.2835437499999993, 0.32512499999999833, 0.05, +0.3004437499999993, 0.3379999999999994, 0.05, +0.3179999999999992, 0.3511249999999988, 0.05, +0.3362249999999992, 0.3644999999999998, 0.05, +0.3551312499999991, 0.37812499999999805, 0.05, +0.37473124999999907, 0.391999999999999, 0.05, +0.3950374999999994, 0.40612500000000606, 0.05, +0.4160625000000003, 0.4205000000000181, 0.05, +0.43781875000000114, 0.4351250000000173, 0.05, +0.4603187500000021, 0.4500000000000193, 0.05, +0.4835750000000029, 0.4651250000000162, 0.05, +0.507600000000004, 0.4805000000000226, 0.05, +0.532406250000005, 0.49612500000001836, 0.05, +0.558006250000006, 0.5120000000000213, 0.05, +0.584412500000007, 0.5281250000000193, 0.05, +0.611637500000008, 0.5445000000000211, 0.05, +0.6396937500000093, 0.5611250000000245, 0.05, +0.6685937500000105, 0.5780000000000252, 0.05, +0.6983500000000117, 0.595125000000023, 0.05, +0.7289750000000129, 0.6125000000000247, 0.05, +0.7604812500000142, 0.6301250000000258, 0.05, +0.7928812500000154, 0.6480000000000241, 0.05, +0.8261875000000168, 0.6661250000000285, 0.05, +0.8604125000000181, 0.6845000000000256, 0.05, +0.8955687500000196, 0.7031250000000289, 0.05, +0.9316687500000211, 0.7220000000000315, 0.05, +0.9687250000000227, 0.7411250000000313, 0.05, +1.0067500000000242, 0.7605000000000306, 0.05, +1.0457562500000257, 0.7801250000000293, 0.05, +1.0857562500000273, 0.8000000000000318, 0.05, +1.126762500000029, 0.8201250000000337, 0.05, +1.1687875000000307, 0.8405000000000351, 0.05, +1.2118437500000325, 0.8611250000000359, 0.05, +1.2559437500000343, 0.8820000000000361, 0.05, +1.3011000000000361, 0.9031250000000357, 0.05, +1.347325000000038, 0.9245000000000392, 0.05, +1.39463125000004, 0.9461250000000376, 0.05, +1.4430312500000417, 0.9680000000000355, 0.05, +1.492537500000044, 0.9901250000000461, 0.05, +1.543162500000046, 1.0125000000000384, 0.05, +1.5949187500000477, 1.0351250000000345, 0.05, +1.6478187500000503, 1.0580000000000522, 0.05, +1.7018750000000522, 1.0811250000000383, 0.05, +1.7571000000000543, 1.1045000000000416, 0.05, +1.8135062500000567, 1.1281250000000487, 0.05, +1.8711062500000593, 1.1520000000000508, 0.05, +1.9299125000000616, 1.1761250000000478, 0.05, +1.989937500000064, 1.2005000000000488, 0.05, +2.051193750000066, 1.2251250000000447, 0.05, +2.1136937500000683, 1.2500000000000444, 0.05, +2.1774437500000716, 1.275000000000066, 0.05, +2.242443750000074, 1.3000000000000433, 0.05, +2.3086937500000766, 1.3250000000000561, 0.05, +2.3761937500000796, 1.35000000000006, 0.05, +2.4449437500000823, 1.375000000000055, 0.05, +2.514943750000085, 1.40000000000005, 0.05, +2.586193750000088, 1.4250000000000629, 0.05, +2.6586937500000904, 1.450000000000049, 0.05, +2.7324437500000935, 1.4750000000000618, 0.05, +2.8074437500000973, 1.5000000000000746, 0.05, +2.8836937500001003, 1.5250000000000608, 0.05, +2.9611937500001035, 1.5500000000000647, 0.05, +3.039943750000106, 1.5750000000000508, 0.05, +3.1199437500001097, 1.6000000000000725, 0.05, +3.201193750000086, 1.6249999999995257, 0.05, +3.283693750000061, 1.649999999999503, 0.05, +3.367443750000035, 1.6749999999994802, 0.05, +3.452443750000009, 1.6999999999994753, 0.05, +3.538693749999983, 1.7249999999994792, 0.05, +3.6261937499999553, 1.7499999999994476, 0.05, +3.7149437499999296, 1.774999999999487, 0.05, +3.8049437499999015, 1.7999999999994376, 0.05, +3.8961937499998727, 1.8249999999994237, 0.05, +3.9886937499998454, 1.8499999999994543, 0.05, +4.0824437499998165, 1.8749999999994138, 0.05, +4.177443749999787, 1.8999999999994088, 0.05, +4.273693749999758, 1.9249999999994216, 0.05, +4.371193749999729, 1.9499999999994166, 0.05, +4.469943749999698, 1.9749999999993761, 0.05, +4.569943749999667, 1.999999999999389, 0.05, +4.671193749999636, 2.024999999999384, 0.05, +4.773693749999604, 2.0499999999993612, 0.05, +4.877443749999573, 2.074999999999374, 0.05, +4.982443749999541, 2.0999999999993513, 0.05, +5.088693749999508, 2.1249999999993463, 0.05, +5.196193749999475, 2.1499999999993413, 0.05, +5.304943749999442, 2.1749999999993364, 0.05, +5.4149437499994075, 2.1999999999993136, 0.05, +5.526193749999374, 2.2249999999993264, 0.05, +5.63869374999934, 2.2499999999993214, 0.05, +5.752437499999305, 2.2748749999992945, 0.05, +5.86741249999927, 2.2994999999993126, 0.05, +5.983606249999234, 2.323874999999269, 0.05, +6.101006249999198, 2.3479999999992884, 0.05, +6.219599999999161, 2.371874999999264, 0.05, +6.339374999999188, 2.3955000000005278, 0.05, +6.460318749999235, 2.4188750000009485, 0.05, +6.582418749999283, 2.4420000000009523, 0.05, +6.70566249999933, 2.464875000000948, 0.05, +6.830037499999377, 2.487500000000935, 0.05, +6.955531249999427, 2.509875000001003, 0.05, +7.082131249999476, 2.5320000000009735, 0.05, +7.209824999999525, 2.553875000000989, 0.05, +7.338599999999575, 2.5755000000009964, 0.05, +7.468443749999627, 2.596875000001031, 0.05, +7.599343749999676, 2.618000000000986, 0.05, +7.731287499999726, 2.638875000001004, 0.05, +7.864262499999778, 2.6595000000010316, 0.05, +7.998256249999831, 2.6798750000010685, 0.05, +8.133256249999883, 2.700000000001044, 0.05, +8.269249999999936, 2.7198750000010463, 0.05, +8.406224999999989, 2.7395000000010583, 0.05, +8.544168750000042, 2.758875000001062, 0.05, +8.683068750000096, 2.778000000001093, 0.05, +8.82291250000015, 2.79687500000108, 0.05, +8.963687500000203, 2.815500000001059, 0.05, +9.10538125000026, 2.833875000001136, 0.05, +9.247981250000315, 2.852000000001098, 0.05, +9.391475000000371, 2.869875000001123, 0.05, +9.535850000000424, 2.8875000000010687, 0.05, +9.681093750000482, 2.904875000001148, 0.05, +9.827193750000541, 2.9220000000011837, 0.05, +9.974137500000596, 2.9388750000011044, 0.05, +10.121912500000654, 2.955500000001159, 0.05, +10.27050625000071, 2.9718750000010985, 0.05, +10.41990625000077, 2.9880000000012075, 0.05, +10.570100000000826, 3.0038750000011305, 0.05, +10.721075000000885, 3.0195000000011873, 0.05, +10.872818750000944, 3.034875000001165, 0.05, +11.025318750001002, 3.0500000000011696, 0.05, +11.178562500001062, 3.0648750000012015, 0.05, +11.332537500001123, 3.079500000001225, 0.05, +11.487231250001182, 3.0938750000011694, 0.05, +11.642631250001243, 3.108000000001212, 0.05, +11.798725000001305, 3.1218750000012463, 0.05, +11.955500000001365, 3.135500000001201, 0.05, +12.112943750001426, 3.148875000001219, 0.05, +12.271043750001486, 3.1620000000011927, 0.05, +12.429787500001547, 3.1748750000012294, 0.05, +12.589162500001486, 3.1874999999987708, 0.05, +12.749156250001326, 3.1998749999968013, 0.05, +12.909756250001164, 3.2119999999967774, 0.05, +13.070950000001002, 3.2238749999967453, 0.05, +13.232725000000844, 3.235499999996847, 0.05, +13.395068750000679, 3.2468749999966917, 0.05, +13.557968750000517, 3.257999999996777, 0.05, +13.721412500000353, 3.2688749999967115, 0.05, +13.885387500000192, 3.27949999999678, 0.05, +14.049881250000029, 3.2898749999967336, 0.05, +14.214881249999861, 3.2999999999966434, 0.05, +14.380374999999695, 3.309874999996687, 0.05, +14.546349999999528, 3.3194999999966512, 0.05, +14.712793749999362, 3.3288749999966782, 0.05, +14.879693749999191, 3.3379999999965904, 0.05, +15.047037499999027, 3.3468749999967073, 0.05, +15.21481249999886, 3.355499999996674, 0.05, +15.383006249998692, 3.363874999996632, 0.05, +15.551606249998523, 3.3719999999966177, 0.05, +15.720599999998354, 3.3798749999966304, 0.05, +15.889974999998188, 3.3874999999966704, 0.05, +16.05971874999802, 3.3948749999965955, 0.05, +16.22981874999785, 3.401999999996619, 0.05, +16.40026249999768, 3.4088749999965984, 0.05, +16.57103749999751, 3.4154999999965696, 0.05, +16.742131249997335, 3.4218749999965326, 0.05, +16.913531249997167, 3.4279999999966293, 0.05, +17.085224999996992, 3.4338749999965046, 0.05, +17.25719999999682, 3.4394999999965847, 0.05, +17.42944374999665, 3.4448749999965855, 0.05, +17.601943749996476, 3.449999999996507, 0.05, +17.774687499996297, 3.45487499999642, 0.05, +17.94766249999613, 3.4594999999966802, 0.05, +18.120856249995956, 3.4638749999965057, 0.05, +18.29425624999578, 3.467999999996465, 0.05, +18.467849999995607, 3.471874999996558, 0.05, +18.641624999995432, 3.475499999996501, 0.05, +18.815568749995258, 3.4788749999965063, 0.05, +18.989668749995086, 3.4819999999965745, 0.05, +19.163912499994908, 3.4848749999964213, 0.05, +19.338287499994735, 3.487499999996544, 0.05, +19.512781249994557, 3.489874999996445, 0.05, +19.687381249994385, 3.491999999996551, 0.05, +19.86207499999421, 3.493874999996507, 0.05, +20.036849999994036, 3.4954999999965253, 0.05, +20.211693749993863, 3.4968749999965354, 0.05, +20.386593749993686, 3.497999999996466, 0.05, +20.561537499993513, 3.4988749999965307, 0.05, +20.73651249999334, 3.499499999996516, 0.05, +20.911506249993163, 3.499874999996493, 0.05, +21.086506249992986, 3.4999999999964615, 0.05, +21.261506249992813, 3.4999999999965326, 0.05, +21.43650624999264, 3.4999999999965326, 0.05, +21.611506249992466, 3.4999999999965326, 0.05, +21.786506249992293, 3.4999999999965326, 0.05, +21.961506249992116, 3.4999999999964615, 0.05, +22.136506249991942, 3.4999999999965326, 0.05, +22.31150624999177, 3.4999999999965326, 0.05, +22.486506249991592, 3.4999999999964615, 0.05, +22.66150624999142, 3.4999999999965326, 0.05, +22.836506249991242, 3.4999999999964615, 0.05, +23.01150624999107, 3.4999999999965326, 0.05, +23.186506249990895, 3.4999999999965326, 0.05, +23.361506249990722, 3.4999999999965326, 0.05, +23.53650624999055, 3.4999999999965326, 0.05, +23.71150624999037, 3.4999999999964615, 0.05, +23.886506249990198, 3.4999999999965326, 0.05, +24.061506249990025, 3.4999999999965326, 0.05, +24.23650624998985, 3.4999999999965326, 0.05, +24.411506249989678, 3.4999999999965326, 0.05, +24.5865062499895, 3.4999999999964615, 0.05, +24.761506249989328, 3.4999999999965326, 0.05, +24.936506249989154, 3.4999999999965326, 0.05, +25.11150624998898, 3.4999999999965326, 0.05, +25.286506249988808, 3.4999999999965326, 0.05, +25.46150624998863, 3.4999999999964615, 0.05, +25.636506249988457, 3.4999999999965326, 0.05, +25.81150624998828, 3.4999999999964615, 0.05, +25.986506249988107, 3.4999999999965326, 0.05, +26.161506249987937, 3.4999999999966036, 0.05, +26.336506249987757, 3.4999999999963904, 0.05, +26.511506249987587, 3.4999999999966036, 0.05, +26.68650624998741, 3.4999999999964615, 0.05, +26.86150624998724, 3.4999999999966036, 0.05, +27.036506249987063, 3.4999999999964615, 0.05, +27.211506249986883, 3.4999999999963904, 0.05, +27.386506249986716, 3.4999999999966747, 0.05, +27.561506249986536, 3.4999999999963904, 0.05, +27.736506249986366, 3.4999999999966036, 0.05, +27.911506249986193, 3.4999999999965326, 0.05, +28.086506249986016, 3.4999999999964615, 0.05, +28.261506249985842, 3.4999999999965326, 0.05, +28.436506249985666, 3.4999999999964615, 0.05, +28.611506249985492, 3.4999999999965326, 0.05, +28.786506249985322, 3.4999999999966036, 0.05, +28.961506249985142, 3.4999999999963904, 0.05, +29.136506249984972, 3.4999999999966036, 0.05, +29.31150624998479, 3.4999999999963904, 0.05, +29.486506249984625, 3.4999999999966747, 0.05, +29.66150624998445, 3.4999999999964615, 0.05, +29.836506249984275, 3.4999999999965326, 0.05, +30.0115062499841, 3.4999999999965326, 0.05, +30.186506249983925, 3.4999999999964615, 0.05, +30.36150624998375, 3.4999999999965326, 0.05, +30.536506249983574, 3.4999999999964615, 0.05, +30.7115062499834, 3.4999999999965326, 0.05, +30.886506249983228, 3.4999999999965326, 0.05, +31.06150624998305, 3.4999999999964615, 0.05, +31.236506249982877, 3.4999999999965326, 0.05, +31.411506249982708, 3.4999999999966036, 0.05, +31.586506249982527, 3.4999999999963904, 0.05, +31.761506249982357, 3.4999999999966036, 0.05, +31.936506249982177, 3.4999999999963904, 0.05, +32.111506249982, 3.4999999999965326, 0.05, +32.28650624998182, 3.4999999999963904, 0.05, +32.461506249981646, 3.4999999999965326, 0.05, +32.636506249981466, 3.4999999999963904, 0.05, +32.81150624998129, 3.4999999999965326, 0.05, +32.98650624998111, 3.4999999999963904, 0.05, +33.16150624998094, 3.4999999999965326, 0.05, +33.33650624998076, 3.4999999999963904, 0.05, +33.51150624998058, 3.4999999999963904, 0.05, +33.6865062499804, 3.4999999999963904, 0.05, +33.861506249980216, 3.4999999999963904, 0.05, +34.03650624998004, 3.4999999999965326, 0.05, +34.21150624997986, 3.4999999999963904, 0.05, +34.38650624997969, 3.4999999999965326, 0.05, +34.56150624997951, 3.4999999999963904, 0.05, +34.736506249979335, 3.4999999999965326, 0.05, +34.911506249979155, 3.4999999999963904, 0.05, +35.08650624997898, 3.4999999999965326, 0.05, +35.2615062499788, 3.4999999999963904, 0.05, +35.43650624997863, 3.4999999999965326, 0.05, +35.61150624997844, 3.4999999999962483, 0.05, +35.78650624997827, 3.4999999999965326, 0.05, +35.961506249978086, 3.4999999999963904, 0.05, +36.13650624997791, 3.4999999999965326, 0.05, +36.31150624997773, 3.4999999999963904, 0.05, +36.48650624997755, 3.4999999999963904, 0.05, +36.66150624997737, 3.4999999999963904, 0.05, +36.83650624997719, 3.4999999999963904, 0.05, +37.01150624997702, 3.4999999999965326, 0.05, +37.18650624997684, 3.4999999999963904, 0.05, +37.361506249976664, 3.4999999999965326, 0.05, +37.53650624997648, 3.4999999999963904, 0.05, +37.71150624997631, 3.4999999999965326, 0.05, +37.88650624997613, 3.4999999999963904, 0.05, +38.061506249975956, 3.4999999999965326, 0.05, +38.236506249975776, 3.4999999999963904, 0.05, +38.4115062499756, 3.4999999999965326, 0.05, +38.58650624997542, 3.4999999999963904, 0.05, +38.76150624997524, 3.4999999999963904, 0.05, +38.93650624997507, 3.4999999999965326, 0.05, +39.11150624997489, 3.4999999999963904, 0.05, +39.28650624997471, 3.4999999999963904, 0.05, +39.46150624997453, 3.4999999999965326, 0.05, +39.63650624997435, 3.4999999999963904, 0.05, +39.81150624997417, 3.4999999999963904, 0.05, +39.98650624997399, 3.4999999999963904, 0.05, +40.16150624997381, 3.4999999999963904, 0.05, +40.33650624997364, 3.4999999999965326, 0.05, +40.51150624997346, 3.4999999999963904, 0.05, +40.686506249973284, 3.4999999999965326, 0.05, +40.861506249973104, 3.4999999999963904, 0.05, +41.03650624997293, 3.4999999999965326, 0.05, +41.21150624997275, 3.4999999999963904, 0.05, +41.38650624997258, 3.4999999999965326, 0.05, +41.561506249972396, 3.4999999999963904, 0.05, +41.73650624997222, 3.4999999999965326, 0.05, +41.91150624997204, 3.4999999999963904, 0.05, +42.08650624997186, 3.4999999999963904, 0.05, +42.26150624997168, 3.4999999999963904, 0.05, +42.43650624997151, 3.4999999999965326, 0.05, +42.61150624997133, 3.4999999999963904, 0.05, +42.78650624997115, 3.4999999999963904, 0.05, +42.961506249970974, 3.4999999999965326, 0.05, +43.13650624997079, 3.4999999999963904, 0.05, +43.31150624997062, 3.4999999999965326, 0.05, +43.48650624997044, 3.4999999999963904, 0.05, +43.661506249970266, 3.4999999999965326, 0.05, +43.836506249970085, 3.4999999999963904, 0.05, +44.01150624996991, 3.4999999999965326, 0.05, +44.18650624996973, 3.4999999999963904, 0.05, +44.36150624996955, 3.4999999999963904, 0.05, +44.53650624996937, 3.4999999999963904, 0.05, +44.71150624996919, 3.4999999999963904, 0.05, +44.88650624996902, 3.4999999999965326, 0.05, +45.061506249968836, 3.4999999999963904, 0.05, +45.236506249968656, 3.4999999999963904, 0.05, +45.41150624996848, 3.4999999999965326, 0.05, +45.5865062499683, 3.4999999999963904, 0.05, +45.76150624996813, 3.4999999999965326, 0.05, +45.93650624996795, 3.4999999999963904, 0.05, +46.11150624996777, 3.4999999999963904, 0.05, +46.286506249967594, 3.4999999999965326, 0.05, +46.461506249967414, 3.4999999999963904, 0.05, +46.63650624996724, 3.4999999999965326, 0.05, +46.81150624996706, 3.4999999999963904, 0.05, +46.98650624996689, 3.4999999999965326, 0.05, +47.161506249966706, 3.4999999999963904, 0.05, +47.336506249966526, 3.4999999999963904, 0.05, +47.511506249966345, 3.4999999999963904, 0.05, +47.68650624996617, 3.4999999999965326, 0.05, +47.86150624996599, 3.4999999999963904, 0.05, +48.03650624996582, 3.4999999999965326, 0.05, +48.21150624996564, 3.4999999999963904, 0.05, +48.386506249965464, 3.4999999999965326, 0.05, +48.561506249965284, 3.4999999999963904, 0.05, +48.7365062499651, 3.4999999999963904, 0.05, +48.91150624996492, 3.4999999999963904, 0.05, +49.08650624996474, 3.4999999999963904, 0.05, +49.26150624996457, 3.4999999999965326, 0.05, +49.43650624996439, 3.4999999999963904, 0.05, +49.611506249964215, 3.4999999999965326, 0.05, +49.786506249964035, 3.4999999999963904, 0.05, +49.96150624996386, 3.4999999999965326, 0.05, +50.13650624996444, 3.500000000011596, 0.05, +50.31150624996525, 3.5000000000161435, 0.05, +50.48650624996604, 3.5000000000158593, 0.05, +50.66150624996683, 3.500000000015717, 0.05, +50.83650624996762, 3.5000000000158593, 0.05, +51.01150624996841, 3.5000000000158593, 0.05, +51.18650624996921, 3.5000000000160014, 0.05, +51.36150624996999, 3.500000000015575, 0.05, +51.5365062499708, 3.5000000000161435, 0.05, +51.711506249971585, 3.500000000015717, 0.05, +51.88650624997239, 3.5000000000161435, 0.05, +52.06150624997317, 3.500000000015575, 0.05, +52.23650624997397, 3.5000000000160014, 0.05, +52.411506249974764, 3.5000000000158593, 0.05, +52.58650624997556, 3.5000000000158593, 0.05, +52.76150624997634, 3.500000000015717, 0.05, +52.93650624997715, 3.5000000000161435, 0.05, +53.111506249977936, 3.500000000015717, 0.05, +53.28650624997873, 3.5000000000158593, 0.05, +53.46150624997952, 3.5000000000158593, 0.05, +53.63650624998032, 3.5000000000160014, 0.05, +53.811506249981115, 3.5000000000158593, 0.05, +53.98650624998191, 3.5000000000158593, 0.05, +54.16150624998269, 3.500000000015717, 0.05, +54.3365062499835, 3.5000000000161435, 0.05, +54.51150624998429, 3.5000000000158593, 0.05, +54.68650624998508, 3.500000000015717, 0.05, +54.86150624998587, 3.5000000000158593, 0.05, +55.03650624998667, 3.5000000000160014, 0.05, +55.211506249987465, 3.5000000000158593, 0.05, +55.386506249988244, 3.500000000015575, 0.05, +55.56150624998905, 3.5000000000161435, 0.05, +55.73650624998984, 3.500000000015717, 0.05, +55.91150624999063, 3.5000000000158593, 0.05, +56.08650624999142, 3.5000000000158593, 0.05, +56.26150624999222, 3.5000000000160014, 0.05, +56.436506249993016, 3.5000000000158593, 0.05, +56.61150624999381, 3.5000000000158593, 0.05, +56.786506249994595, 3.500000000015717, 0.05, +56.9615062499954, 3.5000000000161435, 0.05, +57.13650624999619, 3.500000000015717, 0.05, +57.31150624999698, 3.5000000000158593, 0.05, +57.486506249997774, 3.5000000000158593, 0.05, +57.661506249998574, 3.5000000000160014, 0.05, +57.83650624999937, 3.5000000000158593, 0.05, +58.01150625000016, 3.5000000000158593, 0.05, +58.18650625000095, 3.5000000000158593, 0.05, +58.36150625000175, 3.5000000000160014, 0.05, +58.53650625000253, 3.500000000015575, 0.05, +58.71150625000333, 3.5000000000160014, 0.05, +58.886506250004125, 3.5000000000158593, 0.05, +59.061506250004925, 3.5000000000160014, 0.05, +59.23650625000571, 3.500000000015717, 0.05, +59.41150625000651, 3.5000000000160014, 0.05, +59.586506250007304, 3.5000000000158593, 0.05, +59.76150625000809, 3.500000000015717, 0.05, +59.93650625000888, 3.5000000000158593, 0.05, +60.111506250009676, 3.5000000000158593, 0.05, +60.286506250010476, 3.5000000000160014, 0.05, +60.46150625001127, 3.5000000000158593, 0.05, +60.63650625001206, 3.5000000000158593, 0.05, +60.811506250012854, 3.5000000000158593, 0.05, +60.986506250013655, 3.5000000000160014, 0.05, +61.16150625001445, 3.5000000000158593, 0.05, +61.33650625001523, 3.500000000015717, 0.05, +61.511506250016026, 3.5000000000158593, 0.05, +61.686506250016826, 3.5000000000160014, 0.05, +61.86150625001761, 3.500000000015717, 0.05, +62.03650625001841, 3.5000000000160014, 0.05, +62.211506250019205, 3.5000000000158593, 0.05, +62.386506250020005, 3.5000000000160014, 0.05, +62.561506250020784, 3.500000000015575, 0.05, +62.736506250021584, 3.5000000000160014, 0.05, +62.91150625002238, 3.5000000000158593, 0.05, +63.08650625002318, 3.5000000000160014, 0.05, +63.26150625002396, 3.500000000015717, 0.05, +63.43650625002476, 3.5000000000160014, 0.05, +63.611506250025556, 3.5000000000158593, 0.05, +63.786506250026356, 3.5000000000160014, 0.05, +63.961506250027135, 3.500000000015575, 0.05, +64.13650625002792, 3.500000000015717, 0.05, +64.31150625002873, 3.5000000000161435, 0.05, +64.48650625002952, 3.5000000000158593, 0.05, +64.66150625003031, 3.5000000000158593, 0.05, +64.8365062500311, 3.5000000000158593, 0.05, +65.0115062500319, 3.5000000000158593, 0.05, +65.18650625003269, 3.5000000000158593, 0.05, +65.36150625003349, 3.5000000000158593, 0.05, +65.53650625003428, 3.5000000000158593, 0.05, +65.71150625003509, 3.5000000000161435, 0.05, +65.88650625003586, 3.500000000015575, 0.05, +66.06150625003666, 3.5000000000158593, 0.05, +66.23650625003745, 3.5000000000158593, 0.05, +66.41150625003826, 3.5000000000161435, 0.05, +66.58650625003904, 3.500000000015575, 0.05, +66.76150625003984, 3.5000000000161435, 0.05, +66.93650625004064, 3.5000000000158593, 0.05, +67.11150625004143, 3.5000000000158593, 0.05, +67.28650625004221, 3.500000000015575, 0.05, +67.46150625004302, 3.5000000000161435, 0.05, +67.63650625004381, 3.5000000000158593, 0.05, +67.8115062500446, 3.5000000000158593, 0.05, +67.9865062500454, 3.5000000000158593, 0.05, +68.16150625004619, 3.5000000000158593, 0.05, +68.33650625004698, 3.5000000000158593, 0.05, +68.51150625004776, 3.500000000015575, 0.05, +68.68650625004857, 3.5000000000161435, 0.05, +68.86150625004936, 3.5000000000158593, 0.05, +69.03650625005015, 3.5000000000158593, 0.05, +69.21150625005095, 3.5000000000158593, 0.05, +69.38650625005174, 3.5000000000158593, 0.05, +69.56150625005253, 3.5000000000158593, 0.05, +69.73650625005334, 3.5000000000161435, 0.05, +69.91150625005412, 3.500000000015575, 0.05, +70.08650625005491, 3.5000000000158593, 0.05, +70.2615062500557, 3.5000000000158593, 0.05, +70.43650625005651, 3.5000000000161435, 0.05, +70.61150625005729, 3.500000000015575, 0.05, +70.7865062500581, 3.5000000000161435, 0.05, +70.96150625005889, 3.5000000000158593, 0.05, +71.13650625005968, 3.5000000000158593, 0.05, +71.31150625006046, 3.500000000015575, 0.05, +71.48650625006127, 3.5000000000161435, 0.05, +71.66150625006206, 3.5000000000158593, 0.05, +71.83650625006285, 3.5000000000158593, 0.05, +72.01150625006365, 3.5000000000158593, 0.05, +72.18650625006444, 3.5000000000158593, 0.05, +72.36150625006523, 3.5000000000158593, 0.05, +72.53650625006603, 3.5000000000158593, 0.05, +72.71150625006682, 3.5000000000158593, 0.05, +72.88650625006761, 3.5000000000158593, 0.05, +73.0615062500684, 3.5000000000158593, 0.05, +73.2365062500692, 3.5000000000158593, 0.05, +73.41150625006999, 3.5000000000158593, 0.05, +73.58650625007078, 3.5000000000158593, 0.05, +73.76150625007159, 3.5000000000161435, 0.05, +73.93650625007237, 3.500000000015575, 0.05, +74.11150625007318, 3.5000000000161435, 0.05, +74.28650625007396, 3.500000000015575, 0.05, +74.46150625007475, 3.5000000000158593, 0.05, +74.63650625007554, 3.5000000000158593, 0.05, +74.81150625007635, 3.5000000000161435, 0.05, +74.98650625007714, 3.5000000000158593, 0.05, +75.16150625007793, 3.5000000000158593, 0.05, +75.33650625007871, 3.500000000015575, 0.05, +75.51150625007952, 3.5000000000161435, 0.05, +75.68650625008031, 3.5000000000158593, 0.05, +75.8615062500811, 3.5000000000158593, 0.05, +76.0365062500819, 3.5000000000158593, 0.05, +76.21150625008269, 3.5000000000158593, 0.05, +76.38650625008349, 3.5000000000158593, 0.05, +76.56150625008428, 3.5000000000158593, 0.05, +76.73650625008507, 3.5000000000158593, 0.05, +76.91150625008588, 3.5000000000161435, 0.05, +77.08650625008667, 3.5000000000158593, 0.05, +77.26150625008745, 3.500000000015575, 0.05, +77.43650625008824, 3.5000000000158593, 0.05, +77.61150625008904, 3.5000000000158593, 0.05, +77.78650625008983, 3.5000000000158593, 0.05, +77.96150625009062, 3.5000000000158593, 0.05, +78.13650625009143, 3.5000000000161435, 0.05, +78.31150625009221, 3.500000000015575, 0.05, +78.486506250093, 3.5000000000158593, 0.05, +78.6615062500938, 3.5000000000158593, 0.05, +78.8365062500946, 3.5000000000161435, 0.05, +79.0115062500954, 3.5000000000158593, 0.05, +79.18650271438189, 3.499929285729877, 0.05, +79.36148585723981, 3.499662857158512, 0.05, +79.53644317866915, 3.4991464285866414, 0.05, +79.71136217866989, 3.4983800000148335, 0.05, +79.88623035724206, 3.4973635714433726, 0.05, +80.06103521438564, 3.4960971428716903, 0.05, +80.23576425010062, 3.4945807142995022, 0.05, +80.41040496438703, 3.4928142857282296, 0.05, +80.58494485724485, 3.4907978571564513, 0.05, +80.75937142867409, 3.4885314285847357, 0.05, +80.93367217867474, 3.486015000013083, 0.05, +81.1078346072468, 3.4832485714412087, 0.05, +81.28184621439027, 3.480232142869397, 0.05, +81.45569450010517, 3.4769657142979327, 0.05, +81.62936696439148, 3.4734492857262467, 0.05, +81.80285110724921, 3.4696828571546234, 0.05, +81.97613442867834, 3.4656664285824945, 0.05, +82.14920442867889, 3.461400000010997, 0.05, +82.32204860725085, 3.4568835714392776, 0.05, +82.49465446439422, 3.452117142867337, 0.05, +82.667009500109, 3.4471007142957433, 0.05, +82.83910121439521, 3.4418342857242124, 0.05, +83.01091710725282, 3.4363178571521757, 0.05, +83.18244467868185, 3.430551428580486, 0.05, +83.35367142868229, 3.4245350000088592, 0.05, +83.52458485725415, 3.418268571437295, 0.05, +83.69517246439743, 3.4117521428655095, 0.05, +83.8654217501121, 3.4049857142935025, 0.05, +84.0353202143982, 3.3979692857218424, 0.05, +84.20485535725572, 3.3907028571505293, 0.05, +84.37401467868465, 3.3831864285784263, 0.05, +84.54278567868498, 3.3754200000066703, 0.05, +84.71115585725673, 3.367403571434977, 0.05, +84.87911271439988, 3.3591371428630623, 0.05, +85.04664375011446, 3.3506207142914946, 0.05, +85.21373646440045, 3.3418542857199895, 0.05, +85.38037835725785, 3.332837857147979, 0.05, +85.54655692868667, 3.323571428576315, 0.05, +85.71225967868689, 3.31405500000443, 0.05, +85.87747410725854, 3.304288571432892, 0.05, +86.0421877144016, 3.2942721428614163, 0.05, +86.20638800011606, 3.284005714289151, 0.05, +86.37006246440194, 3.273489285717517, 0.05, +86.53319860725924, 3.2627228571459455, 0.05, +86.69578392868793, 3.2517064285738684, 0.05, +86.85780592868807, 3.2404400000027067, 0.05, +87.01925210725959, 3.228923571430471, 0.05, +87.18010996440252, 3.217157142858582, 0.05, +87.34036700011688, 3.2051407142873245, 0.05, +87.50001071440265, 3.192874285715277, 0.05, +87.65902860725983, 3.1803578571435764, 0.05, +87.81740817868842, 3.1675914285719386, 0.05, +87.97513692868841, 3.154574999999795, 0.05, +88.13220235725981, 3.1413085714279987, 0.05, +88.28859196440264, 3.127792142856549, 0.05, +88.44429325011687, 3.114025714284594, 0.05, +88.59929371440252, 3.1000092857129857, 0.05, +88.75358085725959, 3.0857428571414403, 0.05, +88.90714217868806, 3.071226428569389, 0.05, +89.05996517868793, 3.0564599999974007, 0.05, +89.21203735725923, 3.0414435714260435, 0.05, +89.36334621440194, 3.0261771428541806, 0.05, +89.51387925011606, 3.0106607142823805, 0.05, +89.6636239644016, 2.994894285710643, 0.05, +89.81256785725853, 2.9788778571386842, 0.05, +89.96069842868688, 2.9626114285670724, 0.05, +90.10800317868664, 2.946094999995239, 0.05, +90.25446960725782, 2.9293285714234685, 0.05, +90.4000852144004, 2.9123121428517607, 0.05, +90.5448375001144, 2.8950457142798314, 0.05, +90.6887139643998, 2.877529285707965, 0.05, +90.83170210725662, 2.8597628571364453, 0.05, +90.97378942868484, 2.84174642856442, 0.05, +91.11496342868449, 2.823479999993026, 0.05, +91.25521160725553, 2.804963571420842, 0.05, +91.39452146439798, 2.786197142849005, 0.05, +91.53288050011184, 2.767180714277231, 0.05, +91.67027621439713, 2.7479142857058036, 0.05, +91.80669610725381, 2.7283978571335865, 0.05, +91.94212767868193, 2.708631428562285, 0.05, +92.07655842868144, 2.688614999990193, 0.05, +92.20997585725235, 2.6683485714181643, 0.05, +92.34236746439468, 2.6478321428467666, 0.05, +92.47372075010843, 2.6270657142748632, 0.05, +92.60402321439358, 2.6060492857030226, 0.05, +92.73326235725014, 2.584782857131245, 0.05, +92.8614256786781, 2.5632664285592455, 0.05, +92.98850067867748, 2.541499999987593, 0.05, +93.11447485724828, 2.5194835714160035, 0.05, +93.23933571439046, 2.497217142843624, 0.05, +93.36307075010409, 2.474700714272444, 0.05, +93.4856674643891, 2.4519342857001902, 0.05, +93.60711335724552, 2.4289178571285674, 0.05, +93.72739592867336, 2.405651428556723, 0.05, +93.84650267867262, 2.382134999985226, 0.05, +93.96442110724327, 2.3583685714129388, 0.05, +94.08113871438535, 2.334352142841567, 0.05, +94.1966430000988, 2.310085714269121, 0.05, +94.3109214643837, 2.285569285697875, 0.05, +94.42396160723999, 2.2608028571258387, 0.05, +94.535754464382, 2.235857142840132, 0.05, +94.64629732152399, 2.2108571428398704, 0.05, +94.75559017866597, 2.185857142839609, 0.05, +94.86363303580794, 2.1608571428393475, 0.05, +94.97042589294992, 2.1358571428396544, 0.05, +95.07596875009187, 2.1108571428391087, 0.05, +95.18026160723385, 2.0858571428394157, 0.05, +95.2833044643758, 2.060857142839154, 0.05, +95.38509732151776, 2.035857142839177, 0.05, +95.48564017865971, 2.0108571428389155, 0.05, +95.58493303580164, 1.985857142838654, 0.05, +95.68297589294359, 1.960857142838961, 0.05, +95.77976875008552, 1.9358571428386995, 0.05, +95.87531160722743, 1.9108571428381538, 0.05, +95.96960446436934, 1.8858571428381765, 0.05, +96.06264732151125, 1.8608571428381993, 0.05, +96.15444017865316, 1.835857142838222, 0.05, +96.24498303579506, 1.8108571428379605, 0.05, +96.33427589293696, 1.7858571428379832, 0.05, +96.42231875007884, 1.7608571428377218, 0.05, +96.50911160722072, 1.7358571428374603, 0.05, +96.59465446436259, 1.710857142837483, 0.05, +96.67894732150448, 1.68585714283779, 0.05, +96.76199017864634, 1.6608571428372443, 0.05, +96.8437830357882, 1.635857142837267, 0.05, +96.92432589293007, 1.6108571428372898, 0.05, +97.00361875007192, 1.5858571428370283, 0.05, +97.08166160721376, 1.5608571428367668, 0.05, +97.15845446435559, 1.5358571428365053, 0.05, +97.23399732149741, 1.510857142836528, 0.05, +97.30829017863925, 1.485857142836835, 0.05, +97.38133303578107, 1.4608571428362893, 0.05, +97.45312589292288, 1.435857142836312, 0.05, +97.52366875006469, 1.4108571428360506, 0.05, +97.59296160720649, 1.3858571428360733, 0.05, +97.6610044643483, 1.360857142836096, 0.05, +97.7277973214901, 1.3358571428361188, 0.05, +97.79334017863188, 1.310857142835573, 0.05, +97.85763303577366, 1.2858571428355958, 0.05, +97.92067589291544, 1.2608571428356186, 0.05, +97.9824722857715, 1.2359278571210552, 0.05, +98.04303200005613, 1.2111942856927271, 0.05, +98.10236753576935, 1.1867107142643363, 0.05, +98.16049139291115, 1.1624771428361669, 0.05, +98.21741607148155, 1.1384935714079347, 0.05, +98.2731540714805, 1.1147599999790714, 0.05, +98.32771789290805, 1.091276428550998, 0.05, +98.38112003576417, 1.0680428571222933, 0.05, +98.43337300004886, 1.0450592856938101, 0.05, +98.48448928576215, 1.0223257142658326, 0.05, +98.53448139290401, 0.999842142837224, 0.05, +98.58336182147445, 0.9776085714088367, 0.05, +98.63114307147347, 0.9556249999803867, 0.05, +98.67783764290105, 0.9338914285515898, 0.05, +98.72345803575725, 0.912407857123867, 0.05, +98.76801675004201, 0.8911742856952287, 0.05, +98.81152628575533, 0.8701907142665277, 0.05, +98.85399914289727, 0.8494571428386166, 0.05, +98.89544782146777, 0.8289735714100743, 0.05, +98.93588482146686, 0.8087399999817535, 0.05, +98.97532264289453, 0.7887564285533699, 0.05, +99.01377378575076, 0.7690228571246394, 0.05, +99.05125075003558, 0.7495392856964145, 0.05, +99.08776603574898, 0.7303057142681268, 0.05, +99.12333214289096, 0.7113221428394922, 0.05, +99.15796157146153, 0.6925885714113633, 0.05, +99.19166682146069, 0.6741049999831716, 0.05, +99.22446039288839, 0.6558714285540646, 0.05, +99.25635478574469, 0.6378878571260316, 0.05, +99.2873625000296, 0.6201542856982201, 0.05, +99.31749603574306, 0.6026707142692089, 0.05, +99.34676789288511, 0.5854371428409877, 0.05, +99.37519057145576, 0.5684535714129879, 0.05, +99.40277657145496, 0.5517199999840727, 0.05, +99.42953839288278, 0.5352364285562317, 0.05, +99.45548853573915, 0.5190028571274752, 0.05, +99.48063950002411, 0.5030192856992244, 0.05, +99.50500378573764, 0.4872857142706266, 0.05, +99.52859389287977, 0.4718021428425345, 0.05, +99.55142232145049, 0.4565685714143797, 0.05, +99.57350157144975, 0.4415849999853094, 0.05, +99.59484414287763, 0.4268514285575975, 0.05, +99.61546253573407, 0.41236785712868596, 0.05, +99.63536925001911, 0.3981342857008485, 0.05, +99.65457678573271, 0.3841507142720957, 0.05, +99.67309764287491, 0.3704171428438485, 0.05, +99.69094432144567, 0.3569335714152544, 0.05, +99.70812932144504, 0.34369999998745016, 0.05, +99.72466514287298, 0.3307164285587305, 0.05, +99.7405642857295, 0.31798285713051655, 0.05, +99.75583925001462, 0.30549928570223983, 0.05, +99.7705025357283, 0.29326571427361614, 0.05, +99.78456664287057, 0.28128214284549813, 0.05, +99.79804407144144, 0.26954857141731736, 0.05, +99.81094732144088, 0.2580649999887896, 0.05, +99.8232888928689, 0.24683142856048335, 0.05, +99.83508128572551, 0.2358478571321143, 0.05, +99.84633700001068, 0.2251142857033983, 0.05, +99.85706853572445, 0.2146307142754722, 0.05, +99.8672883928668, 0.2043971428469149, 0.05, +99.87700907143773, 0.19441357141857907, 0.05, +99.88624307143724, 0.18467999999018048, 0.05, +99.89500289286534, 0.17519642856200335, 0.05, +99.90330103572202, 0.16596285713376346, 0.05, +99.91115000000728, 0.1569792857051766, 0.05, +99.91856228572112, 0.1482457142768112, 0.05, +99.92555039286357, 0.1397621428489515, 0.05, +99.93212682143458, 0.13152857142017638, 0.05, +99.93830407143417, 0.12354499999190693, 0.05, +99.94409464286234, 0.11581142856329052, 0.05, +99.94951103571913, 0.10832785713574822, 0.05, +99.95456575000446, 0.10109428570672208, 0.05, +99.95927128571839, 0.09411071427848583, 0.05, +99.9636401428609, 0.08737714285018683, 0.05, +99.967684821432, 0.08089357142210929, 0.05, +99.97141782143169, 0.07465999999368478, 0.05, +99.97485164285995, 0.06867642856519751, 0.05, +99.97799878571679, 0.0629428571369317, 0.05, +99.98087175000222, 0.05745928570860315, 0.05, +99.98348303571623, 0.05222571428021183, 0.05, +99.98584514285885, 0.0472421428523262, 0.05, +99.98797057143003, 0.042508571423525154, 0.05, +99.9898718214298, 0.03802499999551401, 0.05, +99.99156139285816, 0.03379142856715589, 0.05, +99.99305178571511, 0.029807857139019234, 0.05, +99.99435550000061, 0.02607428570996717, 0.05, +99.99548503571472, 0.02259071428227344, 0.05, +99.9964528928574, 0.0193571428536643, 0.05, +99.99727157142868, 0.01637357142556084, 0.05, +99.99795357142855, 0.013639999997394625, 0.05, +99.998511392857, 0.011156428568881438, 0.05, +99.99895753571403, 0.008922857140589713, 0.05, +99.99930449999962, 0.006939285711951015, 0.05, +99.99956478571383, 0.005205714284102214, 0.05, +99.9997508928566, 0.0037221428553380065, 0.05, +99.99987532142796, 0.002488571427363695, 0.05, +99.99995057142792, 0.0015049999990424112, 0.05, +99.99998914285645, 7.714285706583723E-4, 0.05, +100.00000353571357, 2.878571424957954E-4, 0.05, +100.00000624999929, 5.428571427046336E-5, 0.05, +100.00000624999929, 0.0, 0.05, From c716685fa66e2653c40a08e7454e4dc347eeabb9 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Tue, 21 Feb 2017 20:20:19 -0500 Subject: [PATCH 07/66] Start tuning for curved path to right peg --- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../talonCluster/commands/ExecuteProfile.java | 3 + src/main/resources/leftProfile.csv | 2047 ++++++++--------- src/main/resources/leftProfile_dumb.csv | 813 +++++++ src/main/resources/map.cfg | 8 +- src/main/resources/rightProfile.csv | 2047 ++++++++--------- src/main/resources/rightProfile_dumb.csv | 813 +++++++ 8 files changed, 3436 insertions(+), 2297 deletions(-) create mode 100644 src/main/resources/leftProfile_dumb.csv create mode 100644 src/main/resources/rightProfile_dumb.csv diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 12f5e648374b5c34afcab4aef2987d5fff210f10..17acce555f5b888152000977618e8fecbc352bed 100644 GIT binary patch delta 26 gcmX@GocX|V<_*z@m@{)jH^&_k5(F_O7hm=T0Gs0r8UO$Q delta 26 gcmX@GocX|V<_*z@m>VYsZ;m@8BnV Date: Thu, 23 Feb 2017 18:10:33 -0500 Subject: [PATCH 08/66] Started adding comments to code. --- .../team449/robot/vision/CameraSubsystem.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index 83fdb45b..b2f55884 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -17,10 +17,18 @@ */ public class CameraSubsystem extends MappedSubsystem { + /** + * @param server Hosts the video to view on SmartDashboard + * @param cameras Contains list of cameras used on robot + * @param camNum Contains number of cameras (total) + */ public MjpegServer server; public List cameras; public int camNum; + /** + * Instantiates a new CameraMap + */ public static CameraMap.Camera map; public CameraSubsystem(CameraMap.Camera map){ @@ -28,9 +36,15 @@ public CameraSubsystem(CameraMap.Camera map){ this.map = map; System.out.println("CameraSubsystem construct start"); System.out.println("Set URL of MJPGServer to \"http://roboRIO-449-frc.local:"+map.getServer().getPort()+"/stream.mjpg\""); + /** + * + */ server = new MjpegServer(map.getServer().getName(),map.getServer().getPort()); cameras = new ArrayList<>(); - for (UsbCameraMap.UsbCamera camera : map.getUSBCameraList()){ + /** + * Searches for each camera, then places them into camera list. + */ + for (UsbCameraMap.UsbCamera camera : map.getUSBCameraList()) { UsbCamera tmp = new UsbCamera(camera.getName(), camera.getDev()); tmp.setResolution(camera.getWidth(), camera.getHeight()); tmp.setFPS(camera.getFps()); @@ -42,6 +56,7 @@ public CameraSubsystem(CameraMap.Camera map){ System.out.println("CameraSubsystem construct end"); } + @Override protected void initDefaultCommand () { //Do nothing! From d16e95c44c8b4b1b15d2df6825d2c1a9f5b53353 Mon Sep 17 00:00:00 2001 From: Bryan Li Date: Fri, 24 Feb 2017 18:05:37 -0500 Subject: [PATCH 09/66] Added CameraSubsystem comments. --- .../usfirst/frc/team449/robot/vision/CameraSubsystem.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index b2f55884..eb89c0e5 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -27,7 +27,10 @@ public class CameraSubsystem extends MappedSubsystem { public int camNum; /** - * Instantiates a new CameraMap + * Instantiates a new CameraSubsystem with a + * CameraMap + * + * @param map constants map */ public static CameraMap.Camera map; From d00fb9684a46d90ba11b09921fd4c159736cca77 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Fri, 24 Feb 2017 18:33:24 -0500 Subject: [PATCH 10/66] Comment Robot.java. --- .../org/usfirst/frc/team449/robot/Robot.java | 57 +++++++++++++++---- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index a49a2748..6e8ef158 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -18,78 +18,99 @@ import java.io.IOException; /** - * Created by BlairRobot on 2017-01-08. + * The main class of the robot, constructs all the subsystems and initializes default commands. */ public class Robot extends IterativeRobot { + //The shooter subsystem (flywheel only) public static SingleFlywheelShooter singleFlywheelShooterSubsystem; + //The intake subsystem (intake motors and pistons) public static Intake2017 intakeSubsystem; + //The climber public static ClimberSubsystem climberSubsystem; + //The pneumatics (maybe doesn't work?) public static PneumaticsSubsystem pneumaticsSubsystem; + //The drive public static TalonClusterDrive driveSubsystem; + //OI, using an Xbox-style controller and arcade drive. public static OI2017ArcadeGamepad oiSubsystem; + //The cameras on the robot and the code to stream them to SmartDashboard (NOT computer vision!) public static CameraSubsystem cameraSubsystem; + //The auger used to feed balls into the shooter. public static FeederSubsystem feederSubsystem; - private static maps.org.usfirst.frc.team449.robot.Robot2017Map.Robot2017 cfg; + //The object constructed directly from map.cfg. + private static Robot2017Map.Robot2017 cfg; + /** + * This is the method that runs when you turn on the robot. + */ public void robotInit() { - System.out.println("Started robotInit"); + System.out.println("Started robotInit."); + try { + //Try to construct map from the cfg file //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", - //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map_only_drive.cfg", Robot2017Map.Robot2017.newBuilder()); } catch (IOException e) { + //This is either the map file not being in the file system OR it being improperly formatted. System.out.println("Config file is bad/nonexistent!"); e.printStackTrace(); } + //Construct the OI (has to be done first because other subsytems take the OI as an argument.) oiSubsystem = new OI2017ArcadeGamepad(cfg.getArcadeOi()); System.out.println("Constructed OI"); + //Construct the drive (not in a if block because you kind of need it.) driveSubsystem = new TalonClusterDrive(cfg.getDrive(), oiSubsystem); System.out.println("Constructed Drive"); + //Construct camera if it's in the map. if (cfg.hasCamera()) { cameraSubsystem = new CameraSubsystem(cfg.getCamera()); } + //Construct climber if it's in the map. if (cfg.hasClimber()) { climberSubsystem = new ClimberSubsystem(cfg.getClimber()); } + //Construct shooter if it's in the map. if (cfg.hasShooter()) { singleFlywheelShooterSubsystem = new SingleFlywheelShooter(cfg.getShooter()); System.out.println("Constructed SingleFlywheelShooter"); } -// pneumaticsSubsystem = new PneumaticsSubsystem(cfg.getPneumatics()); -// System.out.println("Constructed PneumaticsSubsystem"); - + //Construct pneumatics if it's in the map. if (cfg.hasPneumatics()) { pneumaticsSubsystem = new PneumaticsSubsystem(cfg.getPneumatics()); System.out.println("Constructed PneumaticsSubsystem"); } + //Construct intake if it's in the map. if (cfg.hasIntake()) { intakeSubsystem = new Intake2017(cfg.getIntake()); } + //Construct feeder if it's in the map. if (cfg.hasFeeder()){ feederSubsystem = new FeederSubsystem(cfg.getFeeder()); } + //Map the buttons (has to be done last because all the subsystems need to have been instantiated.) oiSubsystem.mapButtons(); System.out.println("Mapped buttons"); + //Activate the compressor if its module number is in the map. if (cfg.hasModule()) { Compressor compressor = new Compressor(cfg.getModule()); compressor.setClosedLoopControl(true); @@ -97,32 +118,46 @@ public void robotInit() { } } + /** + * Run when we first enable in teleop. + */ @Override public void teleopInit() { -// if (driveSubsystem.shifter != null) { -// Scheduler.getInstance().add(new SwitchToHighGear(driveSubsystem)); -// } - + //Stop the drive for safety reasons driveSubsystem.setDefaultThrottle(0, 0); + //Switch to low gear if we have gears if (driveSubsystem.shifter != null){ Scheduler.getInstance().add(new SwitchToLowGear(driveSubsystem)); } } + /** + * Run every tick in teleop. + */ @Override public void teleopPeriodic() { + //Run all commands. This is a WPILib thing you don't really have to worry about. Scheduler.getInstance().run(); } + /** + * Run when we first enable in autonomous + */ @Override public void autonomousInit() { + //Set throttle to 0 for safety reasons driveSubsystem.setDefaultThrottle(0, 0); + //Run a PID test (drive forward for a bit then stop). Scheduler.getInstance().add(new PIDTest(driveSubsystem)); } + /** + * Runs every tick in autonomous. + */ @Override public void autonomousPeriodic() { + //Run all commands. This is a WPILib thing you don't really have to worry about. Scheduler.getInstance().run(); } } \ No newline at end of file From 0de8484592ac54c5a62491b2d9794e86e18ad25b Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 11:48:26 -0500 Subject: [PATCH 11/66] Refactor and comment UnitlessCANTalonSRX to RotPerSecCANTalonSRX. --- ...alonSRX.java => RotPerSecCANTalonSRX.java} | 139 ++++++++++++------ .../robot/drive/meccanum/MeccanumDrive.java | 13 +- .../drive/talonCluster/TalonClusterDrive.java | 14 +- .../mechanism/climber/ClimberSubsystem.java | 6 +- .../SingleFlywheelShooter.java | 7 +- 5 files changed, 117 insertions(+), 62 deletions(-) rename src/main/java/org/usfirst/frc/team449/robot/components/{UnitlessCANTalonSRX.java => RotPerSecCANTalonSRX.java} (54%) diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java similarity index 54% rename from src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java rename to src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java index af07c96c..cace898c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java @@ -4,9 +4,10 @@ import maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap; /** - * Component wrapper on CTRE CAN Talon SRX {@link CANTalon}, with unit conversions to/from RPS built in. + * Component wrapper on CTRE CAN Talon SRX {@link CANTalon}, with unit conversions to/from RPS built in. Every + * method in this class takes arguments in RPS (except nativeToRPS of course). */ -public class UnitlessCANTalonSRX extends Component { +public class RotPerSecCANTalonSRX extends Component { /** * The CTRE CAN Talon SRX that this class is a wrapper on @@ -14,7 +15,7 @@ public class UnitlessCANTalonSRX extends Component { public CANTalon canTalon; /** - * The maximum speed of the motor, in human units. + * The maximum speed of the motor, in RPS. */ protected double maxSpeed; @@ -23,8 +24,12 @@ public class UnitlessCANTalonSRX extends Component { */ protected double encoderCPR; + /** + * The type of encoder the talon uses. + */ protected CANTalon.FeedbackDevice feedbackDevice; + //The map used to construct this object. private UnitlessCANTalonSRXMap.UnitlessCANTalonSRX map; /** @@ -32,27 +37,14 @@ public class UnitlessCANTalonSRX extends Component { * * @param map CANTalonSRX map object */ - public UnitlessCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap.UnitlessCANTalonSRX map) { + public RotPerSecCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap.UnitlessCANTalonSRX map) { // Configure stuff this.map = map; canTalon = new CANTalon(map.getPort()); - maxSpeed = map.getMaxSpeedHg(); encoderCPR = map.getEncoderCPR(); - canTalon.setFeedbackDevice(CANTalon.FeedbackDevice.valueOf(map.getFeedbackDevice().getNumber())); - feedbackDevice = CANTalon.FeedbackDevice.valueOf(map.getFeedbackDevice().getNumber()); canTalon.reverseSensor(map.getReverseSensor()); canTalon.reverseOutput(map.getReverseOutput()); canTalon.setInverted(map.getIsInverted()); - canTalon.configNominalOutputVoltage(+map.getNominalOutVoltage(), -map.getNominalOutVoltage()); - canTalon.configPeakOutputVoltage(+map.getPeakOutVoltage(), -map.getPeakOutVoltage()); - - setPIDF(map.getKPHg(), map.getKIHg(), map.getKDHg(), maxSpeed, 0, 0, 0); - if (map.hasKPMp()) { - setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), map.getMaxSpeedHg(), 0, 0, 1); - } - canTalon.setProfile(map.getProfile()); - - // Configure more stuff canTalon.ConfigFwdLimitSwitchNormallyOpen(map.getFwdLimNormOpen()); canTalon.ConfigRevLimitSwitchNormallyOpen(map.getRevLimNormOpen()); canTalon.enableLimitSwitch(map.getFwdLimEnabled(), map.getRevLimEnabled()); @@ -61,6 +53,31 @@ public UnitlessCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.Unitles canTalon.enableReverseSoftLimit(map.getRevSoftLimEnabled()); canTalon.setReverseSoftLimit(map.getRevSoftLimVal()); canTalon.enableBrakeMode(map.getBrakeMode()); + + //High gear speed is the default + maxSpeed = map.getMaxSpeedHg(); + + //We have to do some weird things to convert out of the enum in the proto and into the CANTalon enum. + feedbackDevice = CANTalon.FeedbackDevice.valueOf(map.getFeedbackDevice().getNumber()); + canTalon.setFeedbackDevice(feedbackDevice); + + //Configure the minimum output voltage. Should be symmetrical because it can go forwards and back. + canTalon.configNominalOutputVoltage(+map.getNominalOutVoltage(), -map.getNominalOutVoltage()); + + //Configure the maximum output voltage. Should be symmetrical because it can go forwards and back. + canTalon.configPeakOutputVoltage(+map.getPeakOutVoltage(), -map.getPeakOutVoltage()); + + //Initialize the PID constants in slot 0 to the high gear ones. + setPIDF(map.getKPHg(), map.getKIHg(), map.getKDHg(), maxSpeed, 0, 0, 0); + + //If we have motion profile PID constants, put them in slot 1. + //TODO stop hard-coding in which gear's max speed to use. + if (map.hasKPMp()) { + setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), map.getMaxSpeedLg(), 0, 0, 1); + } + + //Choose which profile to use, regular driving or MP. + canTalon.setProfile(map.getProfile()); } /** @@ -69,67 +86,96 @@ public UnitlessCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.Unitles * @param percentVbus percent of total voltage (between -1.0 and +1.0) */ public void setPercentVbus(double percentVbus) { + //Warn the user if they're setting Vbus to a number that's outside the range of values. if (Math.abs(percentVbus) > 1.0) { System.out.println("WARNING: YOU ARE CLIPPING MAX PERCENT VBUS AT " + percentVbus); percentVbus = Math.signum(percentVbus); } + + //Switch to voltage mode canTalon.changeControlMode(CANTalon.TalonControlMode.PercentVbus); + + //Set the setpoint to the input given. canTalon.set(percentVbus); } /** - * Give a position closed loop setpoint - * TODO: figure out units and warning clip to input range - * - * @param positionSp position setpoint + * Set up all the PIDF constants, using a maxSpeed insead of an F value. + * @param p The proportional gain term of the loop + * @param i The integral gain term of the loop + * @param d The derivative gain term of the loop + * @param maxSpeed The max speed of this motor, in RPS + * @param iZone Integration zone -- prevents accumulation of integration error with large errors. Setting this to zero will ignore any izone stuff. + * @param closeLoopRampRate Closed loop ramp rate. Maximum change in voltage, in volts / sec. + * @param profile The profile to use (must be 0 or 1). */ - public void setPosition(double positionSp) { - canTalon.changeControlMode(CANTalon.TalonControlMode.Position); - canTalon.set(positionSp); - } - private void setPIDF(double p, double i, double d, double maxSpeed, int iZone, double closeLoopRampRate, int profile){ this.canTalon.setPID(p, i, d, 1023/RPStoNative(maxSpeed), iZone, closeLoopRampRate, profile); } + /** + * Switch to using the high gear PID constants. + */ public void switchToHighGear(){ + //Switch max speed to high gear max speed maxSpeed = map.getMaxSpeedHg(); + //Set the slot 0 constants to the high gear ones. setPIDF(map.getKPHg(), map.getKIHg(), map.getKDHg(), maxSpeed, 0, 0, 0); } + /** + * Switch to using the low gear PID constants. + */ public void switchToLowGear(){ + //If there are low gear constants in the map if (map.hasKPLg()) { + //Switch max speed to low gear max speed maxSpeed = map.getMaxSpeedLg(); + //Set the slot 0 constants to the low gear ones. setPIDF(map.getKPLg(), map.getKILg(), map.getKDLg(), maxSpeed, 0, 0, 0); } else { + //Warn the user if they're trying to do this but don't have the low gear constants in the map. System.out.println("You're trying to switch your PIDF constants to low gear, but you don't have low gear constants."); } } - public boolean getInverted() { - return false; - } - - public void setInverted(boolean b) { - } - - public Double getMaxSpeed() { + public double getMaxSpeed() { return maxSpeed; } + /** + * Convert from RPS to the CANTalon native velocity units + * @param RPS The RPS velocity you want to convert + * @return That velocity in CANTalon native units + */ public double RPStoNative(double RPS) { return (RPS / 10) * (encoderCPR * 4); //4 edges per count, and 10 100ms per second. } + /** + * Convert from CANTalon native velocity units to rotations per second. + * @param nat A velocity in CANTalon native units + * @return That velocity in RPS + */ public double nativeToRPS(double nat) { return (nat / (encoderCPR * 4)) * 10; //4 edges per count, and 10 100ms per second. } + /** + * Get the velocity of the CANTalon in RPS + *

+ * Note: This method is called getSpeed since the TalonControlMode enum is called speed. However, the output + * is signed and is actually a velocity. + * + * @return The CANTalon's velocity in RPS + */ public double getSpeed() { + //If we use a CTRE encoder, it returns in rotations per minute if (feedbackDevice == CANTalon.FeedbackDevice.CtreMagEncoder_Relative || feedbackDevice == CANTalon .FeedbackDevice.CtreMagEncoder_Absolute){ - return canTalon.getSpeed()*60; + return canTalon.getSpeed()/60; } + //Otherwise, convert from natives. return nativeToRPS(canTalon.getSpeed()); } @@ -142,30 +188,41 @@ public double getSpeed() { * @param velocitySp velocity setpoint in revolutions per second */ public void setSpeed(double velocitySp) { + //Switch control mode to speed closed-loop canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); + //If we use a CTRE encoder, it takes rotations per minute if (feedbackDevice == CANTalon.FeedbackDevice.CtreMagEncoder_Relative || feedbackDevice == CANTalon - .FeedbackDevice.CtreMagEncoder_Absolute) - canTalon.set(velocitySp * 60); // 60 converts from RPS to RPM, TODO figure out where the 60 should - // actually go - else + .FeedbackDevice.CtreMagEncoder_Absolute) { + canTalon.set(velocitySp * 60); + } else { + //Otherwise, convert to natives. canTalon.set(RPStoNative(velocitySp)); + } } /** * Set which slot the Talon reads the PID gains from * * @param slot gains slot (0 or 1) - * @throws Exception if the specified slot isn't 0 or 1 + * @throws IllegalArgumentException if the specified slot isn't 0 or 1 */ @Deprecated - public void setPSlot(int slot) throws Exception { + public void setPSlot(int slot) throws IllegalArgumentException { canTalon.setProfile(slot); } + /** + * Get the current closed-loop velocity error in RPS. WARNING: will give garbage if not in velocity mode. + * @return The closed-loop error in RPS + */ public double getError(){ return nativeToRPS(canTalon.getError()); } + /** + * Get the high gear max speed. Sometimes useful for scaling joystick output. + * @return The high gear max speed in RPS + */ public double getMaxSpeedHG(){ return map.getMaxSpeedHg(); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java index b4b38b43..e62f0de6 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java @@ -1,11 +1,10 @@ package org.usfirst.frc.team449.robot.drive.meccanum; -import com.ctre.CANTalon; import com.kauailabs.navx.frc.AHRS; import edu.wpi.first.wpilibj.SPI; import maps.org.usfirst.frc.team449.robot.components.ToleranceBufferAnglePIDMap; import org.usfirst.frc.team449.robot.components.NavxSubsystem; -import org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRX; +import org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRX; import org.usfirst.frc.team449.robot.drive.DriveSubsystem; import org.usfirst.frc.team449.robot.oi.OI2017; @@ -15,7 +14,7 @@ public class MeccanumDrive extends DriveSubsystem implements NavxSubsystem { public AHRS navx; - public UnitlessCANTalonSRX frontLeft, frontRight, backLeft, backRight; + public RotPerSecCANTalonSRX frontLeft, frontRight, backLeft, backRight; public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; public OI2017 oi; @@ -31,10 +30,10 @@ public MeccanumDrive(maps.org.usfirst.frc.team449.robot.drive.meccanum.MeccanumD this.straightPID = map.getStraightPID(); this.oi = oi; - this.frontLeft = new UnitlessCANTalonSRX(map.getFrontLeft()); - this.frontRight = new UnitlessCANTalonSRX(map.getFrontRight()); - this.backLeft = new UnitlessCANTalonSRX(map.getBackLeft()); - this.backRight = new UnitlessCANTalonSRX(map.getBackRight()); + this.frontLeft = new RotPerSecCANTalonSRX(map.getFrontLeft()); + this.frontRight = new RotPerSecCANTalonSRX(map.getFrontRight()); + this.backLeft = new RotPerSecCANTalonSRX(map.getBackLeft()); + this.backRight = new RotPerSecCANTalonSRX(map.getBackRight()); } private void setVBusThrottle(double fl, double fr, double bl, double br){ diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index ce4cc40e..f7e0d358 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -8,7 +8,7 @@ import maps.org.usfirst.frc.team449.robot.components.ToleranceBufferAnglePIDMap; import maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap; import org.usfirst.frc.team449.robot.components.NavxSubsystem; -import org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRX; +import org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRX; import org.usfirst.frc.team449.robot.drive.DriveSubsystem; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.DefaultArcadeDrive; import org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepad; @@ -25,8 +25,8 @@ */ public class TalonClusterDrive extends DriveSubsystem implements NavxSubsystem { - public UnitlessCANTalonSRX rightMaster; - public UnitlessCANTalonSRX leftMaster; + public RotPerSecCANTalonSRX rightMaster; + public RotPerSecCANTalonSRX leftMaster; public AHRS navx; public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; @@ -86,18 +86,18 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T } maxSpeed = -1; - rightMaster = new UnitlessCANTalonSRX(map.getRightMaster()); - leftMaster = new UnitlessCANTalonSRX(map.getLeftMaster()); + rightMaster = new RotPerSecCANTalonSRX(map.getRightMaster()); + leftMaster = new RotPerSecCANTalonSRX(map.getLeftMaster()); long upshiftTIme, downshiftTime; for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getRightSlaveList()) { - UnitlessCANTalonSRX talonObject = new UnitlessCANTalonSRX(talon); + RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); talonObject.canTalon.set(map.getRightMaster().getPort()); } for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getLeftSlaveList()) { - UnitlessCANTalonSRX talonObject = new UnitlessCANTalonSRX(talon); + RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); talonObject.canTalon.set(map.getLeftMaster().getPort()); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java index d2d0c2fa..f9ff2846 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java @@ -1,19 +1,19 @@ package org.usfirst.frc.team449.robot.mechanism.climber; -import org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRX; +import org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRX; import org.usfirst.frc.team449.robot.mechanism.MechanismSubsystem; /** * Created by Justin on 1/12/2017. */ public class ClimberSubsystem extends MechanismSubsystem { - public UnitlessCANTalonSRX canTalonSRX; + public RotPerSecCANTalonSRX canTalonSRX; private double max_current; public ClimberSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.climber.ClimberMap.Climber map) { super(map.getMechanism()); this.map = map; - canTalonSRX = new UnitlessCANTalonSRX(map.getWinch()); + canTalonSRX = new RotPerSecCANTalonSRX(map.getWinch()); this.max_current = map.getMaxCurrent(); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java index b576a2fe..0b6b4652 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java @@ -2,8 +2,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import org.usfirst.frc.team449.robot.MappedSubsystem; -import org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRX; -import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.PIDTune; +import org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRX; import java.io.FileWriter; import java.io.IOException; @@ -15,7 +14,7 @@ public class SingleFlywheelShooter extends MappedSubsystem { public boolean spinning; - private UnitlessCANTalonSRX talon; + private RotPerSecCANTalonSRX talon; public double throttle=0.5; /** @@ -29,7 +28,7 @@ public SingleFlywheelShooter(maps.org.usfirst.frc.team449.robot.mechanism.single .SingleFlywheelShooterMap.SingleFlywheelShooter map) { super(map.getMechanism()); this.map = map; - this.talon = new UnitlessCANTalonSRX(map.getTalon()); + this.talon = new RotPerSecCANTalonSRX(map.getTalon()); if(map.hasThrottle()) { this.throttle = map.getThrottle(); } From ec5449656504625253ebe10c7339c7ab9400ec19 Mon Sep 17 00:00:00 2001 From: Bryan Li Date: Sat, 25 Feb 2017 12:21:11 -0500 Subject: [PATCH 12/66] Finished commenting vision. --- .../team449/robot/vision/CameraSubsystem.java | 39 ++++++++++--------- .../robot/vision/commands/ChangeCam.java | 15 ++++++- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index eb89c0e5..d784a789 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -14,39 +14,37 @@ /** * Created by bryanli on 11/10/16. + * Subsystem to initialize and push video to SmartDashboard */ public class CameraSubsystem extends MappedSubsystem { - /** - * @param server Hosts the video to view on SmartDashboard - * @param cameras Contains list of cameras used on robot - * @param camNum Contains number of cameras (total) - */ + //Video server to view on SmartDashboard public MjpegServer server; + + //List of cameras used on robot public List cameras; + + //Total number of cameras public int camNum; - /** - * Instantiates a new CameraSubsystem with a - * CameraMap - * - * @param map constants map - */ + //Instantiates a new CameraSubsystem with the map public static CameraMap.Camera map; public CameraSubsystem(CameraMap.Camera map){ super(map); this.map = map; + + //Logging to SmartDashboard System.out.println("CameraSubsystem construct start"); System.out.println("Set URL of MJPGServer to \"http://roboRIO-449-frc.local:"+map.getServer().getPort()+"/stream.mjpg\""); - /** - * - */ + + //Instantiates server server = new MjpegServer(map.getServer().getName(),map.getServer().getPort()); + + //Instantiates cameras cameras = new ArrayList<>(); - /** - * Searches for each camera, then places them into camera list. - */ + + //Searches for each camera, then places them into camera list. for (UsbCameraMap.UsbCamera camera : map.getUSBCameraList()) { UsbCamera tmp = new UsbCamera(camera.getName(), camera.getDev()); tmp.setResolution(camera.getWidth(), camera.getHeight()); @@ -54,9 +52,13 @@ public CameraSubsystem(CameraMap.Camera map){ System.out.println("Added "+camera.getName()+" to camera list."); cameras.add(tmp); } + + //Starts streaming video from first camera, marks that via camNum server.setSource(cameras.get(0)); camNum = 0; - System.out.println("CameraSubsystem construct end"); + + //Logging to console + System.out.println("CameraSubsystem construct end"); } @@ -64,5 +66,4 @@ public CameraSubsystem(CameraMap.Camera map){ protected void initDefaultCommand () { //Do nothing! } - } diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 4805dba6..3f32d412 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -5,39 +5,52 @@ /** * Created by bryanli on 12/1/16. + * Toggles camera on button press. */ public class ChangeCam extends ReferencingCommand { + //Initializes CameraSubsystem private CameraSubsystem cameraSubsystem; + /** + * Default constructor + */ public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { super(cameraSubsystem, timeout); requires(cameraSubsystem); this.cameraSubsystem = cameraSubsystem; } + //Does nothing - Logging to console @Override protected void initialize() { System.out.println("ChangeCam init"); } + /** + * Toggles between cameras. + */ @Override protected void execute() { + //Logging to console System.out.println("ChangeCam exec start"); + //Switches camNum to next camera, if applicable if (cameraSubsystem.cameras.size() == 1){ System.out.println("You're trying to switch cameras, but your robot only has one camera!"); } else { cameraSubsystem.camNum = (cameraSubsystem.camNum + 1) % cameraSubsystem.cameras.size(); } + //Switches to set camera cameraSubsystem.server.setSource(cameraSubsystem.cameras.get(cameraSubsystem.camNum)); + //Logging to camera System.out.println("ChangeCam exec end"); } @Override - protected boolean isFinished(){ return true; } + protected boolean isFinished(){ return true; }//Finishes instantaneously. @Override protected void end() { From 1d308c36c659744693b69466ebca618c5acfe8fb Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 13:25:23 -0500 Subject: [PATCH 13/66] Comment components. --- .../robot/components/NavxSubsystem.java | 4 ++ .../robot/components/PIDAngleCommand.java | 40 ++++++++++++++++--- .../robot/components/PressureSensor.java | 2 - 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/NavxSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/components/NavxSubsystem.java index b5892bef..838a1c9f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/NavxSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/NavxSubsystem.java @@ -4,5 +4,9 @@ * A subsystem that has a NavX on it. */ public interface NavxSubsystem { + /** + * Get the output of the NavX + * @return The heading, on a scale of -180 to 180. + */ double getGyroOutput(); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java index 5c4a76be..31149040 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java @@ -9,40 +9,68 @@ */ public abstract class PIDAngleCommand extends PIDCommand { + /** + * The minimum the robot should be able to output, to overcome friction. + */ protected double minimumOutput; + /** + * Whether or not to use minimumOutput. + */ protected boolean minimumOutputEnabled; + + /** + * The subsystem this command controls. + */ protected NavxSubsystem subsystem; + + /** + * How close to the target we have to be to be considered on target. + */ protected double tolerance; + + /** + * The range in which output is turned off to prevent "dancing" around the setpoint. + */ protected double deadband; - //TODO add a timeout. + /** + * Default constructor. + * @param map The map with this command's constants. + * @param subsystem The NavX subsystem. + */ public PIDAngleCommand(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, NavxSubsystem subsystem) { //Set P, I and D. I and D will normally be 0 if you're using cascading control, like you should be. super(map.getPID().getP(), map.getPID().getI(), map.getPID().getD()); + //Navx reads from -180 to 180. setInputRange(-180, 180); + //It's a circle, so it's continuous this.getPIDController().setContinuous(true); + //Tolerance should be a variable so we can scale the deadband later. tolerance = map.getAbsoluteTolerance(); this.getPIDController().setAbsoluteTolerance(tolerance); + //This is how long we have to be within the tolerance band. Multiply by loop period for time in ms. this.getPIDController().setToleranceBuffer(map.getToleranceBuffer()); - //this.getPIDController().setOutputRange(-0.7, 0.7); - //Minimum ouutput, the smallest output it's possible to give. One-tenth of your drive's top speed is about - // right. + + //Minimum output, the smallest output it's possible to give. One-tenth of your drive's top speed is about right. this.minimumOutput = map.getMinimumOutput(); this.minimumOutputEnabled = map.getMinimumOutputEnabled(); - //This caps the output we can give. One way to set this up is to make P large and then use this to prevent - // overshoot. + + //This caps the output we can give. One way to set up closed-loop is to make P large and then use this to prevent overshoot. if (map.getMaximumOutputEnabled()) { this.getPIDController().setOutputRange(-map.getMaximumOutput(), map.getMaximumOutput()); } + + //Set a deadband around the setpoint, in degrees, within which don't move, to avoid "dancing" if (map.getDeadbandEnabled()) { this.deadband = map.getDeadband(); } else { this.deadband = 0; } + this.subsystem = subsystem; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/PressureSensor.java b/src/main/java/org/usfirst/frc/team449/robot/components/PressureSensor.java index 2d8adb88..787ce32d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/PressureSensor.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/PressureSensor.java @@ -1,11 +1,9 @@ package org.usfirst.frc.team449.robot.components; import edu.wpi.first.wpilibj.AnalogInput; -import edu.wpi.first.wpilibj.PowerDistributionPanel; /** * Wrapper for an analog pressure sensor that returns a voltage linearly proportional to pressure. - * Created by sam on 1/27/17. */ public class PressureSensor extends Component { public AnalogInput sensor; From 5d1050dd2cd73fea09b5415718c6f671ebabe6a3 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 13:28:20 -0500 Subject: [PATCH 14/66] Clean up vision comments. --- .../frc/team449/robot/vision/CameraSubsystem.java | 1 - .../frc/team449/robot/vision/commands/ChangeCam.java | 11 +++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index d784a789..28d55f56 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -13,7 +13,6 @@ /** - * Created by bryanli on 11/10/16. * Subsystem to initialize and push video to SmartDashboard */ public class CameraSubsystem extends MappedSubsystem { diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 3f32d412..17aacecd 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -4,7 +4,6 @@ import org.usfirst.frc.team449.robot.vision.CameraSubsystem; /** - * Created by bryanli on 12/1/16. * Toggles camera on button press. */ public class ChangeCam extends ReferencingCommand { @@ -21,15 +20,12 @@ public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { this.cameraSubsystem = cameraSubsystem; } - //Does nothing - Logging to console @Override protected void initialize() { System.out.println("ChangeCam init"); + //Does nothing - Logging to console } - /** - * Toggles between cameras. - */ @Override protected void execute() { //Logging to console @@ -50,7 +46,10 @@ protected void execute() { } @Override - protected boolean isFinished(){ return true; }//Finishes instantaneously. + protected boolean isFinished(){ + //Finishes instantaneously. + return true; + } @Override protected void end() { From 6f1af46784b403fb90dae3d16760b1797337279b Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 14:56:37 -0500 Subject: [PATCH 15/66] Comment OI. --- .../usfirst/frc/team449/robot/oi/BaseOI.java | 5 +- .../usfirst/frc/team449/robot/oi/OI2017.java | 4 +- .../frc/team449/robot/oi/OI2017Arcade.java | 13 +- .../team449/robot/oi/OI2017ArcadeGamepad.java | 207 ++++++++++++------ .../frc/team449/robot/oi/OI2017Tank.java | 13 +- .../robot/oi/OI2017ArcadeGamepad.proto | 45 +--- src/main/resources/final_map.cfg | 12 +- 7 files changed, 184 insertions(+), 115 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java b/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java index b205c32d..154fb77c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java @@ -1,8 +1,11 @@ package org.usfirst.frc.team449.robot.oi; /** - * Created by ryant on 2017-01-25. + * A basic OI interface that all OI classes should implement. */ public abstract class BaseOI { + /** + * Map all buttons to commands. Should only be run after all subsystems have been instantiated. + */ public abstract void mapButtons(); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java index 89214b37..fe60b607 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java @@ -11,8 +11,10 @@ import org.usfirst.frc.team449.robot.oi.components.Throttle; /** - * Created by blairrobot on 1/9/17. + * The OI for 2017 written before the OI reorganization. */ + +@Deprecated public class OI2017 extends OISubsystem { protected Joystick gamepad; diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java index d0a08b72..fb9acd5a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java @@ -3,12 +3,13 @@ import edu.wpi.first.wpilibj.Joystick; import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeMap; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; -import org.usfirst.frc.team449.robot.oi.components.PolyThrottle; +import org.usfirst.frc.team449.robot.oi.components.SmoothedThrottle; import org.usfirst.frc.team449.robot.oi.components.Throttle; /** - * Created by blairrobot on 1/9/17. + * A simple, two-stick arcade drive OI. */ + public class OI2017Arcade extends BaseOI implements ArcadeOI { /** * Left (rotation control) stick's throttle @@ -19,15 +20,19 @@ public class OI2017Arcade extends BaseOI implements ArcadeOI { */ private Throttle velThrottle; + /** + * The map for this object. + */ private OI2017ArcadeMap.OI2017Arcade map; public OI2017Arcade(maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeMap.OI2017Arcade map) { this.map = map; + //Instantiate the sticks Joystick _leftStick = new Joystick(map.getLeftStick()); Joystick _rightStick = new Joystick(map.getRightStick()); - this.rotThrottle = new PolyThrottle(_leftStick, 1, 1); - this.velThrottle = new PolyThrottle(_rightStick, 1, 1); + this.rotThrottle = new SmoothedThrottle(_leftStick, 1); + this.velThrottle = new SmoothedThrottle(_rightStick, 1); } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 2f977757..34a8d699 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -4,19 +4,13 @@ import edu.wpi.first.wpilibj.buttons.JoystickButton; import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepadMap; import org.usfirst.frc.team449.robot.Robot; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideNavX; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToHighGear; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.*; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; import org.usfirst.frc.team449.robot.mechanism.climber.commands.CurrentClimb; import org.usfirst.frc.team449.robot.mechanism.climber.commands.StopClimbing; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.ToggleFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.ToggleIntakeUpDown; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.ToggleIntaking; -import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.ToggleFlywheel; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.ToggleShooter; import org.usfirst.frc.team449.robot.mechanism.topcommands.shooter.FireShooter; import org.usfirst.frc.team449.robot.mechanism.topcommands.shooter.LoadShooter; @@ -33,42 +27,98 @@ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { //How much the D-pad moves the robot rotationally on a 0 to 1 scale, equivalent to pushing the turning stick that much of the way. private static double SHIFT; + //The throttle wrapper for the stick controlling turning velocity. private Throttle rotThrottle; + //The throttle wrapper for the stick controlling linear velocity. private Throttle fwdThrottle; + + //The controller with the drive sticks. private Joystick gamepad; + + //The joystick output under which any input is considered noise. private double deadband; - private JoystickButton tt0, tt30, tt180, tt330, turnaround, switchToLowGear, switchToHighGear, climb, overrideNavX; - private JoystickButton switchCamera, toggleIntake, toggleIntakeUpDown, tmpOverrideLow, tmpOverrideHigh, toggleOverrideHigh, toggleFeeder, shoot; - private JoystickButton loadShooter, rackShooter, fireShooter; + + //Turn to 0, 30, 180, or 330 degrees relative to the position the robot was turned on at. + private JoystickButton turnTo0; + private JoystickButton turnTo30; + private JoystickButton turnTo180; + private JoystickButton turnTo330; + + //Turn 180 degrees relative to the robot's current position. + private JoystickButton turnaround; + + //Gear switching for drive. + private JoystickButton switchToLowGear; + private JoystickButton switchToHighGear; + + //Run the climber while the button is held AND the current limit hasn't been reached. + private JoystickButton climb; + + //Toggle whether we're overriding the NavX DriveStraight for slam alignment. + private JoystickButton toggleOverrideNavX; + + //Switch which camera we're displaying on SmartDashboard. + private JoystickButton switchCamera; + + //Switch whether or not the intake is sucking in balls. + private JoystickButton toggleIntake; + + //Switch whether the intake is up or down. + private JoystickButton toggleIntakeUpDown; + + //While this button is held, stay in low gear and don't autoshift. + private JoystickButton tmpOverrideLow; + + //While this button is held, stay in high gear and don't autoshift. + private JoystickButton tmpOverrideHigh; + + //Toggle overriding autoshifting. When autoshifting is turned off, switch to high gear. + private JoystickButton toggleOverrideHigh; + + //Switch whether or not the feeder is feeding balls into the shooter. + private JoystickButton toggleFeeder; + + //Toggle whether the flywheel is on or off. + private JoystickButton toggleShooter; + + //Lower and run the intake while turning off the flywheel and feeder. + private JoystickButton loadShooter; + //Raise the intake and run the static one to agitate the ball bin. Run the flywheel to get it up to speed, but don't run the feeder. + private JoystickButton rackShooter; + //Same as rack, but run the feeder in order to fire balls. + private JoystickButton fireShooter; public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { - //This is just to give the sticks better names and allow quickly swapping which is which according to driver preference. + //Instantiate stick and joysticks gamepad = new Joystick(map.getGamepad()); - SHIFT = (map.getInvertDpad() ? -map.getDpadShift() : map.getDpadShift()); rotThrottle = new SmoothedThrottle(gamepad, map.getGamepadLeftAxis(), map.getInvertRot()); fwdThrottle = new SmoothedThrottle(gamepad, map.getGamepadRightAxis(), map.getInvertFwd()); + + //Set up other map constants + SHIFT = (map.getInvertDpad() ? -map.getDpadShift() : map.getDpadShift()); deadband = map.getDeadband(); -// if (map.hasTurnTo0Button()) { -// tt0 = new JoystickButton(gamepad, map.getTurnTo0Button()); -// } -// if (map.hasTurnTo30Button()) { -// tt30 = new JoystickButton(gamepad, map.getTurnTo30Button()); -// } -// if (map.hasTurnTo180Button()) { -// tt180 = new JoystickButton(gamepad, map.getTurnTo180Button()); -// } -// if (map.hasTurnTo330Button()) { -// tt330 = new JoystickButton(gamepad, map.getTurnTo330Button()); -// } -// if(map.hasTurnaroundButton()) { -// turnaround = new JoystickButton(gamepad, map.getTurnaroundButton()); -// } - - overrideNavX = new MJButton(map.getOverrideNavX()); + //Instantiate mandatory buttons. + toggleOverrideNavX = new MJButton(map.getOverrideNavX()); + //Instatiate optional buttons. + if (map.hasTurnTo0()) { + turnTo0 = new MJButton(map.getTurnTo0()); + } + if (map.hasTurnTo30()) { + turnTo30 = new MJButton(map.getTurnTo30()); + } + if (map.hasTurnTo180()) { + turnTo180 = new MJButton(map.getTurnTo180()); + } + if (map.hasTurnTo330()) { + turnTo330 = new MJButton(map.getTurnTo330()); + } + if(map.hasTurnaround()) { + turnaround = new MJButton(map.getTurnaround()); + } if (map.hasSwitchToLowGear()) { switchToLowGear = new MJButton(map.getSwitchToLowGear()); switchToHighGear = new MJButton(map.getSwitchToHighGear()); @@ -76,17 +126,13 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasClimb()) { climb = new MJButton(map.getClimb()); } -// if (map.hasSwitchCamera()) { -// switchCamera = new JoystickButton(gamepad, map.getSwitchCamera()); -// } - - if (map.hasToggleOverrideLow()){ - tmpOverrideLow = new MJButton(map.getToggleOverrideLow()); + if (map.hasTmpOverrideLow()){ + tmpOverrideLow = new MJButton(map.getTmpOverrideLow()); } - if (map.hasToggleOverrideHigh()){ - tmpOverrideHigh = new MJButton(map.getToggleOverrideHigh()); + if (map.hasTmpOverrideHigh()){ + tmpOverrideHigh = new MJButton(map.getTmpOverrideHigh()); } - if (map.hasToggleOverrideHigh()) { // TODO check if tmp == toggle + if (map.hasToggleOverrideHigh()) { toggleOverrideHigh = new MJButton(map.getToggleOverrideHigh()); } if (map.hasToggleFeeder()) { @@ -99,7 +145,7 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { toggleIntakeUpDown = new MJButton(map.getToggleIntakeUpDown()); } if (map.hasShoot()) { - shoot = new MJButton(map.getShoot()); + toggleShooter = new MJButton(map.getShoot()); } if (map.hasLoadShooter()) { loadShooter = new MJButton(map.getLoadShooter()); @@ -121,8 +167,12 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { * @return The processed stick output, sign-adjusted so 1 is forward and -1 is backwards. */ public double getFwd() { + //If the value is outside of the deadband if (Math.abs(fwdThrottle.getValue()) > deadband) { - return fwdThrottle.getValue()*(1-0.2*rotThrottle.getValue()); + //TODO put this number in the map + final double ROT_SCALE = 0.2; + //Scale based on rotational throttle for more responsive turning at high speed + return fwdThrottle.getValue()*(1-ROT_SCALE*rotThrottle.getValue()); } else { return 0; } @@ -134,43 +184,48 @@ public double getFwd() { * @return The processed stick or D-pad output, sign-adjusted so 1 is right and -1 is left. */ public double getRot() { + //If the gamepad is being pushed to the left or right if (!(gamepad.getPOV() == -1 || gamepad.getPOV() % 180 == 0)) { + //Output the shift value return gamepad.getPOV() < 180 ? SHIFT : -SHIFT; } else if (Math.abs(rotThrottle.getValue()) > deadband) { + //Return the throttle value if it's outside of the deadband. return rotThrottle.getValue(); } else { return 0; } } + /** + * Map all buttons to commands. Should only be run after all subsystems have been instantiated. + */ public void mapButtons() { - double timeout = 5.; + //The timeout for turning commands + final double TIMEOUT = 5.; + + //Map mandatory commands + toggleOverrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem)); + + //Map drive commands if (turnaround != null) { - turnaround.whenPressed(new NavXRelativeTTA(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, timeout)); + turnaround.whenPressed(new NavXRelativeTTA(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, TIMEOUT)); } - if (tt0 != null) { - tt0.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 0, Robot.driveSubsystem, timeout)); + if (turnTo0 != null) { + turnTo0.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 0, Robot.driveSubsystem, TIMEOUT)); } - if (tt30 != null) { - tt30.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 30, Robot.driveSubsystem, timeout)); + if (turnTo30 != null) { + turnTo30.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 30, Robot.driveSubsystem, TIMEOUT)); } - if (tt180 != null) { - tt180.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, timeout)); + if (turnTo180 != null) { + turnTo180.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, TIMEOUT)); } - if (tt330 != null) { - tt330.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, -30, Robot.driveSubsystem, timeout)); + if (turnTo330 != null) { + turnTo330.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, -30, Robot.driveSubsystem, TIMEOUT)); } - if (Robot.driveSubsystem.shifter != null) { + if (Robot.driveSubsystem.shifter != null && switchToHighGear != null && switchToLowGear != null) { switchToHighGear.whenPressed(new SwitchToHighGear(Robot.driveSubsystem)); switchToLowGear.whenPressed(new SwitchToLowGear(Robot.driveSubsystem)); } - if (Robot.climberSubsystem != null) { - climb.whenPressed(new CurrentClimb(Robot.climberSubsystem)); - climb.whenReleased(new StopClimbing(Robot.climberSubsystem)); - } - if (Robot.cameraSubsystem != null && switchCamera != null) { - switchCamera.whenPressed(new ChangeCam(Robot.cameraSubsystem, timeout)); - } if (tmpOverrideHigh != null){ tmpOverrideHigh.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, true, false)); tmpOverrideHigh.whenReleased(new OverrideAutoShift(Robot.driveSubsystem, false, false)); @@ -182,18 +237,39 @@ public void mapButtons() { if (toggleOverrideHigh != null){ toggleOverrideHigh.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, !Robot.driveSubsystem.overrideAutoShift, false)); } -// if (toggleIntake != null && Robot.intakeSubsystem != null){ -// toggleIntake.whenPressed(new ToggleIntaking(Robot.intakeSubsystem)); -// } - if (toggleIntakeUpDown != null && Robot.intakeSubsystem != null){ - toggleIntakeUpDown.whenPressed(new ToggleIntakeUpDown(Robot.intakeSubsystem)); + + //Map climber commands + if (Robot.climberSubsystem != null && climb != null) { + climb.whenPressed(new CurrentClimb(Robot.climberSubsystem)); + climb.whenReleased(new StopClimbing(Robot.climberSubsystem)); + } + + //Map camera commands + if (Robot.cameraSubsystem != null && switchCamera != null) { + switchCamera.whenPressed(new ChangeCam(Robot.cameraSubsystem, TIMEOUT)); } + + //Map intake commands + if (Robot.intakeSubsystem != null){ + if (toggleIntakeUpDown != null) { + toggleIntakeUpDown.whenPressed(new ToggleIntakeUpDown(Robot.intakeSubsystem)); + } + if (toggleIntake != null){ + toggleIntake.whenPressed(new ToggleIntaking(Robot.intakeSubsystem)); + } + } + + //Map feeder commands if (toggleFeeder != null && Robot.feederSubsystem != null){ toggleFeeder.whenPressed(new ToggleFeeder(Robot.feederSubsystem)); } - if (shoot != null && Robot.singleFlywheelShooterSubsystem != null) { - shoot.whenPressed(new ToggleShooter(Robot.singleFlywheelShooterSubsystem)); + + //Map shooter commands + if (toggleShooter != null && Robot.singleFlywheelShooterSubsystem != null) { + toggleShooter.whenPressed(new ToggleShooter(Robot.singleFlywheelShooterSubsystem)); } + + //Map group commands if (loadShooter != null) { loadShooter.whenPressed(new LoadShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot.feederSubsystem)); } @@ -203,6 +279,5 @@ public void mapButtons() { if (fireShooter != null) { fireShooter.whenPressed(new FireShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot.feederSubsystem)); } - overrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java index 3258e1d7..ffc36dd4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java @@ -4,24 +4,29 @@ import maps.org.usfirst.frc.team449.robot.oi.OI2017TankMap; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.TankOI; import org.usfirst.frc.team449.robot.oi.components.PolyThrottle; +import org.usfirst.frc.team449.robot.oi.components.SmoothedThrottle; import org.usfirst.frc.team449.robot.oi.components.Throttle; /** - * Created by ryant on 2017-01-25. + * A simple tank drive, where each joystick controls a side of the robot. */ public class OI2017Tank extends BaseOI implements TankOI { + //The left throttle private Throttle leftThrottle; + //The right throttle private Throttle rightThrottle; + //The map private OI2017TankMap.OI2017Tank map; public OI2017Tank(maps.org.usfirst.frc.team449.robot.oi.OI2017TankMap.OI2017Tank map) { this.map = map; + //Instantiate the sticks. Joystick _leftStick = new Joystick(map.getLeftStick()); Joystick _rightStick = new Joystick(map.getRightStick()); - this.leftThrottle = new PolyThrottle(_leftStick, 1, 1); - this.rightThrottle = new PolyThrottle(_rightStick, 1, 1); + this.leftThrottle = new SmoothedThrottle(_leftStick, 1); + this.rightThrottle = new SmoothedThrottle(_rightStick, 1); } @Override @@ -40,4 +45,4 @@ public double getRightThrottle() { // TODO put a deadband return rightThrottle.getValue(); } -} +} \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto index e0c04e82..b77049bb 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto @@ -23,43 +23,22 @@ message OI2017ArcadeGamepad { optional JButton toggle_feeder = 12; optional JButton toggle_intake = 13; optional JButton toggle_intake_up_down = 14; - optional JButton toggle_override_low = 15; + optional JButton tmp_override_low = 15; + optional JButton tmp_override_high = 24; optional JButton toggle_override_high = 16; optional JButton shoot = 17; optional JButton switch_camera = 23; // The new ones - optional JButton loadShooter = 19; - optional JButton rackShooter = 20; - optional JButton fireShooter = 21; - optional JButton resetShooter = 22; - - /* - required int32 gamepad = 1; - required int32 gamepad_left_axis = 2; - required int32 gamepad_right_axis = 3; - optional int32 turn_to_0_button = 4; - optional int32 turn_to_30_button = 5; - optional int32 turn_to_180_button = 6; - optional int32 turn_to_330_button = 7; - optional int32 turnaround_button = 8; - required double deadband = 9; - required double dpad_shift = 10; - optional int32 switch_to_low_gear = 11; - optional int32 switch_to_high_gear = 12; - optional int32 climb = 13; - required int32 override_navX = 14; - required bool invert_rot = 15; - required bool invert_fwd = 16; - required bool invert_dpad = 17; - optional int32 switch_camera = 18; - optional int32 tmp_override_low = 19; - optional int32 tmp_override_high = 20; - optional int32 toggle_override_high = 21; - optional int32 toggle_feeder = 22; - optional int32 toggle_intake = 24; - optional int32 toggle_intake_up_down = 23; - optional int32 shoot = 25; - */ + optional JButton load_shooter = 19; + optional JButton rack_shooter = 20; + optional JButton fire_shooter = 21; + optional JButton reset_shooter = 22; + + optional JButton turn_to_0 = 25; + optional JButton turn_to_30 = 26; + optional JButton turn_to_180 = 27; + optional JButton turn_to_330 = 28; + optional JButton turnaround = 29; } \ No newline at end of file diff --git a/src/main/resources/final_map.cfg b/src/main/resources/final_map.cfg index 2627d628..b52207bf 100644 --- a/src/main/resources/final_map.cfg +++ b/src/main/resources/final_map.cfg @@ -38,11 +38,11 @@ arcade_oi { ji: 3 bi: 7 } - toggle_override_low { + tmp_override_low { ji: 1 bi: 7 } - toggle_override_high { + tmp_override_high { ji: 1 bi: 8 } @@ -50,19 +50,19 @@ arcade_oi { ji: 3 bi: 10 } - loadShooter { + load_shooter { ji: 2 bi: 3 } - rackShooter { + rack_shooter { ji: 2 bi: 4 } - fireShooter { + fire_shooter { ji: 1 bi: 6 } - resetShooter { + reset_shooter { ji: 2 bi: 1 } From 29a14e3dd7c215b4b07fb80504897bf80f6eb6e6 Mon Sep 17 00:00:00 2001 From: Bryan Li Date: Sat, 25 Feb 2017 15:33:38 -0500 Subject: [PATCH 16/66] Fixed typos. --- src/main/java/org/usfirst/frc/team449/robot/Robot.java | 2 +- src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java | 2 +- .../org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java | 2 +- .../usfirst/frc/team449/robot/vision/commands/ChangeCam.java | 4 +--- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 6e8ef158..9c401f28 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -66,7 +66,7 @@ public void robotInit() { e.printStackTrace(); } - //Construct the OI (has to be done first because other subsytems take the OI as an argument.) + //Construct the OI (has to be done first because other subsystems take the OI as an argument.) oiSubsystem = new OI2017ArcadeGamepad(cfg.getArcadeOi()); System.out.println("Constructed OI"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java b/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java index 154fb77c..1bb93665 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/BaseOI.java @@ -1,7 +1,7 @@ package org.usfirst.frc.team449.robot.oi; /** - * A basic OI interface that all OI classes should implement. + * A basic OI class that all OI classes should implement. */ public abstract class BaseOI { /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 34a8d699..1e687aed 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -103,7 +103,7 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { //Instantiate mandatory buttons. toggleOverrideNavX = new MJButton(map.getOverrideNavX()); - //Instatiate optional buttons. + //Instantiate optional buttons. if (map.hasTurnTo0()) { turnTo0 = new MJButton(map.getTurnTo0()); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 17aacecd..1d0f51e8 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -11,9 +11,7 @@ public class ChangeCam extends ReferencingCommand { //Initializes CameraSubsystem private CameraSubsystem cameraSubsystem; - /** - * Default constructor - */ + //Default constructor public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { super(cameraSubsystem, timeout); requires(cameraSubsystem); From ed550f5784ae80e9cb05caf186d2e2be072f153d Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 16:19:10 -0500 Subject: [PATCH 17/66] Refactor MJButton to MappedJoystickButton. --- .../frc/team449/robot/oi/MJButton.java | 14 ----- .../robot/oi/MappedJoystickButton.java | 15 +++++ .../team449/robot/oi/OI2017ArcadeGamepad.java | 40 ++++++------- .../frc/team449/robot/oi/JButton.proto | 9 --- .../frc/team449/robot/oi/JoystickButton.proto | 9 +++ .../robot/oi/OI2017ArcadeGamepad.proto | 46 +++++++------- src/main/resources/final_map.cfg | 60 +++++++++---------- 7 files changed, 97 insertions(+), 96 deletions(-) delete mode 100644 src/main/java/org/usfirst/frc/team449/robot/oi/MJButton.java create mode 100644 src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java delete mode 100644 src/main/proto/org/usfirst/frc/team449/robot/oi/JButton.proto create mode 100644 src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/MJButton.java b/src/main/java/org/usfirst/frc/team449/robot/oi/MJButton.java deleted file mode 100644 index bed962a8..00000000 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/MJButton.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.usfirst.frc.team449.robot.oi; - -import edu.wpi.first.wpilibj.Joystick; -import edu.wpi.first.wpilibj.buttons.JoystickButton; -import maps.org.usfirst.frc.team449.robot.oi.JButtonMap; - -/** - * Created by ryant on 2017-02-18. - */ -public class MJButton extends JoystickButton { - public MJButton(JButtonMap.JButton map) { - super(new Joystick(map.getJi()), map.getBi()); - } -} diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java b/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java new file mode 100644 index 00000000..f83b0d12 --- /dev/null +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java @@ -0,0 +1,15 @@ +package org.usfirst.frc.team449.robot.oi; + +import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.buttons.JoystickButton; +import maps.org.usfirst.frc.team449.robot.oi.JoystickButtonMap; + +/** + * A button with a port and joystick that can be constructed from a map object. + */ +public class MappedJoystickButton extends JoystickButton { + + public MappedJoystickButton(JoystickButtonMap.JoystickButton map) { + super(new Joystick(map.getJoystickIndex()), map.getButtonIndex()); + } +} diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 1e687aed..1a6eb428 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -101,63 +101,63 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { deadband = map.getDeadband(); //Instantiate mandatory buttons. - toggleOverrideNavX = new MJButton(map.getOverrideNavX()); + toggleOverrideNavX = new MappedJoystickButton(map.getOverrideNavX()); //Instantiate optional buttons. if (map.hasTurnTo0()) { - turnTo0 = new MJButton(map.getTurnTo0()); + turnTo0 = new MappedJoystickButton(map.getTurnTo0()); } if (map.hasTurnTo30()) { - turnTo30 = new MJButton(map.getTurnTo30()); + turnTo30 = new MappedJoystickButton(map.getTurnTo30()); } if (map.hasTurnTo180()) { - turnTo180 = new MJButton(map.getTurnTo180()); + turnTo180 = new MappedJoystickButton(map.getTurnTo180()); } if (map.hasTurnTo330()) { - turnTo330 = new MJButton(map.getTurnTo330()); + turnTo330 = new MappedJoystickButton(map.getTurnTo330()); } if(map.hasTurnaround()) { - turnaround = new MJButton(map.getTurnaround()); + turnaround = new MappedJoystickButton(map.getTurnaround()); } if (map.hasSwitchToLowGear()) { - switchToLowGear = new MJButton(map.getSwitchToLowGear()); - switchToHighGear = new MJButton(map.getSwitchToHighGear()); + switchToLowGear = new MappedJoystickButton(map.getSwitchToLowGear()); + switchToHighGear = new MappedJoystickButton(map.getSwitchToHighGear()); } if (map.hasClimb()) { - climb = new MJButton(map.getClimb()); + climb = new MappedJoystickButton(map.getClimb()); } if (map.hasTmpOverrideLow()){ - tmpOverrideLow = new MJButton(map.getTmpOverrideLow()); + tmpOverrideLow = new MappedJoystickButton(map.getTmpOverrideLow()); } if (map.hasTmpOverrideHigh()){ - tmpOverrideHigh = new MJButton(map.getTmpOverrideHigh()); + tmpOverrideHigh = new MappedJoystickButton(map.getTmpOverrideHigh()); } if (map.hasToggleOverrideHigh()) { - toggleOverrideHigh = new MJButton(map.getToggleOverrideHigh()); + toggleOverrideHigh = new MappedJoystickButton(map.getToggleOverrideHigh()); } if (map.hasToggleFeeder()) { - toggleFeeder = new MJButton(map.getToggleFeeder()); + toggleFeeder = new MappedJoystickButton(map.getToggleFeeder()); } if (map.hasToggleIntake()) { - toggleIntake = new MJButton(map.getToggleIntake()); + toggleIntake = new MappedJoystickButton(map.getToggleIntake()); } if (map.hasToggleIntakeUpDown()){ - toggleIntakeUpDown = new MJButton(map.getToggleIntakeUpDown()); + toggleIntakeUpDown = new MappedJoystickButton(map.getToggleIntakeUpDown()); } if (map.hasShoot()) { - toggleShooter = new MJButton(map.getShoot()); + toggleShooter = new MappedJoystickButton(map.getShoot()); } if (map.hasLoadShooter()) { - loadShooter = new MJButton(map.getLoadShooter()); + loadShooter = new MappedJoystickButton(map.getLoadShooter()); } if (map.hasRackShooter()) { - rackShooter = new MJButton(map.getRackShooter()); + rackShooter = new MappedJoystickButton(map.getRackShooter()); } if (map.hasFireShooter()) { - fireShooter = new MJButton(map.getFireShooter()); + fireShooter = new MappedJoystickButton(map.getFireShooter()); } if (map.hasSwitchCamera()){ - switchCamera = new MJButton(map.getSwitchCamera()); + switchCamera = new MappedJoystickButton(map.getSwitchCamera()); } } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/JButton.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/JButton.proto deleted file mode 100644 index 01879d6e..00000000 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/JButton.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto2"; - -option java_package = "maps.org.usfirst.frc.team449.robot.oi"; -option java_outer_classname = "JButtonMap"; - -message JButton { - required int32 ji = 1; // joystick index - required int32 bi = 2; // button index -} diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto new file mode 100644 index 00000000..66fd65b0 --- /dev/null +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto @@ -0,0 +1,9 @@ +syntax = "proto2"; + +option java_package = "maps.org.usfirst.frc.team449.robot.oi"; +option java_outer_classname = "JoystickButtonMap"; + +message JoystickButton { + required int32 joystick_index = 1; + required int32 button_index = 2; +} diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto index b77049bb..28cfe295 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto @@ -1,5 +1,5 @@ syntax = "proto2"; -import "org/usfirst/frc/team449/robot/oi/JButton.proto"; +import "org/usfirst/frc/team449/robot/oi/JoystickButton.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.oi"; option java_outer_classname = "OI2017ArcadeGamepadMap"; @@ -16,29 +16,29 @@ message OI2017ArcadeGamepad { required bool invert_rot = 7; required bool invert_dpad = 18; - optional JButton switch_to_low_gear = 8; - optional JButton switch_to_high_gear = 9; - optional JButton override_navX = 10; - optional JButton climb = 11; - optional JButton toggle_feeder = 12; - optional JButton toggle_intake = 13; - optional JButton toggle_intake_up_down = 14; - optional JButton tmp_override_low = 15; - optional JButton tmp_override_high = 24; - optional JButton toggle_override_high = 16; - optional JButton shoot = 17; + optional JoystickButton switch_to_low_gear = 8; + optional JoystickButton switch_to_high_gear = 9; + optional JoystickButton override_navX = 10; + optional JoystickButton climb = 11; + optional JoystickButton toggle_feeder = 12; + optional JoystickButton toggle_intake = 13; + optional JoystickButton toggle_intake_up_down = 14; + optional JoystickButton tmp_override_low = 15; + optional JoystickButton tmp_override_high = 24; + optional JoystickButton toggle_override_high = 16; + optional JoystickButton shoot = 17; - optional JButton switch_camera = 23; + optional JoystickButton switch_camera = 23; // The new ones - optional JButton load_shooter = 19; - optional JButton rack_shooter = 20; - optional JButton fire_shooter = 21; - optional JButton reset_shooter = 22; - - optional JButton turn_to_0 = 25; - optional JButton turn_to_30 = 26; - optional JButton turn_to_180 = 27; - optional JButton turn_to_330 = 28; - optional JButton turnaround = 29; + optional JoystickButton load_shooter = 19; + optional JoystickButton rack_shooter = 20; + optional JoystickButton fire_shooter = 21; + optional JoystickButton reset_shooter = 22; + + optional JoystickButton turn_to_0 = 25; + optional JoystickButton turn_to_30 = 26; + optional JoystickButton turn_to_180 = 27; + optional JoystickButton turn_to_330 = 28; + optional JoystickButton turnaround = 29; } \ No newline at end of file diff --git a/src/main/resources/final_map.cfg b/src/main/resources/final_map.cfg index b52207bf..b521dcdf 100644 --- a/src/main/resources/final_map.cfg +++ b/src/main/resources/final_map.cfg @@ -11,64 +11,64 @@ arcade_oi { invert_dpad: true switch_to_low_gear { - ji: 3 - bi: 1 + joystick_index: 3 + button_index: 1 } switch_to_high_gear { - ji: 3 - bi: 2 + joystick_index: 3 + button_index: 2 } override_navX { - ji: 1 - bi: 12 + joystick_index: 1 + button_index: 12 } climb { - ji: 1 - bi: 5 + joystick_index: 1 + button_index: 5 } toggle_feeder { - ji: 3 - bi: 5 + joystick_index: 3 + button_index: 5 } toggle_intake { - ji: 3 - bi: 6 + joystick_index: 3 + button_index: 6 } toggle_intake_up_down { - ji: 3 - bi: 7 + joystick_index: 3 + button_index: 7 } tmp_override_low { - ji: 1 - bi: 7 + joystick_index: 1 + button_index: 7 } tmp_override_high { - ji: 1 - bi: 8 + joystick_index: 1 + button_index: 8 } shoot { - ji: 3 - bi: 10 + joystick_index: 3 + button_index: 10 } load_shooter { - ji: 2 - bi: 3 + joystick_index: 2 + button_index: 3 } rack_shooter { - ji: 2 - bi: 4 + joystick_index: 2 + button_index: 4 } fire_shooter { - ji: 1 - bi: 6 + joystick_index: 1 + button_index: 6 } reset_shooter { - ji: 2 - bi: 1 + joystick_index: 2 + button_index: 1 } switch_camera { - ji: 1 - bi: 2 + joystick_index: 1 + button_index: 2 } } drive { From 8bb5f7c024f28c93a6f9b57323fa4f2acb2ed148 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 25 Feb 2017 16:49:31 -0500 Subject: [PATCH 18/66] Start commenting TalonClusterDrive. --- .../drive/talonCluster/TalonClusterDrive.java | 82 +++++++++++++++---- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index f7e0d358..03736f46 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -25,72 +25,126 @@ */ public class TalonClusterDrive extends DriveSubsystem implements NavxSubsystem { + //The master talon on the right and left sides public RotPerSecCANTalonSRX rightMaster; public RotPerSecCANTalonSRX leftMaster; + + //The NavX gyro. public AHRS navx; + + //The PIDAngleCommand constants for turning to an angle with the NavX public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; + + //The PIDAngleCommand constants for using the NavX to drive straight. public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; + + //The oi used to drive the robot. public OI2017ArcadeGamepad oi; + + //The solenoid that shifts between gears public DoubleSolenoid shifter; + // TODO take this out after testing public CANTalon.MotionProfileStatus leftTPointStatus; public CANTalon.MotionProfileStatus rightTPointStatus; + + //The time when the robot was enabled. private long startTime; + + //The name of the file we log to. private String logFN; + + //Whether or not to use the NavX for driving straight. public boolean overrideNavX; + //The max speed the robot has reached during this run. This is NOT the max_speed constant in the map, this is what we use to determine that constant. private double maxSpeed; + + //What we multiply the joystick output by before giving it to the PID loop, to give the loop room to compensate. private final double PID_SCALE = 0.9; + + //The amount of time after up/down shifting before we can do it again private double upTimeThresh, downTimeThresh; + + //Whether we can up/down shift, used as a flag for the delay. private boolean okToUpshift, okToDownshift; + + //The setpoint (on a 0-1 scale) below which we stay in low gear. private double upshiftFwdDeadband; - private long timeAboveShift, timeBelowShift, timeLastShifted; + //The time, in milliseconds, at which we crossed the speed at which we up/down shift. + private long timeAboveShift, timeBelowShift; + + //The time we last shifted in either direction. + private long timeLastShifted; + + //The minimum time between shifting in either direction private Double shiftDelay; - public boolean overrideAutoShift = false; + //Whether not to override auto shifting. + public boolean overrideAutoShift; - boolean lowGear = true; //we want to start in low gear + //Whether we're in low gear + private boolean lowGear = true; //we want to start in low gear - double wheelDia, upshift, downshift; + //The speed to upshift at + private double upshift; + + //The speed to downshift at + private double downshift; public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDriveMap .TalonClusterDrive map, OI2017ArcadeGamepad oi) { super(map.getDrive()); + //Set the logfile name, which includes a timestamp. logFN = "/home/lvuser/logs/driveLog-" + new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()) + "" + ".csv"; + + //Write the headers for the logfile. try (PrintWriter writer = new PrintWriter(logFN)) { writer.println("time,left,right,left error,right error,left setpoint,right setpoint"); writer.close(); } catch (IOException e) { e.printStackTrace(); } + + //Set things this.map = map; this.oi = oi; - this.navx = new AHRS(SPI.Port.kMXP); - this.turnPID = map.getTurnPID(); - this.straightPID = map.getStraightPID(); - this.upTimeThresh = map.getUpTimeThresh(); - this.downTimeThresh = map.getDownTimeThresh(); + navx = new AHRS(SPI.Port.kMXP); + turnPID = map.getTurnPID(); + straightPID = map.getStraightPID(); + upTimeThresh = map.getUpTimeThresh(); + downTimeThresh = map.getDownTimeThresh(); + upshiftFwdDeadband = map.getUpshiftFwdDeadband(); + upshift = map.getUpshift(); + downshift = map.getDownshift(); + + //Shift delay is optional, so it'll be null if it isn't in map. if (map.hasShiftDelay()) { this.shiftDelay = map.getShiftDelay(); } + + //Initialize shifting constants, assuming robot is stationary. okToUpshift = false; okToDownshift = true; overrideAutoShift = false; timeLastShifted = 0; - upshiftFwdDeadband = map.getUpshiftFwdDeadband(); + + //If the map has the shifting piston, instantiate it. if (map.hasShifter()) { this.shifter = new DoubleSolenoid(map.getModuleNumber(), map.getShifter().getForward(), map.getShifter() .getReverse()); } + + //Initialize max maxSpeed = -1; + //Initialize master talons rightMaster = new RotPerSecCANTalonSRX(map.getRightMaster()); leftMaster = new RotPerSecCANTalonSRX(map.getLeftMaster()); - long upshiftTIme, downshiftTime; - + //Initialize slave talons. for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getRightSlaveList()) { RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); @@ -102,10 +156,6 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T talonObject.canTalon.set(map.getLeftMaster().getPort()); } - upshift = map.getUpshift(); - downshift = map.getDownshift(); - wheelDia = map.getWheelDiameter(); - // TODO take this out leftTPointStatus = new CANTalon.MotionProfileStatus(); rightTPointStatus = new CANTalon.MotionProfileStatus(); From 64806cbdb944d5e62197f3979ab5eef4da8ce84b Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 11:35:14 -0500 Subject: [PATCH 19/66] Autoformat and optimize imports --- build.gradle | 9 +- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../org/usfirst/frc/team449/robot/Robot.java | 4 +- .../usfirst/frc/team449/robot/Tester2017.java | 3 +- .../robot/components/NavxSubsystem.java | 1 + .../robot/components/PIDAngleCommand.java | 9 +- .../robot/components/PressureSensor.java | 28 ++-- .../components/RotPerSecCANTalonSRX.java | 43 ++++--- .../robot/drive/meccanum/MeccanumDrive.java | 121 +++++++++--------- .../commands/DefaultDriveMeccanum.java | 48 +++---- .../commands/DriveStraightMeccanum.java | 38 +++--- .../drive/meccanum/commands/ToggleStrafe.java | 32 ++--- .../drive/talonCluster/TalonClusterDrive.java | 5 +- .../commands/ArcadeDriveDefaultTTA.java | 8 +- .../commands/DefaultArcadeDrive.java | 8 +- .../talonCluster/commands/DriveAtSpeed.java | 3 +- .../commands/NavXTurnToAngle.java | 2 +- .../commands/OverrideAutoShift.java | 4 +- .../talonCluster/commands/OverrideNavX.java | 4 +- .../drive/talonCluster/commands/PIDTest.java | 4 +- .../commands/SwitchToHighGear.java | 4 +- .../commands/SwitchToLowGear.java | 4 +- .../climber/commands/CurrentClimb.java | 2 +- .../climber/commands/ManualClimb.java | 2 +- .../climber/commands/StopClimbing.java | 4 +- .../mechanism/feeder/FeederSubsystem.java | 6 +- .../intake/Intake2017/Intake2017.java | 7 +- .../Intake2017/commands/IntakeStop.java | 2 +- .../commands/ToggleIntakeUpDown.java | 4 +- .../Intake2017/commands/ToggleIntaking.java | 4 +- .../commands/spin/DynamicIntakeIn.java | 6 +- .../commands/spin/DynamicIntakeStop.java | 2 +- .../commands/spin/StaticIntakeIn.java | 6 +- .../commands/spin/StaticIntakeStop.java | 2 +- .../commands/updown/IntakeDown.java | 2 +- .../Intake2017/commands/updown/IntakeUp.java | 2 +- .../pneumatics/PneumaticsSubsystem.java | 25 ++-- .../pneumatics/commands/RunCompressor.java | 34 ++--- .../SingleFlywheelShooter.java | 6 +- .../commands/AccelerateFlywheel.java | 2 +- .../commands/ToggleShooter.java | 2 +- .../topcommands/shooter/FireShooter.java | 2 - .../topcommands/shooter/LoadShooter.java | 3 - .../topcommands/shooter/RackShooter.java | 5 - .../topcommands/shooter/ResetShooter.java | 3 - .../usfirst/frc/team449/robot/oi/OI2017.java | 20 +-- .../team449/robot/oi/OI2017ArcadeGamepad.java | 64 +++++---- .../frc/team449/robot/oi/OI2017Tank.java | 1 - .../team449/robot/vision/CameraSubsystem.java | 77 +++++------ .../robot/vision/commands/ChangeCam.java | 92 ++++++------- .../usfirst/frc/team449/robot/Robot2017.proto | 10 +- .../components/AnalogPressureSensor.proto | 6 +- .../robot/components/MjpegServer.proto | 4 +- .../components/ToleranceBufferAnglePID.proto | 4 +- .../components/UnitlessCANTalonSRX.proto | 2 +- .../team449/robot/components/UsbCamera.proto | 8 +- .../robot/drive/meccanum/MeccanumDrive.proto | 16 +-- .../talonCluster/TalonClusterDrive.proto | 8 +- .../robot/mechanism/feeder/Feeder.proto | 6 +- .../robot/mechanism/intake/Intake2017.proto | 4 +- .../pneumatics/PneumaticSystem.proto | 4 +- .../SingleFlywheelShooter.proto | 2 +- .../frc/team449/robot/oi/JoystickButton.proto | 2 +- .../usfirst/frc/team449/robot/oi/OI2017.proto | 10 +- .../robot/oi/OI2017ArcadeGamepad.proto | 56 ++++---- .../frc/team449/robot/vision/Camera.proto | 6 +- 67 files changed, 474 insertions(+), 445 deletions(-) diff --git a/build.gradle b/build.gradle index c9949835..a4183d54 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ protobuf { // options. Note the braces cannot be omitted, otherwise the // plugin will not be added. This is because of the implicit way // NamedDomainObjectContainer binds the methods. - grpc { } + grpc {} } } } @@ -82,7 +82,7 @@ idea { } } -task convertFiles{ +task convertFiles { doLast { fileTree("./src/main/resources").matching { include "*" }.each { aFile -> exec { @@ -101,7 +101,8 @@ frc { } wpi { - wpilibVersion = "+" // The WPILib version to use. For this version of GradleRIO, must be a 2017 version + wpilibVersion = "+" + // The WPILib version to use. For this version of GradleRIO, must be a 2017 version ntcoreVersion = "+" // The NetworkTables Core version to use. opencvVersion = "+" // The OpenCV version to use cscoreVersion = "+" // The CSCore version to use @@ -124,7 +125,7 @@ task genJavadoc(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir } -task('copyResources', dependsOn: convertFiles){ +task('copyResources', dependsOn: convertFiles) { doLast { ssh.run { session(remotes.rio) { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 37995fc5b561bd3a194a15b4b12fe2cb7e905a58..9cf444cd587c7366e3361cdddd49318232fdda35 100644 GIT binary patch delta 26 gcmX@GocX|V<_*z@m<3`IH^&_k5(F_O7hm=T0Fz@1UH||9 delta 26 gcmX@GocX|V<_*z@n4k9eZ;m@8BnV + *

* Note: This method is called getSpeed since the TalonControlMode enum is called speed. However, the output * is signed and is actually a velocity. * @@ -172,8 +179,8 @@ public double nativeToRPS(double nat) { public double getSpeed() { //If we use a CTRE encoder, it returns in rotations per minute if (feedbackDevice == CANTalon.FeedbackDevice.CtreMagEncoder_Relative || feedbackDevice == CANTalon - .FeedbackDevice.CtreMagEncoder_Absolute){ - return canTalon.getSpeed()/60; + .FeedbackDevice.CtreMagEncoder_Absolute) { + return canTalon.getSpeed() / 60; } //Otherwise, convert from natives. return nativeToRPS(canTalon.getSpeed()); @@ -213,17 +220,19 @@ public void setPSlot(int slot) throws IllegalArgumentException { /** * Get the current closed-loop velocity error in RPS. WARNING: will give garbage if not in velocity mode. + * * @return The closed-loop error in RPS */ - public double getError(){ + public double getError() { return nativeToRPS(canTalon.getError()); } /** * Get the high gear max speed. Sometimes useful for scaling joystick output. + * * @return The high gear max speed in RPS */ - public double getMaxSpeedHG(){ + public double getMaxSpeedHG() { return map.getMaxSpeedHg(); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java index e62f0de6..e04acbc1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.java @@ -13,75 +13,78 @@ */ public class MeccanumDrive extends DriveSubsystem implements NavxSubsystem { - public AHRS navx; - public RotPerSecCANTalonSRX frontLeft, frontRight, backLeft, backRight; - public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; - public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; - public OI2017 oi; - private long startTime; + public AHRS navx; + public RotPerSecCANTalonSRX frontLeft, frontRight, backLeft, backRight; + public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; + public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; + public OI2017 oi; + private long startTime; - boolean strafe = false; + boolean strafe = false; - public MeccanumDrive(maps.org.usfirst.frc.team449.robot.drive.meccanum.MeccanumDriveMap.MeccanumDrive map, OI2017 oi){ - super(map.getDrive()); - this.map = map; - this.navx = new AHRS(SPI.Port.kMXP); - this.turnPID = map.getTurnPID(); - this.straightPID = map.getStraightPID(); - this.oi = oi; + public MeccanumDrive(maps.org.usfirst.frc.team449.robot.drive.meccanum.MeccanumDriveMap.MeccanumDrive map, OI2017 + oi) { + super(map.getDrive()); + this.map = map; + this.navx = new AHRS(SPI.Port.kMXP); + this.turnPID = map.getTurnPID(); + this.straightPID = map.getStraightPID(); + this.oi = oi; - this.frontLeft = new RotPerSecCANTalonSRX(map.getFrontLeft()); - this.frontRight = new RotPerSecCANTalonSRX(map.getFrontRight()); - this.backLeft = new RotPerSecCANTalonSRX(map.getBackLeft()); - this.backRight = new RotPerSecCANTalonSRX(map.getBackRight()); - } + this.frontLeft = new RotPerSecCANTalonSRX(map.getFrontLeft()); + this.frontRight = new RotPerSecCANTalonSRX(map.getFrontRight()); + this.backLeft = new RotPerSecCANTalonSRX(map.getBackLeft()); + this.backRight = new RotPerSecCANTalonSRX(map.getBackRight()); + } - private void setVBusThrottle(double fl, double fr, double bl, double br){ - frontLeft.setPercentVbus(fl); - frontRight.setPercentVbus(fr); - backLeft.setPercentVbus(bl); - backRight.setPercentVbus(br); - } + private void setVBusThrottle(double fl, double fr, double bl, double br) { + frontLeft.setPercentVbus(fl); + frontRight.setPercentVbus(fr); + backLeft.setPercentVbus(bl); + backRight.setPercentVbus(br); + } - private void setPIDThrottle(double fl, double fr, double bl, double br){ - frontLeft.setSpeed(.7 * (fl * frontLeft.getMaxSpeed())); - frontRight.setSpeed(.7 * (fr * frontRight.getMaxSpeed())); - backLeft.setSpeed(.7 * (bl * backLeft.getMaxSpeed())); - backRight.setSpeed(.7 * (br * backRight.getMaxSpeed())); - } + private void setPIDThrottle(double fl, double fr, double bl, double br) { + frontLeft.setSpeed(.7 * (fl * frontLeft.getMaxSpeed())); + frontRight.setSpeed(.7 * (fr * frontRight.getMaxSpeed())); + backLeft.setSpeed(.7 * (bl * backLeft.getMaxSpeed())); + backRight.setSpeed(.7 * (br * backRight.getMaxSpeed())); + } - public void setDefaultThrottle(double fl, double fr, double bl, double br) { - setPIDThrottle(fl, fr, bl, br); - } + public void setDefaultThrottle(double fl, double fr, double bl, double br) { + setPIDThrottle(fl, fr, bl, br); + } - /** - * Sets all motors to the same throttle value. - * @param throttle the throttle value - */ - public void setDefaultThrottle(double throttle){ - setDefaultThrottle(throttle, throttle); - } + /** + * Sets all motors to the same throttle value. + * + * @param throttle the throttle value + */ + public void setDefaultThrottle(double throttle) { + setDefaultThrottle(throttle, throttle); + } - public void toggleStrafe(){ - strafe = !strafe; - } + public void toggleStrafe() { + strafe = !strafe; + } - public void setDefaultThrottle(double leftOrFront, double rightOrBack){ - if(!strafe) { - setDefaultThrottle(leftOrFront, rightOrBack, leftOrFront, rightOrBack); - } else { - setDefaultThrottle(leftOrFront, leftOrFront, -rightOrBack, -rightOrBack); //strafing requires inverting the back motors - } - } + public void setDefaultThrottle(double leftOrFront, double rightOrBack) { + if (!strafe) { + setDefaultThrottle(leftOrFront, rightOrBack, leftOrFront, rightOrBack); + } else { + setDefaultThrottle(leftOrFront, leftOrFront, -rightOrBack, -rightOrBack); //strafing requires inverting + // the back motors + } + } - @Override - public double getGyroOutput(){ - return navx.pidGet(); - } + @Override + public double getGyroOutput() { + return navx.pidGet(); + } - @Override - public void initDefaultCommand(){ - //Do nothing - } + @Override + public void initDefaultCommand() { + //Do nothing + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DefaultDriveMeccanum.java b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DefaultDriveMeccanum.java index a0bc7225..1f1fc585 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DefaultDriveMeccanum.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DefaultDriveMeccanum.java @@ -9,32 +9,32 @@ * Created by sam on 1/26/17. */ public class DefaultDriveMeccanum extends ReferencingCommand { - public OISubsystem oi; - double leftThrottle, rightThrottle; + public OISubsystem oi; + double leftThrottle, rightThrottle; - public DefaultDriveMeccanum(MeccanumDrive drive, OISubsystem oi){ - super(drive); - this.oi = oi; - requires(subsystem); - } + public DefaultDriveMeccanum(MeccanumDrive drive, OISubsystem oi) { + super(drive); + this.oi = oi; + requires(subsystem); + } - @Override - protected void initialize(){ - ((MeccanumDrive) subsystem).frontLeft.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - ((MeccanumDrive) subsystem).frontRight.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - ((MeccanumDrive) subsystem).backLeft.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - ((MeccanumDrive) subsystem).backRight.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - } + @Override + protected void initialize() { + ((MeccanumDrive) subsystem).frontLeft.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); + ((MeccanumDrive) subsystem).frontRight.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); + ((MeccanumDrive) subsystem).backLeft.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); + ((MeccanumDrive) subsystem).backRight.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); + } - @Override - protected void execute(){ - leftThrottle = oi.getDriveAxisLeft(); - rightThrottle = oi.getDriveAxisRight(); - ((MeccanumDrive) subsystem).setDefaultThrottle(leftThrottle, rightThrottle); - } + @Override + protected void execute() { + leftThrottle = oi.getDriveAxisLeft(); + rightThrottle = oi.getDriveAxisRight(); + ((MeccanumDrive) subsystem).setDefaultThrottle(leftThrottle, rightThrottle); + } - @Override - protected boolean isFinished(){ - return false; - } + @Override + protected boolean isFinished() { + return false; + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DriveStraightMeccanum.java b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DriveStraightMeccanum.java index 8edf2a87..858df60e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DriveStraightMeccanum.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/DriveStraightMeccanum.java @@ -10,26 +10,28 @@ */ public class DriveStraightMeccanum extends ReferencingCommand { - public OISubsystem oi; - public double leftThrottle; + public OISubsystem oi; + public double leftThrottle; - public DriveStraightMeccanum(MeccanumDrive drive, OISubsystem oi){ - super(drive); - this.oi = oi; - requires(subsystem); - } + public DriveStraightMeccanum(MeccanumDrive drive, OISubsystem oi) { + super(drive); + this.oi = oi; + requires(subsystem); + } - @Override - protected void initialize(){((MeccanumDrive) subsystem).setDefaultThrottle(0);} + @Override + protected void initialize() { + ((MeccanumDrive) subsystem).setDefaultThrottle(0); + } - @Override - protected void execute(){ - leftThrottle = oi.getDriveAxisLeft(); - ((MeccanumDrive) subsystem).setDefaultThrottle(leftThrottle); - } + @Override + protected void execute() { + leftThrottle = oi.getDriveAxisLeft(); + ((MeccanumDrive) subsystem).setDefaultThrottle(leftThrottle); + } - @Override - protected boolean isFinished(){ - return false; - } + @Override + protected boolean isFinished() { + return false; + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/ToggleStrafe.java b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/ToggleStrafe.java index 1c2a94a7..06124abc 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/ToggleStrafe.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/meccanum/commands/ToggleStrafe.java @@ -8,23 +8,23 @@ */ public class ToggleStrafe extends ReferencingCommand { - public ToggleStrafe(MeccanumDrive drive){ - super(drive); - requires(subsystem); - } + public ToggleStrafe(MeccanumDrive drive) { + super(drive); + requires(subsystem); + } - @Override - protected void initialize(){ - ((MeccanumDrive) subsystem).toggleStrafe(); - } + @Override + protected void initialize() { + ((MeccanumDrive) subsystem).toggleStrafe(); + } - @Override - protected void execute() { - //Do nothing - } + @Override + protected void execute() { + //Do nothing + } - @Override - protected boolean isFinished(){ - return true; - } + @Override + protected boolean isFinished() { + return true; + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 03736f46..7766a128 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -57,7 +57,8 @@ public class TalonClusterDrive extends DriveSubsystem implements NavxSubsystem { //Whether or not to use the NavX for driving straight. public boolean overrideNavX; - //The max speed the robot has reached during this run. This is NOT the max_speed constant in the map, this is what we use to determine that constant. + //The max speed the robot has reached during this run. This is NOT the max_speed constant in the map, this is what + // we use to determine that constant. private double maxSpeed; //What we multiply the joystick output by before giving it to the PID loop, to give the loop room to compensate. @@ -205,7 +206,7 @@ public void logData() { sb.append(leftMaster.getError()); sb.append(","); sb.append(rightMaster.getError()); - /* + /* sb.append(","); sb.append(leftTPointStatus.activePoint.position); sb.append(","); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java index 0bb7ec94..d6f84e66 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java @@ -77,10 +77,10 @@ protected void initialize() { */ @Override protected void execute() { - if (oi.getRot() > 0 && oi.getRot() > lastAngleStick){ - this.setSetpointRelative(turnCoeffecient*(oi.getRot() - lastAngleStick)); - } else if (oi.getRot() < 0 && oi.getRot() < lastAngleStick){ - this.setSetpointRelative(turnCoeffecient*(oi.getRot() - lastAngleStick)); + if (oi.getRot() > 0 && oi.getRot() > lastAngleStick) { + this.setSetpointRelative(turnCoeffecient * (oi.getRot() - lastAngleStick)); + } else if (oi.getRot() < 0 && oi.getRot() < lastAngleStick) { + this.setSetpointRelative(turnCoeffecient * (oi.getRot() - lastAngleStick)); } lastAngleStick = oi.getRot(); drive.logData(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index e9465216..06344a81 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -26,7 +26,8 @@ public class DefaultArcadeDrive extends PIDAngleCommand { //The map of values ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map; - public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, ArcadeOI oi) { + public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, + ArcadeOI oi) { super(map, drive); maxAngularVel = map.getMaxAngularVel(); this.oi = oi; @@ -46,7 +47,7 @@ protected void initialize() { //Initial assignment drivingStraight = false; - driveSubsystem.setLowGear(true); //starting from rest, we want to be in low gear so we can accelerate + driveSubsystem.setLowGear(true); //starting from rest, we want to be in low gear so we can accelerate vel = oi.getFwd(); rot = oi.getRot(); } @@ -114,7 +115,8 @@ protected void usePIDOutput(double output) { output = -minimumOutput; } } - //Set the output to 0 if we're within the deadband. Whether or not the deadband is enabled is dealt with in PIDAngleCommand. + //Set the output to 0 if we're within the deadband. Whether or not the deadband is enabled is dealt with + // in PIDAngleCommand. if (Math.abs(this.getPIDController().getError()) < deadband) { output = 0; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java index 5a028009..83b8f601 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java @@ -1,6 +1,5 @@ package org.usfirst.frc.team449.robot.drive.talonCluster.commands; -import edu.wpi.first.wpilibj.Talon; import org.usfirst.frc.team449.robot.ReferencingCommand; import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; @@ -15,7 +14,7 @@ public class DriveAtSpeed extends ReferencingCommand { public DriveAtSpeed(TalonClusterDrive drive, double speed, double seconds) { super(drive); -// requires(subsystem); + // requires(subsystem); this.speed = speed; this.seconds = seconds; System.out.println("Drive Robot bueno"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java index 17af94d9..1b978c5e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java @@ -52,7 +52,7 @@ else if (output < 0 && output > -minimumOutput) } //Which one of these is negative may be different from robot to robot, we don't know. SmartDashboard.putNumber("Processed output", output); - drive.setDefaultThrottle(output, -output); //spin to the right angle + drive.setDefaultThrottle(output, -output); //spin to the right angle } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java index 2e5fdbf5..0047fb7f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java @@ -6,12 +6,12 @@ /** * Created by Noah Gleason on 2/12/2017. */ -public class OverrideAutoShift extends ReferencingCommand{ +public class OverrideAutoShift extends ReferencingCommand { private boolean override; private boolean switchToLowGear; - public OverrideAutoShift(TalonClusterDrive drive, boolean override, boolean switchToLowGear){ + public OverrideAutoShift(TalonClusterDrive drive, boolean override, boolean switchToLowGear) { super(drive); requires(subsystem); this.override = override; diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java index dbb3d129..65127ca1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java @@ -6,9 +6,9 @@ /** * Created by Noah Gleason on 2/12/2017. */ -public class OverrideNavX extends ReferencingCommand{ +public class OverrideNavX extends ReferencingCommand { - public OverrideNavX(TalonClusterDrive drive){ + public OverrideNavX(TalonClusterDrive drive) { super(drive); requires(subsystem); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index d651e23e..b177d077 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -24,9 +24,9 @@ public PIDTest(MappedSubsystem mappedSubsystem) { TalonClusterDrive driveSubsystem = (TalonClusterDrive) mappedSubsystem; -// for (int i = 0; i < 5; i++) { + // for (int i = 0; i < 5; i++) { addSequential(new DriveAtSpeed(driveSubsystem, 0.75, 1.5)); addSequential(new DriveAtSpeed(driveSubsystem, 0, 5)); -// } + // } } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java index 97add02b..9636f663 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java @@ -7,13 +7,13 @@ /** * Created by BlairRobot on 2017-02-09. */ -public class SwitchToHighGear extends ReferencingCommand{ +public class SwitchToHighGear extends ReferencingCommand { public SwitchToHighGear(MappedSubsystem subsystem) { super(subsystem); } @Override - protected void initialize(){ + protected void initialize() { System.out.println("SwitchToHighGear init."); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java index be00e410..027d0d0f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java @@ -7,13 +7,13 @@ /** * Created by BlairRobot on 2017-02-09. */ -public class SwitchToLowGear extends ReferencingCommand{ +public class SwitchToLowGear extends ReferencingCommand { public SwitchToLowGear(MappedSubsystem subsystem) { super(subsystem); } @Override - protected void initialize(){ + protected void initialize() { System.out.println("SwitchToLowGear init."); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java index dd829548..15a0959d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java @@ -28,7 +28,7 @@ protected void execute() { //if (climber.reachedTop()){ // climber.setPercentVbus(0); //} else { - climber.setPercentVbus(1); + climber.setPercentVbus(1); //} SmartDashboard.putNumber("Current", climber.canTalonSRX.canTalon.getOutputCurrent()); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java index c4c20f26..08972819 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java @@ -10,7 +10,7 @@ public class ManualClimb extends ReferencingCommand { ClimberSubsystem climber; - public ManualClimb (ClimberSubsystem climber) { + public ManualClimb(ClimberSubsystem climber) { super(climber); requires(climber); this.climber = climber; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java index 76ad8284..12aeb667 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java @@ -6,11 +6,11 @@ /** * Created by Noah Gleason on 2/11/2017. */ -public class StopClimbing extends ReferencingCommand{ +public class StopClimbing extends ReferencingCommand { ClimberSubsystem climber; - public StopClimbing (ClimberSubsystem climber) { + public StopClimbing(ClimberSubsystem climber) { super(climber); requires(climber); this.climber = climber; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java index 62939912..5d9011f8 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java @@ -7,7 +7,7 @@ /** * Created by Noah Gleason on 2/18/2017. */ -public class FeederSubsystem extends MechanismSubsystem{ +public class FeederSubsystem extends MechanismSubsystem { private VictorSP victor; private double speed; @@ -21,12 +21,12 @@ public FeederSubsystem(FeederMap.Feeder map) { running = false; } - public void runVictor(){ + public void runVictor() { victor.set(speed); running = true; } - public void stopVictor(){ + public void stopVictor() { victor.set(0); running = false; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java index 654539d7..64fdea48 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java @@ -27,14 +27,15 @@ public Intake2017(maps.org.usfirst.frc.team449.robot.mechanism.intake.Intake2017 fixedVictor.setInverted(map.getFixedVictor().getInverted()); this.actuatedVictor = new VictorSP(map.getActuatedVictor().getPort()); actuatedVictor.setInverted(map.getActuatedVictor().getInverted()); - this.piston = new DoubleSolenoid(map.getPistonModuleNum(), map.getPiston().getForward(), map.getPiston().getReverse()); + this.piston = new DoubleSolenoid(map.getPistonModuleNum(), map.getPiston().getForward(), map.getPiston() + .getReverse()); } public void setFixedVictor(double speed) { fixedVictor.set(speed); } - public void setActuatedVictor(double speed){ + public void setActuatedVictor(double speed) { actuatedVictor.set(speed); } @@ -44,7 +45,7 @@ public void setPiston(DoubleSolenoid.Value value) { intakeUp = (value == DoubleSolenoid.Value.kReverse); } - public void setIntaking(boolean isIntaking){ + public void setIntaking(boolean isIntaking) { this.isIntaking = isIntaking; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/IntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/IntakeStop.java index 23caf055..1ec5010f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/IntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/IntakeStop.java @@ -7,7 +7,7 @@ * Created by blairrobot on 1/28/17. */ @Deprecated -public class IntakeStop extends ReferencingCommand { +public class IntakeStop extends ReferencingCommand { Intake2017 intake2017; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java index fc0b491f..bdcc2015 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java @@ -1,9 +1,7 @@ package org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands; import edu.wpi.first.wpilibj.DoubleSolenoid; -import org.usfirst.frc.team449.robot.MappedSubsystem; import org.usfirst.frc.team449.robot.ReferencingCommand; -import org.usfirst.frc.team449.robot.ReferencingCommandGroup; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** @@ -27,7 +25,7 @@ protected void initialize() { @Override protected void execute() { - intake2017.setPiston(intake2017.intakeUp? DoubleSolenoid.Value.kForward : DoubleSolenoid.Value.kReverse); + intake2017.setPiston(intake2017.intakeUp ? DoubleSolenoid.Value.kForward : DoubleSolenoid.Value.kReverse); } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java index dfc10b12..60dfbd96 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java @@ -6,7 +6,7 @@ /** * Created by blairrobot on 1/28/17. */ -public class ToggleIntaking extends ReferencingCommand{ +public class ToggleIntaking extends ReferencingCommand { private Intake2017 intake2017; @@ -24,7 +24,7 @@ protected void initialize() { @Override protected void execute() { - if (intake2017.isIntaking){ + if (intake2017.isIntaking) { intake2017.setActuatedVictor(0); intake2017.setFixedVictor(0); } else { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java index 4376ed81..84b30962 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java @@ -11,7 +11,7 @@ public class DynamicIntakeIn extends ReferencingCommand { public DynamicIntakeIn(Intake2017 intake) { super(intake); -// requires(intake); + // requires(intake); this.intake = intake; } @@ -27,11 +27,11 @@ protected boolean isFinished() { @Override protected void end() { -// intake.setActuatedVictor(0); + // intake.setActuatedVictor(0); } @Override protected void interrupted() { -// intake.setActuatedVictor(0); + // intake.setActuatedVictor(0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java index 489c8894..0e4092db 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java @@ -11,7 +11,7 @@ public class DynamicIntakeStop extends ReferencingCommand { public DynamicIntakeStop(Intake2017 intake) { super(intake); -// requires(intake); + // requires(intake); this.intake = intake; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java index 918ebf90..7320c4fd 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java @@ -11,7 +11,7 @@ public class StaticIntakeIn extends ReferencingCommand { public StaticIntakeIn(Intake2017 intake) { super(intake); -// requires(intake); + // requires(intake); this.intake = intake; } @@ -27,11 +27,11 @@ protected boolean isFinished() { @Override protected void end() { -// intake.setFixedVictor(0); + // intake.setFixedVictor(0); } @Override protected void interrupted() { -// intake.setFixedVictor(0); + // intake.setFixedVictor(0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java index 3cd5c1cf..4eeeb79c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java @@ -11,7 +11,7 @@ public class StaticIntakeStop extends ReferencingCommand { public StaticIntakeStop(Intake2017 intake) { super(intake); -// requires(intake); + // requires(intake); this.intake = intake; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java index 257e6eba..9f3ab1a3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java @@ -13,7 +13,7 @@ public class IntakeDown extends ReferencingCommand { public IntakeDown(Intake2017 intake2017) { super(intake2017); -// requires(intake2017); + // requires(intake2017); this.intake2017 = intake2017; System.out.println("IntakeDown constructed"); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java index 278f9a4d..b068614f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java @@ -13,7 +13,7 @@ public class IntakeUp extends ReferencingCommand { public IntakeUp(Intake2017 intake2017) { super(intake2017); -// requires(intake2017); + // requires(intake2017); this.intake2017 = intake2017; System.out.println("IntakeUp constructed"); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticsSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticsSubsystem.java index 0d485d13..6d15fce5 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticsSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticsSubsystem.java @@ -9,19 +9,20 @@ * Created by sam on 1/29/17. */ public class PneumaticsSubsystem extends MappedSubsystem { - public Compressor compressor; - public PressureSensor pressureSensor; + public Compressor compressor; + public PressureSensor pressureSensor; - public PneumaticsSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.pneumatics.PneumaticSystemMap.PneumaticSystem map){ - super(map); - pressureSensor =new PressureSensor(map.getPressureSensor()); - compressor = new Compressor(map.getNodeID()); + public PneumaticsSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.pneumatics.PneumaticSystemMap + .PneumaticSystem map) { + super(map); + pressureSensor = new PressureSensor(map.getPressureSensor()); + compressor = new Compressor(map.getNodeID()); - compressor.setClosedLoopControl(true); //turns on compressor - } + compressor.setClosedLoopControl(true); //turns on compressor + } - @Override - public void initDefaultCommand(){ - this.setDefaultCommand(new RunCompressor(this)); - } + @Override + public void initDefaultCommand() { + this.setDefaultCommand(new RunCompressor(this)); + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/commands/RunCompressor.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/commands/RunCompressor.java index 0718429c..c0e53810 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/commands/RunCompressor.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/pneumatics/commands/RunCompressor.java @@ -8,25 +8,25 @@ * Created by sam on 1/29/17. */ public class RunCompressor extends ReferencingCommand { - PneumaticsSubsystem pneumaticsSubsystem; + PneumaticsSubsystem pneumaticsSubsystem; - public RunCompressor(PneumaticsSubsystem ps){ - super(ps); - pneumaticsSubsystem = ps; - } + public RunCompressor(PneumaticsSubsystem ps) { + super(ps); + pneumaticsSubsystem = ps; + } - @Override - public void initialize(){ - pneumaticsSubsystem.compressor.setClosedLoopControl(true); - } + @Override + public void initialize() { + pneumaticsSubsystem.compressor.setClosedLoopControl(true); + } - @Override - public void execute(){ - SmartDashboard.putNumber("Pressure (psi)",pneumaticsSubsystem.pressureSensor.getPressure()); - } + @Override + public void execute() { + SmartDashboard.putNumber("Pressure (psi)", pneumaticsSubsystem.pressureSensor.getPressure()); + } - @Override - public boolean isFinished(){ - return false; - } + @Override + public boolean isFinished() { + return false; + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java index 0b6b4652..ee14b068 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java @@ -16,7 +16,7 @@ public class SingleFlywheelShooter extends MappedSubsystem { public boolean spinning; private RotPerSecCANTalonSRX talon; - public double throttle=0.5; + public double throttle = 0.5; /** * Counts per revolution */ @@ -29,7 +29,7 @@ public SingleFlywheelShooter(maps.org.usfirst.frc.team449.robot.mechanism.single super(map.getMechanism()); this.map = map; this.talon = new RotPerSecCANTalonSRX(map.getTalon()); - if(map.hasThrottle()) { + if (map.hasThrottle()) { this.throttle = map.getThrottle(); } System.out.println("Shooter F: " + talon.canTalon.getF()); @@ -91,7 +91,7 @@ protected void initDefaultCommand() { e.printStackTrace(); } startTime = System.nanoTime(); -// setDefaultCommand(new PIDTune(this)); + // setDefaultCommand(new PIDTune(this)); System.out.println("Finished init default command"); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java index 1c95c960..9dce9e00 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java @@ -24,7 +24,7 @@ protected void initialize() { @Override protected void execute() { - flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle*100.0); + flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle * 100.0); flywheelShooter.setDefaultSpeed(((SingleFlywheelShooter) subsystem).throttle); flywheelShooter.spinning = true; System.out.println("AccelerateFlywheel executed"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java index b32645ac..68b7b529 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java @@ -31,7 +31,7 @@ protected void initialize() { @Override protected void execute() { - flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle*100.0); + flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle * 100.0); System.out.println("AccelerateFlywheel executed"); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java index 95e3eefe..b6268ede 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java @@ -4,9 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.RunFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.DynamicIntakeStop; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticIntakeIn; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java index 4ac8b15b..ae78b934 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java @@ -4,10 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.DynamicIntakeIn; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDI; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticIntakeIn; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeDown; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java index 524f67b6..ae51397d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java @@ -2,17 +2,12 @@ import edu.wpi.first.wpilibj.command.CommandGroup; import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; -import org.usfirst.frc.team449.robot.mechanism.feeder.commands.RunFeeder; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.DynamicIntakeIn; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDI; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticIntakeStop; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeUp; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; -import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** * Created by ryant on 2017-02-18. diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java index 239a676f..14290575 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java @@ -4,12 +4,9 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SSDS; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeDown; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeUp; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; -import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java index fe60b607..c5235b05 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017.java @@ -47,12 +47,12 @@ public OI2017(maps.org.usfirst.frc.team449.robot.oi.OI2017Map.OI2017 map) { Joystick leftStick = new Joystick(map.getLeftStick()); buttonPad = new Joystick(map.getButtonPad()); ttaStick = gamepad; -// leftThrottle = new PolyThrottle(leftStick, 1, 1); -// rightThrottle = new PolyThrottle(rightStick, 1, 1); + // leftThrottle = new PolyThrottle(leftStick, 1, 1); + // rightThrottle = new PolyThrottle(rightStick, 1, 1); leftThrottle = new SmoothedThrottle(leftStick, 1); rightThrottle = new SmoothedThrottle(rightStick, 1); -// leftThrottle = new ExpThrottle(leftStick, 1, 50); -// rightThrottle = new ExpThrottle(rightStick, 1, 50); + // leftThrottle = new ExpThrottle(leftStick, 1, 50); + // rightThrottle = new ExpThrottle(rightStick, 1, 50); turnaround = new JoystickButton(ttaStick, map.getTurnaroundButton()); tt0 = new JoystickButton(ttaStick, map.getTurnTo0Button()); tt30 = new JoystickButton(ttaStick, map.getTurnTo30Button()); @@ -73,11 +73,13 @@ public void mapButtons() { tt180.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, 2.5)); tt330.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, -30, Robot.driveSubsystem, 2.5)); driveStraight.whileHeld(new NavXDriveStraight(Robot.driveSubsystem.straightPID, Robot.driveSubsystem, this)); -// climbButton.whileHeld(new CurrentClimb(Robot.climberSubsystem)); -// toggleFlywheel.whenPressed(new org.usfirst.frc.team449.robot.mechanism.doubleflywheelshooter.commands.ToggleFlywheel(Robot.doubleFlywheelShooterSubsystem)); -// toggleFlywheel.whenPressed(new org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.ToggleFlywheel(Robot.singleFlywheelShooterSubsystem)); -// toggleIntake.whenPressed(new ToggleIntaking(Robot.intakeSubsystem)); -// toggleIntakeUpDown.whenPressed(new ToggleIntakeUpDown(Robot.intakeSubsystem)); + // climbButton.whileHeld(new CurrentClimb(Robot.climberSubsystem)); + // toggleFlywheel.whenPressed(new org.usfirst.frc.team449.robot.mechanism.doubleflywheelshooter.commands + // .ToggleFlywheel(Robot.doubleFlywheelShooterSubsystem)); + // toggleFlywheel.whenPressed(new org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands + // .ToggleFlywheel(Robot.singleFlywheelShooterSubsystem)); + // toggleIntake.whenPressed(new ToggleIntaking(Robot.intakeSubsystem)); + // toggleIntakeUpDown.whenPressed(new ToggleIntakeUpDown(Robot.intakeSubsystem)); } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 1a6eb428..780e7e54 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -4,7 +4,12 @@ import edu.wpi.first.wpilibj.buttons.JoystickButton; import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepadMap; import org.usfirst.frc.team449.robot.Robot; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.*; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideNavX; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToHighGear; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; import org.usfirst.frc.team449.robot.mechanism.climber.commands.CurrentClimb; import org.usfirst.frc.team449.robot.mechanism.climber.commands.StopClimbing; @@ -25,7 +30,8 @@ */ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { - //How much the D-pad moves the robot rotationally on a 0 to 1 scale, equivalent to pushing the turning stick that much of the way. + //How much the D-pad moves the robot rotationally on a 0 to 1 scale, equivalent to pushing the turning stick that + // much of the way. private static double SHIFT; //The throttle wrapper for the stick controlling turning velocity. @@ -85,7 +91,8 @@ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { //Lower and run the intake while turning off the flywheel and feeder. private JoystickButton loadShooter; - //Raise the intake and run the static one to agitate the ball bin. Run the flywheel to get it up to speed, but don't run the feeder. + //Raise the intake and run the static one to agitate the ball bin. Run the flywheel to get it up to speed, but + // don't run the feeder. private JoystickButton rackShooter; //Same as rack, but run the feeder in order to fire balls. private JoystickButton fireShooter; @@ -116,7 +123,7 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasTurnTo330()) { turnTo330 = new MappedJoystickButton(map.getTurnTo330()); } - if(map.hasTurnaround()) { + if (map.hasTurnaround()) { turnaround = new MappedJoystickButton(map.getTurnaround()); } if (map.hasSwitchToLowGear()) { @@ -126,10 +133,10 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasClimb()) { climb = new MappedJoystickButton(map.getClimb()); } - if (map.hasTmpOverrideLow()){ + if (map.hasTmpOverrideLow()) { tmpOverrideLow = new MappedJoystickButton(map.getTmpOverrideLow()); } - if (map.hasTmpOverrideHigh()){ + if (map.hasTmpOverrideHigh()) { tmpOverrideHigh = new MappedJoystickButton(map.getTmpOverrideHigh()); } if (map.hasToggleOverrideHigh()) { @@ -141,7 +148,7 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasToggleIntake()) { toggleIntake = new MappedJoystickButton(map.getToggleIntake()); } - if (map.hasToggleIntakeUpDown()){ + if (map.hasToggleIntakeUpDown()) { toggleIntakeUpDown = new MappedJoystickButton(map.getToggleIntakeUpDown()); } if (map.hasShoot()) { @@ -156,13 +163,14 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasFireShooter()) { fireShooter = new MappedJoystickButton(map.getFireShooter()); } - if (map.hasSwitchCamera()){ + if (map.hasSwitchCamera()) { switchCamera = new MappedJoystickButton(map.getSwitchCamera()); } } /** - * The output of the throttle controlling linear velocity, smoothed and adjusted according to what type of joystick it is. + * The output of the throttle controlling linear velocity, smoothed and adjusted according to what type of + * joystick it is. * * @return The processed stick output, sign-adjusted so 1 is forward and -1 is backwards. */ @@ -172,14 +180,15 @@ public double getFwd() { //TODO put this number in the map final double ROT_SCALE = 0.2; //Scale based on rotational throttle for more responsive turning at high speed - return fwdThrottle.getValue()*(1-ROT_SCALE*rotThrottle.getValue()); + return fwdThrottle.getValue() * (1 - ROT_SCALE * rotThrottle.getValue()); } else { return 0; } } /** - * Get the output of the D-pad or turning joystick, whichever is in use. If both are in use, the D-pad takes preference. + * Get the output of the D-pad or turning joystick, whichever is in use. If both are in use, the D-pad takes + * preference. * * @return The processed stick or D-pad output, sign-adjusted so 1 is right and -1 is left. */ @@ -208,7 +217,8 @@ public void mapButtons() { //Map drive commands if (turnaround != null) { - turnaround.whenPressed(new NavXRelativeTTA(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, TIMEOUT)); + turnaround.whenPressed(new NavXRelativeTTA(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, + TIMEOUT)); } if (turnTo0 != null) { turnTo0.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 0, Robot.driveSubsystem, TIMEOUT)); @@ -217,25 +227,28 @@ public void mapButtons() { turnTo30.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 30, Robot.driveSubsystem, TIMEOUT)); } if (turnTo180 != null) { - turnTo180.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, TIMEOUT)); + turnTo180.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, 180, Robot.driveSubsystem, + TIMEOUT)); } if (turnTo330 != null) { - turnTo330.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, -30, Robot.driveSubsystem, TIMEOUT)); + turnTo330.whenPressed(new NavXTurnToAngle(Robot.driveSubsystem.turnPID, -30, Robot.driveSubsystem, + TIMEOUT)); } if (Robot.driveSubsystem.shifter != null && switchToHighGear != null && switchToLowGear != null) { switchToHighGear.whenPressed(new SwitchToHighGear(Robot.driveSubsystem)); switchToLowGear.whenPressed(new SwitchToLowGear(Robot.driveSubsystem)); } - if (tmpOverrideHigh != null){ + if (tmpOverrideHigh != null) { tmpOverrideHigh.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, true, false)); tmpOverrideHigh.whenReleased(new OverrideAutoShift(Robot.driveSubsystem, false, false)); } - if (tmpOverrideLow != null){ + if (tmpOverrideLow != null) { tmpOverrideLow.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, true, true)); tmpOverrideLow.whenReleased(new OverrideAutoShift(Robot.driveSubsystem, false, true)); } - if (toggleOverrideHigh != null){ - toggleOverrideHigh.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, !Robot.driveSubsystem.overrideAutoShift, false)); + if (toggleOverrideHigh != null) { + toggleOverrideHigh.whenPressed(new OverrideAutoShift(Robot.driveSubsystem, !Robot.driveSubsystem + .overrideAutoShift, false)); } //Map climber commands @@ -250,17 +263,17 @@ public void mapButtons() { } //Map intake commands - if (Robot.intakeSubsystem != null){ + if (Robot.intakeSubsystem != null) { if (toggleIntakeUpDown != null) { toggleIntakeUpDown.whenPressed(new ToggleIntakeUpDown(Robot.intakeSubsystem)); } - if (toggleIntake != null){ + if (toggleIntake != null) { toggleIntake.whenPressed(new ToggleIntaking(Robot.intakeSubsystem)); } } //Map feeder commands - if (toggleFeeder != null && Robot.feederSubsystem != null){ + if (toggleFeeder != null && Robot.feederSubsystem != null) { toggleFeeder.whenPressed(new ToggleFeeder(Robot.feederSubsystem)); } @@ -271,13 +284,16 @@ public void mapButtons() { //Map group commands if (loadShooter != null) { - loadShooter.whenPressed(new LoadShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot.feederSubsystem)); + loadShooter.whenPressed(new LoadShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot + .feederSubsystem)); } if (rackShooter != null) { - rackShooter.whenPressed(new RackShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot.feederSubsystem)); + rackShooter.whenPressed(new RackShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot + .feederSubsystem)); } if (fireShooter != null) { - fireShooter.whenPressed(new FireShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot.feederSubsystem)); + fireShooter.whenPressed(new FireShooter(Robot.singleFlywheelShooterSubsystem, Robot.intakeSubsystem, Robot + .feederSubsystem)); } } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java index ffc36dd4..cb10ebb9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java @@ -3,7 +3,6 @@ import edu.wpi.first.wpilibj.Joystick; import maps.org.usfirst.frc.team449.robot.oi.OI2017TankMap; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.TankOI; -import org.usfirst.frc.team449.robot.oi.components.PolyThrottle; import org.usfirst.frc.team449.robot.oi.components.SmoothedThrottle; import org.usfirst.frc.team449.robot.oi.components.Throttle; diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index 28d55f56..86652998 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -2,8 +2,6 @@ import edu.wpi.cscore.MjpegServer; import edu.wpi.cscore.UsbCamera; -//import edu.wpi.first.wpilibj.CameraServer; - import maps.org.usfirst.frc.team449.robot.components.UsbCameraMap; import maps.org.usfirst.frc.team449.robot.vision.CameraMap; import org.usfirst.frc.team449.robot.MappedSubsystem; @@ -11,58 +9,61 @@ import java.util.ArrayList; import java.util.List; +//import edu.wpi.first.wpilibj.CameraServer; + /** * Subsystem to initialize and push video to SmartDashboard */ public class CameraSubsystem extends MappedSubsystem { - //Video server to view on SmartDashboard - public MjpegServer server; + //Video server to view on SmartDashboard + public MjpegServer server; - //List of cameras used on robot - public List cameras; + //List of cameras used on robot + public List cameras; - //Total number of cameras - public int camNum; + //Total number of cameras + public int camNum; - //Instantiates a new CameraSubsystem with the map - public static CameraMap.Camera map; + //Instantiates a new CameraSubsystem with the map + public static CameraMap.Camera map; - public CameraSubsystem(CameraMap.Camera map){ - super(map); - this.map = map; + public CameraSubsystem(CameraMap.Camera map) { + super(map); + this.map = map; - //Logging to SmartDashboard - System.out.println("CameraSubsystem construct start"); - System.out.println("Set URL of MJPGServer to \"http://roboRIO-449-frc.local:"+map.getServer().getPort()+"/stream.mjpg\""); + //Logging to SmartDashboard + System.out.println("CameraSubsystem construct start"); + System.out.println("Set URL of MJPGServer to \"http://roboRIO-449-frc.local:" + map.getServer().getPort() + + "/stream.mjpg\""); - //Instantiates server - server = new MjpegServer(map.getServer().getName(),map.getServer().getPort()); + //Instantiates server + server = new MjpegServer(map.getServer().getName(), map.getServer().getPort()); - //Instantiates cameras - cameras = new ArrayList<>(); + //Instantiates cameras + cameras = new ArrayList<>(); - //Searches for each camera, then places them into camera list. - for (UsbCameraMap.UsbCamera camera : map.getUSBCameraList()) { - UsbCamera tmp = new UsbCamera(camera.getName(), camera.getDev()); - tmp.setResolution(camera.getWidth(), camera.getHeight()); - tmp.setFPS(camera.getFps()); - System.out.println("Added "+camera.getName()+" to camera list."); - cameras.add(tmp); - } + //Searches for each camera, then places them into camera list. + for (UsbCameraMap.UsbCamera camera : map.getUSBCameraList()) { + UsbCamera tmp = new UsbCamera(camera.getName(), camera.getDev()); + tmp.setResolution(camera.getWidth(), camera.getHeight()); + tmp.setFPS(camera.getFps()); + System.out.println("Added " + camera.getName() + " to camera list."); + cameras.add(tmp); + } - //Starts streaming video from first camera, marks that via camNum - server.setSource(cameras.get(0)); - camNum = 0; + //Starts streaming video from first camera, marks that via camNum + server.setSource(cameras.get(0)); + camNum = 0; - //Logging to console - System.out.println("CameraSubsystem construct end"); - } + //Logging to console + System.out.println("CameraSubsystem construct end"); + } - @Override - protected void initDefaultCommand () { - //Do nothing! - } + @Override + protected void initDefaultCommand() { + //Do nothing! + } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 1d0f51e8..bd16bf08 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -8,54 +8,54 @@ */ public class ChangeCam extends ReferencingCommand { - //Initializes CameraSubsystem - private CameraSubsystem cameraSubsystem; - - //Default constructor - public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { - super(cameraSubsystem, timeout); - requires(cameraSubsystem); - this.cameraSubsystem = cameraSubsystem; - } - - @Override - protected void initialize() { - System.out.println("ChangeCam init"); - //Does nothing - Logging to console - } - - @Override - protected void execute() { - //Logging to console - System.out.println("ChangeCam exec start"); - - //Switches camNum to next camera, if applicable - if (cameraSubsystem.cameras.size() == 1){ - System.out.println("You're trying to switch cameras, but your robot only has one camera!"); - } else { - cameraSubsystem.camNum = (cameraSubsystem.camNum + 1) % cameraSubsystem.cameras.size(); - } - - //Switches to set camera - cameraSubsystem.server.setSource(cameraSubsystem.cameras.get(cameraSubsystem.camNum)); - - //Logging to camera - System.out.println("ChangeCam exec end"); - } - - @Override - protected boolean isFinished(){ + //Initializes CameraSubsystem + private CameraSubsystem cameraSubsystem; + + //Default constructor + public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { + super(cameraSubsystem, timeout); + requires(cameraSubsystem); + this.cameraSubsystem = cameraSubsystem; + } + + @Override + protected void initialize() { + System.out.println("ChangeCam init"); + //Does nothing - Logging to console + } + + @Override + protected void execute() { + //Logging to console + System.out.println("ChangeCam exec start"); + + //Switches camNum to next camera, if applicable + if (cameraSubsystem.cameras.size() == 1) { + System.out.println("You're trying to switch cameras, but your robot only has one camera!"); + } else { + cameraSubsystem.camNum = (cameraSubsystem.camNum + 1) % cameraSubsystem.cameras.size(); + } + + //Switches to set camera + cameraSubsystem.server.setSource(cameraSubsystem.cameras.get(cameraSubsystem.camNum)); + + //Logging to camera + System.out.println("ChangeCam exec end"); + } + + @Override + protected boolean isFinished() { //Finishes instantaneously. return true; - } + } - @Override - protected void end() { - System.out.println("ChangeCam end"); - } + @Override + protected void end() { + System.out.println("ChangeCam end"); + } - @Override - protected void interrupted(){ - System.out.println("ChangeCam interrupted!"); - } + @Override + protected void interrupted() { + System.out.println("ChangeCam interrupted!"); + } } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/Robot2017.proto b/src/main/proto/org/usfirst/frc/team449/robot/Robot2017.proto index 6af0836f..dfd930e5 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/Robot2017.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/Robot2017.proto @@ -14,13 +14,13 @@ option java_outer_classname = "Robot2017Map"; message Robot2017 { optional OI2017Tank tank_oi = 1; - required OI2017ArcadeGamepad arcade_oi = 2; + required OI2017ArcadeGamepad arcade_oi = 2; required TalonClusterDrive drive = 3; optional Climber climber = 4; optional SingleFlywheelShooter shooter = 5; - optional int32 module = 6; - optional Camera camera = 7; - optional Intake2017 intake = 8; + optional int32 module = 6; + optional Camera camera = 7; + optional Intake2017 intake = 8; optional PneumaticSystem pneumatics = 9; - optional Feeder feeder = 10; + optional Feeder feeder = 10; } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/AnalogPressureSensor.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/AnalogPressureSensor.proto index 6659851b..30b1317f 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/AnalogPressureSensor.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/AnalogPressureSensor.proto @@ -4,7 +4,7 @@ option java_package = "maps.org.usfirst.frc.team449.robot.components"; option java_outer_classname = "AnalogPressureSensorMap"; message AnalogPressureSensor { - required int32 port = 1; - required int32 oversample_bits = 4; - required int32 average_bits = 5; + required int32 port = 1; + required int32 oversample_bits = 4; + required int32 average_bits = 5; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/MjpegServer.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/MjpegServer.proto index 69505584..b664e08a 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/MjpegServer.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/MjpegServer.proto @@ -3,7 +3,7 @@ syntax = "proto2"; option java_package = "maps.org.usfirst.frc.team449.robot.components"; option java_outer_classname = "MjpegServerMap"; -message MjpegServer{ +message MjpegServer { required string name = 1; - required int32 port = 2; + required int32 port = 2; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto index 23e65e9e..bce29e28 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto @@ -14,6 +14,6 @@ message ToleranceBufferAnglePID { required bool maximum_output_enabled = 7; required double deadband = 8; required bool deadband_enabled = 9; - optional double max_angular_vel = 10 [default = 180]; //Maximum angular velocity for the robot to be at to switch to driveStraight mode, in degrees/sec - required bool inverted = 11; + optional double max_angular_vel = 10 [default = 180]; //Maximum angular velocity for the robot to be at to switch to driveStraight mode, in degrees/sec + required bool inverted = 11; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto index 33748555..cd68f8e8 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto @@ -35,7 +35,7 @@ message UnitlessCANTalonSRX { required double kI_hg = 28; required double kD_hg = 29; optional double max_speed_lg = 22; - required double max_speed_hg = 30; + required double max_speed_hg = 30; required bool fwd_lim_norm_open = 13; required bool rev_lim_norm_open = 14; required bool fwd_lim_enabled = 15; diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/UsbCamera.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/UsbCamera.proto index e4666270..ab719cac 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/UsbCamera.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/UsbCamera.proto @@ -5,8 +5,8 @@ option java_outer_classname = "UsbCameraMap"; message UsbCamera { required string name = 1; - required int32 dev = 2; - required int32 width = 3; - required int32 height = 4; - required int32 fps = 5; + required int32 dev = 2; + required int32 width = 3; + required int32 height = 4; + required int32 fps = 5; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto b/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto index a40321c9..71260af9 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto @@ -6,12 +6,12 @@ import "org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.drive.meccanum"; option java_outer_classname = "MeccanumDriveMap"; -message MeccanumDrive{ - required Drive drive = 1; - required ToleranceBufferAnglePID turn_PID = 6; - required ToleranceBufferAnglePID straight_PID = 7; - required UnitlessCANTalonSRX front_left = 2; - required UnitlessCANTalonSRX front_right = 3; - required UnitlessCANTalonSRX back_left = 4; - required UnitlessCANTalonSRX back_right = 5; +message MeccanumDrive { + required Drive drive = 1; + required ToleranceBufferAnglePID turn_PID = 6; + required ToleranceBufferAnglePID straight_PID = 7; + required UnitlessCANTalonSRX front_left = 2; + required UnitlessCANTalonSRX front_right = 3; + required UnitlessCANTalonSRX back_left = 4; + required UnitlessCANTalonSRX back_right = 5; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto index 3daef43d..7d47878c 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto @@ -20,8 +20,8 @@ message TalonClusterDrive { optional double wheel_diameter = 10; optional double upshift = 11; optional double downshift = 12; - optional double up_time_thresh = 13 [default = 0]; - optional double down_time_thresh = 14 [default = 0]; - optional double shift_delay = 15; - optional double upshift_fwd_deadband = 16 [default = 0]; + optional double up_time_thresh = 13 [default = 0]; + optional double down_time_thresh = 14 [default = 0]; + optional double shift_delay = 15; + optional double upshift_fwd_deadband = 16 [default = 0]; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/feeder/Feeder.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/feeder/Feeder.proto index 746a29c5..e34c540a 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/feeder/Feeder.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/feeder/Feeder.proto @@ -5,8 +5,8 @@ import "org/usfirst/frc/team449/robot/components/Motor.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.mechanism.feeder"; option java_outer_classname = "FeederMap"; -message Feeder{ +message Feeder { required Mechanism mechanism = 1; - required Motor victor = 2; - required double speed = 3; + required Motor victor = 2; + required double speed = 3; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017.proto index ebc51e66..63b1bdb8 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017.proto @@ -10,6 +10,6 @@ message Intake2017 { required Mechanism mechanism = 1; required Motor fixed_victor = 2; required Motor actuated_victor = 3; - required DoubleSolenoid piston = 4; - required int32 pistonModuleNum = 5; + required DoubleSolenoid piston = 4; + required int32 pistonModuleNum = 5; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticSystem.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticSystem.proto index 764de857..00b44c84 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticSystem.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/pneumatics/PneumaticSystem.proto @@ -5,6 +5,6 @@ option java_package = "maps.org.usfirst.frc.team449.robot.mechanism.pneumatics"; option java_outer_classname = "PneumaticSystemMap"; message PneumaticSystem { - required int32 node_ID = 1; - required AnalogPressureSensor pressureSensor = 2; + required int32 node_ID = 1; + required AnalogPressureSensor pressureSensor = 2; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto index 43de99fe..d3d19bde 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto @@ -8,5 +8,5 @@ option java_outer_classname = "SingleFlywheelShooterMap"; message SingleFlywheelShooter { required Mechanism mechanism = 1; required UnitlessCANTalonSRX talon = 2; - optional double throttle = 3; + optional double throttle = 3; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto index 66fd65b0..5fe6fee0 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/JoystickButton.proto @@ -5,5 +5,5 @@ option java_outer_classname = "JoystickButtonMap"; message JoystickButton { required int32 joystick_index = 1; - required int32 button_index = 2; + required int32 button_index = 2; } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017.proto index 4d13b2a1..2e1c0c3b 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017.proto @@ -17,9 +17,9 @@ message OI2017 { required int32 turn_to_180_button = 10; required int32 turn_to_330_button = 11; required int32 turnaround_button = 12; - required int32 toggle_intake = 16; - required int32 toggle_intake_updown = 17; - required int32 gamepad = 13; - required int32 gamepad_left_axis = 14; - required int32 gamepad_right_axis = 15; + required int32 toggle_intake = 16; + required int32 toggle_intake_updown = 17; + required int32 gamepad = 13; + required int32 gamepad_left_axis = 14; + required int32 gamepad_right_axis = 15; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto index 28cfe295..d3cf8919 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto @@ -9,34 +9,34 @@ message OI2017ArcadeGamepad { required int32 gamepad_left_axis = 2; required int32 gamepad_right_axis = 3; - required double deadband = 4; - required double dpad_shift = 5; - - required bool invert_fwd = 6; - required bool invert_rot = 7; - required bool invert_dpad = 18; - - optional JoystickButton switch_to_low_gear = 8; - optional JoystickButton switch_to_high_gear = 9; - optional JoystickButton override_navX = 10; - optional JoystickButton climb = 11; - optional JoystickButton toggle_feeder = 12; - optional JoystickButton toggle_intake = 13; - optional JoystickButton toggle_intake_up_down = 14; - optional JoystickButton tmp_override_low = 15; - optional JoystickButton tmp_override_high = 24; - optional JoystickButton toggle_override_high = 16; - optional JoystickButton shoot = 17; - - optional JoystickButton switch_camera = 23; - - // The new ones - optional JoystickButton load_shooter = 19; - optional JoystickButton rack_shooter = 20; - optional JoystickButton fire_shooter = 21; - optional JoystickButton reset_shooter = 22; - - optional JoystickButton turn_to_0 = 25; + required double deadband = 4; + required double dpad_shift = 5; + + required bool invert_fwd = 6; + required bool invert_rot = 7; + required bool invert_dpad = 18; + + optional JoystickButton switch_to_low_gear = 8; + optional JoystickButton switch_to_high_gear = 9; + optional JoystickButton override_navX = 10; + optional JoystickButton climb = 11; + optional JoystickButton toggle_feeder = 12; + optional JoystickButton toggle_intake = 13; + optional JoystickButton toggle_intake_up_down = 14; + optional JoystickButton tmp_override_low = 15; + optional JoystickButton tmp_override_high = 24; + optional JoystickButton toggle_override_high = 16; + optional JoystickButton shoot = 17; + + optional JoystickButton switch_camera = 23; + + // The new ones + optional JoystickButton load_shooter = 19; + optional JoystickButton rack_shooter = 20; + optional JoystickButton fire_shooter = 21; + optional JoystickButton reset_shooter = 22; + + optional JoystickButton turn_to_0 = 25; optional JoystickButton turn_to_30 = 26; optional JoystickButton turn_to_180 = 27; optional JoystickButton turn_to_330 = 28; diff --git a/src/main/proto/org/usfirst/frc/team449/robot/vision/Camera.proto b/src/main/proto/org/usfirst/frc/team449/robot/vision/Camera.proto index 5a5883a3..885042c2 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/vision/Camera.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/vision/Camera.proto @@ -6,7 +6,7 @@ option java_package = "maps.org.usfirst.frc.team449.robot.vision"; option java_outer_classname = "CameraMap"; -message Camera{ - required MjpegServer server = 1; - repeated UsbCamera USB_camera = 2; +message Camera { + required MjpegServer server = 1; + repeated UsbCamera USB_camera = 2; } \ No newline at end of file From 246d816084aa2487436f332800b69b7601acde04 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 13:36:43 -0500 Subject: [PATCH 20/66] Document TalonClusterDrive --- .../drive/talonCluster/TalonClusterDrive.java | 219 ++++++++++++++---- 1 file changed, 174 insertions(+), 45 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 7766a128..5a0fcb28 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -25,83 +25,162 @@ */ public class TalonClusterDrive extends DriveSubsystem implements NavxSubsystem { - //The master talon on the right and left sides + /** + * Right master Talon + */ public RotPerSecCANTalonSRX rightMaster; + /** + * Left master Talon + */ public RotPerSecCANTalonSRX leftMaster; - //The NavX gyro. + /** + * The NavX gyro + */ public AHRS navx; - //The PIDAngleCommand constants for turning to an angle with the NavX + /** + * The PIDAngleCommand constants for turning to an angle with the NavX + */ public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID turnPID; - //The PIDAngleCommand constants for using the NavX to drive straight. + /** + * The PIDAngleCommand constants for using the NavX to drive straight + */ public ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID straightPID; - //The oi used to drive the robot. + /** + * The oi used to drive the robot + */ public OI2017ArcadeGamepad oi; - //The solenoid that shifts between gears + /** + * The solenoid that shifts between gears + */ public DoubleSolenoid shifter; - // TODO take this out after testing + // TODO take these out after testing + /** + * Current status of the left side MP + */ public CANTalon.MotionProfileStatus leftTPointStatus; + /** + * Current status of the right side MP + */ public CANTalon.MotionProfileStatus rightTPointStatus; - //The time when the robot was enabled. + /** + * The time (nanoseconds) when the robot was enabled (for use in logging) + */ private long startTime; - //The name of the file we log to. + /** + * The name of the file to log to + */ private String logFN; - //Whether or not to use the NavX for driving straight. + /** + * Whether or not to use the NavX for driving straight + */ public boolean overrideNavX; - //The max speed the robot has reached during this run. This is NOT the max_speed constant in the map, this is what - // we use to determine that constant. + /** + * Measured max speed of robot reached in a run. Used for testing and tuning. NOT max_speed tuning constant + * + * @deprecated + */ + @Deprecated private double maxSpeed; - //What we multiply the joystick output by before giving it to the PID loop, to give the loop room to compensate. + // TODO externalize + /** + * Joystick scaling constant. Joystick output is scaled by this before being handed to the PID loop to give the + * loop space to compensate. + */ private final double PID_SCALE = 0.9; - //The amount of time after up/down shifting before we can do it again - private double upTimeThresh, downTimeThresh; + /** + * Upshift timeout. + * The robot will wait for this this number of milliseconds before upshifting after a downshift + */ + private double upTimeThresh; + /** + * Downshift timeout. + * The robot will wait for this this number of milliseconds before downshifting after an upshift + */ + private double downTimeThresh; - //Whether we can up/down shift, used as a flag for the delay. - private boolean okToUpshift, okToDownshift; + /** + * Whether we can up shift, used as a flag for the delay + */ + private boolean okToUpshift; + /** + * Whether we can down shift, used as a flag for the delay + */ + private boolean okToDownshift; - //The setpoint (on a 0-1 scale) below which we stay in low gear. + // TODO refactor; THIS IS NOT A DEADBAND + /** + * The setpoint (on a 0-1 scale) below which we stay in low gear + */ private double upshiftFwdDeadband; - //The time, in milliseconds, at which we crossed the speed at which we up/down shift. - private long timeAboveShift, timeBelowShift; + /** + * The last time (in milliseconds) at which we upshifted + */ + private long timeAboveShift; + /** + * The last time (in milliseconds) at which we downshifted + */ + private long timeBelowShift; - //The time we last shifted in either direction. + /** + * The time we last shifted (milliseconds) + */ private long timeLastShifted; - //The minimum time between shifting in either direction + // TODO simplify shifting and make this a primitive + /** + * The minimum time between shifting in either direction + */ private Double shiftDelay; - //Whether not to override auto shifting. + /** + * Whether not to override auto shifting + */ public boolean overrideAutoShift; - //Whether we're in low gear + // TODO set this when we shift + // TODO make this an enum instead of a boolean + /** + * Whether we're in low gear + */ private boolean lowGear = true; //we want to start in low gear - //The speed to upshift at + /** + * The speed setpoint at the upshift break + */ private double upshift; - //The speed to downshift at + /** + * The speed setpoint at the downshiftshift break + */ private double downshift; + /** + * Construct a TalonClusterDrive + * + * @param map config map + * @param oi OI to read throttle from + */ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDriveMap .TalonClusterDrive map, OI2017ArcadeGamepad oi) { super(map.getDrive()); - //Set the logfile name, which includes a timestamp. + + // Write the headers for the logfile. + // TODO externalize this shit logFN = "/home/lvuser/logs/driveLog-" + new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()) + "" + ".csv"; - - //Write the headers for the logfile. try (PrintWriter writer = new PrintWriter(logFN)) { writer.println("time,left,right,left error,right error,left setpoint,right setpoint"); writer.close(); @@ -109,7 +188,6 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T e.printStackTrace(); } - //Set things this.map = map; this.oi = oi; navx = new AHRS(SPI.Port.kMXP); @@ -121,31 +199,31 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T upshift = map.getUpshift(); downshift = map.getDownshift(); - //Shift delay is optional, so it'll be null if it isn't in map. + // Shift delay is optional, so it'll be null if it isn't in map. if (map.hasShiftDelay()) { this.shiftDelay = map.getShiftDelay(); } - //Initialize shifting constants, assuming robot is stationary. + // Initialize shifting constants, assuming robot is stationary. okToUpshift = false; okToDownshift = true; overrideAutoShift = false; timeLastShifted = 0; - //If the map has the shifting piston, instantiate it. + // If the map has the shifting piston, instantiate it. if (map.hasShifter()) { this.shifter = new DoubleSolenoid(map.getModuleNumber(), map.getShifter().getForward(), map.getShifter() .getReverse()); } - //Initialize max + // Initialize max maxSpeed = -1; - //Initialize master talons + // Initialize master talons rightMaster = new RotPerSecCANTalonSRX(map.getRightMaster()); leftMaster = new RotPerSecCANTalonSRX(map.getLeftMaster()); - //Initialize slave talons. + // Initialize slave talons. for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getRightSlaveList()) { RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); @@ -157,22 +235,29 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T talonObject.canTalon.set(map.getLeftMaster().getPort()); } - // TODO take this out leftTPointStatus = new CANTalon.MotionProfileStatus(); rightTPointStatus = new CANTalon.MotionProfileStatus(); } /** - * Sets the left and right wheel speeds as a voltage percentage, not nearly as precise as PID. + * Sets the left and right wheel speeds as a percent of max voltage, not nearly as precise as PID. * - * @param left The left throttle, a number between -1 and 1 inclusive. - * @param right The right throttle, a number between -1 and 1 inclusive. + * @param left The left voltage throttle, [-1, 1] + * @param right The right voltage throttle, [-1, 1] */ private void setVBusThrottle(double left, double right) { leftMaster.setPercentVbus(left); rightMaster.setPercentVbus(-right); } + // TODO refactor to specifiy PID VELOCITY setpoint + + /** + * Sets left and right wheel PID velocity setpoint as a percent of max setpoint + * + * @param left The left PID velocity setpoint as a percent [-1, 1] + * @param right The right PID velocity setpoint as a percent [-1, 1] + */ private void setPIDThrottle(double left, double right) { if (overrideAutoShift) { leftMaster.setSpeed(PID_SCALE * (left * leftMaster.getMaxSpeed())); @@ -184,7 +269,7 @@ private void setPIDThrottle(double left, double right) { } /** - * Allows the type of motor control used to be varied in testing. + * setPIDThrottle or setVBusThrottle, whichever is set as the "default" * * @param left Left throttle value * @param right Right throttle value @@ -194,6 +279,9 @@ public void setDefaultThrottle(double left, double right) { //setVBusThrottle(left, right); } + /** + * Log stuff to file + */ public void logData() { try (FileWriter fw = new FileWriter(logFN, true)) { StringBuilder sb = new StringBuilder(); @@ -207,7 +295,7 @@ public void logData() { sb.append(","); sb.append(rightMaster.getError()); /* - sb.append(","); + sb.append(","); sb.append(leftTPointStatus.activePoint.position); sb.append(","); sb.append(rightTPointStatus.activePoint.position); @@ -235,6 +323,11 @@ public void logData() { SmartDashboard.putBoolean("In low gear?", lowGear); } + /** + * Log stuff to file, with a given veocity setpoint to log + * + * @param sp velocity setpoint + */ public void logData(double sp) { try (FileWriter fw = new FileWriter(logFN, true)) { StringBuilder sb = new StringBuilder(); @@ -251,8 +344,8 @@ public void logData(double sp) { sb.append(PID_SCALE * sp * leftMaster.getMaxSpeed()); sb.append(","); sb.append(PID_SCALE * sp * rightMaster.getMaxSpeed()); - /* - sb.append(","); + /* + sb.append(","); sb.append(leftTPointStatus.activePoint.position); sb.append(","); sb.append(rightTPointStatus.activePoint.position); @@ -280,6 +373,10 @@ public void logData(double sp) { SmartDashboard.putBoolean("In low gear?", lowGear); } + /** + * Stuff run on enable + * Reset starTime, turn on navX control, and start DefaultArcadeDrive + */ @Override protected void initDefaultCommand() { startTime = System.nanoTime(); @@ -289,10 +386,22 @@ protected void initDefaultCommand() { setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); } + /** + * Get the robot's heading using the navX + * + * @return robot heading (degrees) [-180, 180] + */ public double getGyroOutput() { return navx.pidGet(); } + // TODO generalize up-down with an enum + + /** + * Shift as appropriate + * + * @param setLowGear whether to shift down (if false, shift up) + */ public void setLowGear(boolean setLowGear) { if (shifter != null) { if (setLowGear) { @@ -312,18 +421,32 @@ public void setLowGear(boolean setLowGear) { } } + /** + * @return left cluster measured velocity + */ public double getLeftSpeed() { return leftMaster.getSpeed(); } + /** + * @return right cluster measured velocity + */ public double getRightSpeed() { return rightMaster.getSpeed(); } + /** + * @return whether the robot is in low gear + */ public boolean inLowGear() { return lowGear; } + // TODO simplify the should-shift logic + + /** + * @return whether the robot should downshift + */ public boolean shouldDownshift() { boolean okToShift = Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift && !lowGear && !overrideAutoShift || oi.getFwd() == 0 && oi.getRot() != 0 && !overrideAutoShift; @@ -339,6 +462,9 @@ public boolean shouldDownshift() { return (System.currentTimeMillis() - timeBelowShift > downTimeThresh * 1000 && okToShift); } + /** + * @return whether the robot should upshift + */ public boolean shouldUpshift() { boolean okToShift = Math.max(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) > upshift && lowGear && !overrideAutoShift && Math.abs(oi.getFwd()) > upshiftFwdDeadband; @@ -354,6 +480,9 @@ public boolean shouldUpshift() { return (System.currentTimeMillis() - timeAboveShift > upTimeThresh * 1000 && okToShift); } + /** + * Shift if necessary + */ public void autoShift() { if (shouldUpshift()) { setLowGear(false); @@ -376,4 +505,4 @@ else if (in < -1) else return in; } -} +} \ No newline at end of file From e93044b449d5e91970cf205aad9598751b2bd79c Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 13:38:55 -0500 Subject: [PATCH 21/66] Deprecate MotionProfileData This method of entering a MP is being phased out in the MP_2_sides branch, which will be merged before 1st competition. --- .../robot/drive/talonCluster/util/MotionProfileData.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java index 88a9ed2b..724beca8 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java @@ -8,7 +8,9 @@ /** * Data structure containing the array of points for the MP and a method to fill the MP from a csv file + * @deprecated future switch to PathGenerator when MP_2_Sides branch is merged in */ +@Deprecated public class MotionProfileData { public double data[][]; From ca0fee4106868c5109ea469317f5bea672afd3ee Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 13:50:36 -0500 Subject: [PATCH 22/66] Document ExecuteProfile stuff --- .../talonCluster/commands/ExecuteProfile.java | 58 +++++++++++++++---- .../talonCluster/util/MPUpdaterProcess.java | 14 ++++- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index 02c21270..54942739 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -8,21 +8,60 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.util.MotionProfileData; /** - * Load and execute a motion profile on the master Talons in the two motor clusters + * ReferencingCommand to load and execute a motion profile on the master Talons in the two motor clusters */ public class ExecuteProfile extends ReferencingCommand { + /** + * Number of points that must be loaded before we start executing the profile + */ private static final int MIN_NUM_LOADED_POINTS = 200; // total number of points + /** + * Filename of the MP input file + */ private static final String IN_FILE_NAME = "/home/lvuser/449_resources/profile.csv"; + /** + * Update rate of the {@link MPUpdaterProcess} + */ private static final double UPDATE_RATE = 0.005; // MP processing thread update rate copied from CTRE example + + // TODO make _state and enum + /** + * State variable of the FSM used to chose when to load points and when to execute the profile + */ private int _state = 0; + + /** + * Scheduler {@link Notifier} for updating the Talons' MP + */ private Notifier mpProcessNotifier; + /** + * Drive that the MP will be executed on + */ private TalonClusterDrive tcd; + + /** + * Motion profile data + * + * @deprecated to be replaced with PathGenerator stuff in MP_2_Sides future + */ private MotionProfileData profile; + /** + * MP status of the left master + */ private CANTalon.MotionProfileStatus leftStatus; + + /** + * MP status of the right master + */ private CANTalon.MotionProfileStatus rightStatus; + /** + * Construct a new ExecuteProfile command + * + * @param subsystem drive subsystem to execute the command on + */ public ExecuteProfile(TalonClusterDrive subsystem) { super(subsystem); requires(subsystem); @@ -37,15 +76,8 @@ public ExecuteProfile(TalonClusterDrive subsystem) { } /** - * Set up the Talons' modes and populate the trajectory point buffer - */ - @Override - protected void initialize() { - } - - /** - * If its the first execute call, start the thread - * Other than that, error check every loop call + * If its the first execute call, start the thread. Otherwise, error check every loop call. Note that the real + * logic is executed in the control method for black-magic Scheduler timing reasons. */ @Override protected void execute() { @@ -67,6 +99,9 @@ protected void execute() { tcd.logData(); } + /** + * Execute the logic that controls if trajectory points are being loaded or if the profile is being executed + */ private void control() { tcd.leftMaster.canTalon.getMotionProfileStatus(leftStatus); tcd.rightMaster.canTalon.getMotionProfileStatus(rightStatus); @@ -116,6 +151,9 @@ private void control() { } } + /** + * Fill the Talon MP hardware buffer + */ private void startFilling() { MPUpdaterProcess updaterProcess = new MPUpdaterProcess(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java index 7ac3b7cd..b54c6997 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java @@ -10,17 +10,29 @@ * This is so that you can update the buffer faster than the RoboRIO scheduler does. */ public class MPUpdaterProcess implements Runnable { + /** + * The queue of talons to update + */ private Queue talonQueue; + /** + * Construct a MPUpdaterProcess. + * Talons must be added after construction. + */ public MPUpdaterProcess() { talonQueue = new LinkedList<>(); } + /** + * @param talon Talon to add to the queue of Talons to update + */ public void addTalon(CANTalon talon) { talonQueue.add(talon); } - // Process the MP buffer for each Talon in the queue + /** + * Process the MP buffer for each Talon in the queue + */ @Override public void run() { talonQueue.forEach(CANTalon::processMotionProfileBuffer); From 281b865c10574ba543fb0ab530db13ab688880e9 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 14:03:42 -0500 Subject: [PATCH 23/66] Document OI stuff --- .../robot/oi/MappedJoystickButton.java | 4 + .../frc/team449/robot/oi/OI2017Arcade.java | 11 +- .../team449/robot/oi/OI2017ArcadeGamepad.java | 116 ++++++++++++------ .../frc/team449/robot/oi/OI2017Tank.java | 26 +++- 4 files changed, 117 insertions(+), 40 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java b/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java index f83b0d12..a1c98818 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/MappedJoystickButton.java @@ -9,6 +9,10 @@ */ public class MappedJoystickButton extends JoystickButton { + /** + * Construct a MappedJoystickButton + * @param map config map + */ public MappedJoystickButton(JoystickButtonMap.JoystickButton map) { super(new Joystick(map.getJoystickIndex()), map.getButtonIndex()); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java index fb9acd5a..7c131781 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Arcade.java @@ -7,9 +7,8 @@ import org.usfirst.frc.team449.robot.oi.components.Throttle; /** - * A simple, two-stick arcade drive OI. + * A simple, two-stick arcade drive OI that uses two distinct joysticks */ - public class OI2017Arcade extends BaseOI implements ArcadeOI { /** * Left (rotation control) stick's throttle @@ -25,6 +24,11 @@ public class OI2017Arcade extends BaseOI implements ArcadeOI { */ private OI2017ArcadeMap.OI2017Arcade map; + /** + * Construct an OI2017Arcade + * + * @param map config map + */ public OI2017Arcade(maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeMap.OI2017Arcade map) { this.map = map; @@ -35,6 +39,9 @@ public OI2017Arcade(maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeMap.OI2017 this.velThrottle = new SmoothedThrottle(_rightStick, 1); } + /** + * Map the buttons (call this after all subsytems are constructed) + */ @Override public void mapButtons() { // Do nothing diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 780e7e54..6761f88e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -30,73 +30,119 @@ */ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { - //How much the D-pad moves the robot rotationally on a 0 to 1 scale, equivalent to pushing the turning stick that - // much of the way. + /** + * How much the D-pad moves the robot rotationally on a 0 to 1 scale, equivalent to pushing the turning stick that + * much of the way + */ private static double SHIFT; - //The throttle wrapper for the stick controlling turning velocity. + /** + * The throttle wrapper for the stick controlling turning velocity + */ private Throttle rotThrottle; - //The throttle wrapper for the stick controlling linear velocity. + /** + * The throttle wrapper for the stick controlling linear velocity + */ private Throttle fwdThrottle; - //The controller with the drive sticks. + /** + * The controller with the drive sticks + */ private Joystick gamepad; - //The joystick output under which any input is considered noise. + /** + * The joystick output under which any input is considered noise + */ private double deadband; - //Turn to 0, 30, 180, or 330 degrees relative to the position the robot was turned on at. + /** + * Button for turning to 0 degrees absolute heading (where robot was powered on) + */ private JoystickButton turnTo0; + /** + * Button for turning to 30 degrees absolute heading (where robot was powered on) + */ private JoystickButton turnTo30; + /** + * Button for turning to 180 degrees absolute heading (where robot was powered on) + */ private JoystickButton turnTo180; + /** + * Button for turning to 330 degrees absolute heading (where robot was powered on) + */ private JoystickButton turnTo330; - - //Turn 180 degrees relative to the robot's current position. + /** + * Button for a 180 degree relative turn + */ private JoystickButton turnaround; - - //Gear switching for drive. + /** + * Button for switching to low gear + */ private JoystickButton switchToLowGear; + /** + * Button for switching to high gear + */ private JoystickButton switchToHighGear; - - //Run the climber while the button is held AND the current limit hasn't been reached. + /** + * Button for climbing + */ private JoystickButton climb; - - //Toggle whether we're overriding the NavX DriveStraight for slam alignment. + /** + * Button for toggling whether to use NavX DriveStraight + */ private JoystickButton toggleOverrideNavX; - - //Switch which camera we're displaying on SmartDashboard. + /** + * Button for toggling cameras + */ private JoystickButton switchCamera; - - //Switch whether or not the intake is sucking in balls. + /** + * Button for toggling intake on/off + */ private JoystickButton toggleIntake; - - //Switch whether the intake is up or down. + /** + * Button for toggling intake up/down + */ private JoystickButton toggleIntakeUpDown; - - //While this button is held, stay in low gear and don't autoshift. + /** + * Button held to stay in low gear + */ private JoystickButton tmpOverrideLow; - - //While this button is held, stay in high gear and don't autoshift. + /** + * Button held to stay in high gear + */ private JoystickButton tmpOverrideHigh; - - //Toggle overriding autoshifting. When autoshifting is turned off, switch to high gear. + /** + * Button for toggling autoshifting + */ private JoystickButton toggleOverrideHigh; - - //Switch whether or not the feeder is feeding balls into the shooter. + /** + * Button for toggling feeder + */ private JoystickButton toggleFeeder; - - //Toggle whether the flywheel is on or off. + /** + * Button for toggling shooter + */ private JoystickButton toggleShooter; - //Lower and run the intake while turning off the flywheel and feeder. + /** + * Button for running the LoadShooter command group (intake balls) + */ private JoystickButton loadShooter; - //Raise the intake and run the static one to agitate the ball bin. Run the flywheel to get it up to speed, but - // don't run the feeder. + /** + * Button for running the RackShooter command group (set up to shoot) + */ private JoystickButton rackShooter; - //Same as rack, but run the feeder in order to fire balls. + /** + * Button for running the FireShooter command group (fire the shooter) + */ private JoystickButton fireShooter; + /** + * Construct the OI2017ArcadeGamepad + * + * @param map config map + */ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { //Instantiate stick and joysticks gamepad = new Joystick(map.getGamepad()); diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java index cb10ebb9..a480ca42 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017Tank.java @@ -10,14 +10,25 @@ * A simple tank drive, where each joystick controls a side of the robot. */ public class OI2017Tank extends BaseOI implements TankOI { - //The left throttle + /** + * The left throttle + */ private Throttle leftThrottle; - //The right throttle + /** + * The right throttle + */ private Throttle rightThrottle; - //The map + /** + * Config map + */ private OI2017TankMap.OI2017Tank map; + /** + * Construct OI2017Map + * + * @param map config map + */ public OI2017Tank(maps.org.usfirst.frc.team449.robot.oi.OI2017TankMap.OI2017Tank map) { this.map = map; @@ -28,17 +39,26 @@ public OI2017Tank(maps.org.usfirst.frc.team449.robot.oi.OI2017TankMap.OI2017Tank this.rightThrottle = new SmoothedThrottle(_rightStick, 1); } + /** + * Map all buttons to commands. Should only be run after all subsystems have been instantiated. + */ @Override public void mapButtons() { // Do nothing (no buttons yet) } + /** + * @return throttle to the left motor cluster [-1, 1] + */ @Override public double getLeftThrottle() { // TODO put a deadband return leftThrottle.getValue(); } + /** + * @return throttle to the right motor cluster [-1, 1] + */ @Override public double getRightThrottle() { // TODO put a deadband From c5ce6b760bfd19faf05a2030217e0e12ff2e169c Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 14:05:06 -0500 Subject: [PATCH 24/66] Remove Tester class (unused) --- .../usfirst/frc/team449/robot/Tester2017.java | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 src/main/java/org/usfirst/frc/team449/robot/Tester2017.java diff --git a/src/main/java/org/usfirst/frc/team449/robot/Tester2017.java b/src/main/java/org/usfirst/frc/team449/robot/Tester2017.java deleted file mode 100644 index 9afe4993..00000000 --- a/src/main/java/org/usfirst/frc/team449/robot/Tester2017.java +++ /dev/null @@ -1,16 +0,0 @@ -//package org.usfirst.frc.team449.robot; -// -//import maps.org.usfirst.frc.team449.robot.Robot2017Map; -// -//import java.io.IOException; -// -///** -// * Created by ryant on 2017-02-19. -// */ -//public class Tester2017 { -// public static void main(String[] args) throws IOException { -// Robot2017Map.Robot2017 cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("final_map.cfg", Robot2017Map -// .Robot2017.newBuilder()); -// -// } -//} From 65822e0d6e7fc90c0a9ae02db42ea82169ad6c69 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 14:11:56 -0500 Subject: [PATCH 25/66] Document shooter topcommands --- .../mechanism/topcommands/shooter/FireShooter.java | 13 +++++++++---- .../mechanism/topcommands/shooter/LoadShooter.java | 12 +++++++++--- .../mechanism/topcommands/shooter/RackShooter.java | 13 +++++++++---- .../mechanism/topcommands/shooter/ResetShooter.java | 13 +++++++++---- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java index b6268ede..61a319a4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java @@ -9,16 +9,21 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; /** - * Created by ryant on 2017-02-18. + * Command group for firing the shooter. + * Runs flywheel, runs static intake, stops dynamic intake, raises intake, and runs feeder. */ public class FireShooter extends CommandGroup { + /** + * Constructs a FireShooter command group + * + * @param sfs shooter subsystem + * @param intake intake subsystem + * @param feeder feeder subsystem + */ public FireShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); - addParallel(new AccelerateFlywheel(sfs, 2.5 * 60)); // TODO remove useless timeout - addParallel(new SIDS(intake)); - addParallel(new RunFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java index ae78b934..c7b31376 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java @@ -10,16 +10,22 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** - * Created by ryant on 2017-02-18. + * Command group for loading the shooter. + * Stops flywheel, runs static intake, runs dynamic intake, lowers intake, and stops feeder. */ public class LoadShooter extends CommandGroup { + /** + * Constructs a LoadShooter command group + * + * @param sfs shooter subsystem + * @param intake intake subsystem + * @param feeder feeder subsystem + */ public LoadShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); addParallel(new DecelerateFlywheel(sfs, 5)); - addParallel(new IntakeDown(intake)); addParallel(new SIDI(intake)); - addParallel(new StopFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java index ae51397d..57503119 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java @@ -10,17 +10,22 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; /** - * Created by ryant on 2017-02-18. + * Command group for racking the shooter. + * Starts flywheel, runs static intake, stops dynamic intake, raises intake, and stops feeder. */ public class RackShooter extends CommandGroup { + /** + * Constructs a RackShooter command group + * + * @param sfs shooter subsystem + * @param intake intake subsystem + * @param feeder feeder subsystem + */ public RackShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); - addParallel(new AccelerateFlywheel(sfs, 5)); - addParallel(new IntakeUp(intake)); addParallel(new SIDS(intake)); - addParallel(new StopFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java index 14290575..9e5898fd 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java @@ -10,17 +10,22 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** - * Created by ryant on 2017-02-18. + * Command group for loading the shooter. + * Turns everything off, lowers intake */ public class ResetShooter extends CommandGroup { + /** + * Constructs a ResetShooter command group + * + * @param sfs shooter subsystem + * @param intake intake subsystem + * @param feeder feeder subsystem + */ public ResetShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); - addParallel(new DecelerateFlywheel(sfs, 5)); - addParallel(new IntakeDown(intake)); addParallel(new SSDS(intake)); - addParallel(new StopFeeder(feeder)); } } From caa67a4588d55572e0fa6d3957ba01ec208a80c4 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 1 Mar 2017 14:25:50 -0500 Subject: [PATCH 26/66] Document singleflywheelshooter stuff --- .../SingleFlywheelShooter.java | 44 ++++++++++++++++--- .../commands/AccelerateFlywheel.java | 29 +++++++++++- .../commands/DecelerateFlywheel.java | 29 +++++++++++- .../commands/PIDTune.java | 1 + .../commands/ToggleFlywheel.java | 1 + .../commands/ToggleShooter.java | 33 +++++++++----- 6 files changed, 116 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java index ee14b068..52e7d4b4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java @@ -9,21 +9,39 @@ import java.io.PrintWriter; /** - * Created by blairrobot on 1/10/17. + * Class for the flywheel */ public class SingleFlywheelShooter extends MappedSubsystem { + /** + * The flywheel's Talon + */ + private RotPerSecCANTalonSRX talon; + /** + * Whether the flywheel is currently commanded to spin + */ public boolean spinning; - private RotPerSecCANTalonSRX talon; - public double throttle = 0.5; + // TODO externalize /** - * Counts per revolution + * Throttle at which to run the shooter */ + public double throttle = 0.5; + /** + * Measured start time in nanoseconds (for logging) + */ private long startTime; + /** + * Measured max PID error so far (for testing purposes) + */ private double maxError = 0; + /** + * Construct a SingleFlywheelShooter + * + * @param map config map + */ public SingleFlywheelShooter(maps.org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter .SingleFlywheelShooterMap.SingleFlywheelShooter map) { super(map.getMechanism()); @@ -36,14 +54,19 @@ public SingleFlywheelShooter(maps.org.usfirst.frc.team449.robot.mechanism.single } /** - * Sets the flywheel to go at a speed between 1 and 0, where 1 is max speed. + * Set the flywheel's percent voltage * - * @param sp The speed to go at. + * @param sp percent voltage setpoint [-1, 1] */ private void setVBusSpeed(double sp) { talon.setPercentVbus(sp); } + /** + * Set the flywheel's percent PID velocity setpoint + * + * @param sp percent PID velocity setpoint [-1, 1] + */ private void setPIDSpeed(double sp) { talon.setSpeed(talon.getMaxSpeed() * sp); } @@ -57,6 +80,11 @@ public void setDefaultSpeed(double sp) { setPIDSpeed(sp); } + /** + * Log data + * + * @param throttle velocity throttle to put in the log file + */ public void logData(double throttle) { maxError = Math.max(talon.canTalon.getClosedLoopError(), maxError); SmartDashboard.putNumber("max error", maxError); @@ -82,7 +110,9 @@ public void logData(double throttle) { } } - + /** + * Init the log file on enabling + */ @Override protected void initDefaultCommand() { try (PrintWriter writer = new PrintWriter("/home/lvuser/shooterLog.csv")) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java index 9dce9e00..4db8e842 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java @@ -5,23 +5,37 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; /** - * Created by blairrobot on 1/10/17. + * ReferencingCommand for running the flywheel */ public class AccelerateFlywheel extends ReferencingCommand { - + /** + * Flywheel subsystem to execute the command on + */ SingleFlywheelShooter flywheelShooter; + /** + * Construct an AccelerateFLywheel command + * + * @param subsystem shooter to execute the command on + * @param timeout command timeout (doesn't actually work) + */ public AccelerateFlywheel(MappedSubsystem subsystem, double timeout) { super(subsystem, timeout); flywheelShooter = (SingleFlywheelShooter) subsystem; requires(subsystem); } + /** + * Init the command in the stdout log + */ @Override protected void initialize() { System.out.println("AccelerateFlywheel init"); } + /** + * Set velocity setpoint and log to file + */ @Override protected void execute() { flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle * 100.0); @@ -30,16 +44,27 @@ protected void execute() { System.out.println("AccelerateFlywheel executed"); } + /** + * Finish the command instantly, as the setpoint has already been set + * + * @return true + */ @Override protected boolean isFinished() { return true; } + /** + * Log that the command has ended in the stdout log + */ @Override protected void end() { System.out.println("AccelerateFlywheel end"); } + /** + * Stop the flywheel if the command is interrupted and log to stdout + */ @Override protected void interrupted() { flywheelShooter.setDefaultSpeed(0); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java index cc36b3c7..04d2836f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java @@ -5,23 +5,37 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; /** - * Created by blairrobot on 1/10/17. + * ReferencingCommand for stopping the flywheel */ public class DecelerateFlywheel extends ReferencingCommand { - + /** + * Flywheel subsystem to execute the command on + */ SingleFlywheelShooter flywheelShooter; + /** + * Construct a DecelerateFLywheel command + * + * @param subsystem shooter to execute the command on + * @param timeout command timeout (doesn't actually work) + */ public DecelerateFlywheel(MappedSubsystem subsystem, double timeout) { super(subsystem, timeout); flywheelShooter = (SingleFlywheelShooter) subsystem; requires(subsystem); } + /** + * Init the command in the stdout log + */ @Override protected void initialize() { System.out.println("DecelerateFlywheel init"); } + /** + * Set velocity setpoint and log to file + */ @Override protected void execute() { flywheelShooter.logData(0.0); @@ -30,16 +44,27 @@ protected void execute() { System.out.println("DecelerateFlywheel executed"); } + /** + * Finish the command instantly, as the setpoint has already been set + * + * @return true + */ @Override protected boolean isFinished() { return false; } + /** + * Log that the command has ended in the stdout log + */ @Override protected void end() { System.out.println("DecelerateFlywheel end"); } + /** + * Stop the flywheel if the command is interrupted and log to stdout + */ @Override protected void interrupted() { flywheelShooter.setDefaultSpeed(0); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/PIDTune.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/PIDTune.java index 5ca8116c..bf715c98 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/PIDTune.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/PIDTune.java @@ -8,6 +8,7 @@ /** * Program created by noah on 1/11/17. */ +@Deprecated public class PIDTune extends ReferencingCommandGroup { /** * Instantiate the ReferencingCommandGroup diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleFlywheel.java index 0f80cf48..2d2a83a6 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleFlywheel.java @@ -7,6 +7,7 @@ /** * Created by blairrobot on 1/10/17. */ +@Deprecated public class ToggleFlywheel extends ReferencingCommandGroup { private SingleFlywheelShooter shooterSubsystem; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java index 68b7b529..bf91242a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java @@ -5,21 +5,30 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; /** - * Created by blairrobot on 1/10/17. + * Command for toggling whether the shooter is running */ public class ToggleShooter extends ReferencingCommand { - + /** + * Flywheel subsystem to execute the command on + */ SingleFlywheelShooter flywheelShooter; + /** + * Construct an AccelerateFLywheel command + * + * @param subsystem shooter to execute the command on + */ public ToggleShooter(MappedSubsystem subsystem) { super(subsystem); flywheelShooter = (SingleFlywheelShooter) subsystem; requires(subsystem); } + /** + * Toggle the shooter + */ @Override protected void initialize() { - System.out.println("AccelerateFlywheel init"); if (!flywheelShooter.spinning) { flywheelShooter.setDefaultSpeed(((SingleFlywheelShooter) subsystem).throttle); flywheelShooter.spinning = true; @@ -29,25 +38,29 @@ protected void initialize() { } } + /** + * Log to file + */ @Override protected void execute() { flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle * 100.0); - System.out.println("AccelerateFlywheel executed"); } + /** + * Finish the command instantly, as the setpoint has already been set + * + * @return true + */ @Override protected boolean isFinished() { return true; } - @Override - protected void end() { - System.out.println("AccelerateFlywheel end"); - } - + /** + * Stop the flywheel if the command is interrupted + */ @Override protected void interrupted() { flywheelShooter.setDefaultSpeed(0); - System.out.println("AccelerateFlywheel interrupted, stopping flywheel."); } } From 90de8b3bfdd7ca5abb4db29b9bee0d6c424e15c1 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Thu, 2 Mar 2017 13:54:50 -0500 Subject: [PATCH 27/66] Document intake stuff --- .../intake/Intake2017/Intake2017.java | 38 ++++++++++++++++++- .../commands/ToggleIntakeUpDown.java | 35 +++++++++-------- .../Intake2017/commands/ToggleIntaking.java | 33 +++++++++------- .../commands/spin/DynamicIntakeIn.java | 3 ++ .../commands/spin/DynamicIntakeStop.java | 3 ++ .../commands/spin/StaticIntakeIn.java | 3 ++ .../commands/spin/StaticIntakeStop.java | 4 ++ .../commands/updown/IntakeDown.java | 35 +++++++++-------- .../Intake2017/commands/updown/IntakeUp.java | 35 +++++++++-------- 9 files changed, 121 insertions(+), 68 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java index 64fdea48..c81368e0 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java @@ -8,11 +8,27 @@ * Created by Justin on 1/28/2017. */ public class Intake2017 extends MappedSubsystem { - + /** + * VictorSP for the static intake + */ private VictorSP fixedVictor; + /** + * VictorSP for the dynamic intake + */ private VictorSP actuatedVictor; + /** + * Piston for raising and lowering the intake + */ private DoubleSolenoid piston; + /** + * Whether is currently intaking + */ public boolean isIntaking; + + // TODO make an enum + /** + * Whether intake is currently up + */ public boolean intakeUp; /** @@ -31,20 +47,40 @@ public Intake2017(maps.org.usfirst.frc.team449.robot.mechanism.intake.Intake2017 .getReverse()); } + /** + * Set the speed of the static intake + * + * @param speed PWM setpoint [-1, 1] + */ public void setFixedVictor(double speed) { fixedVictor.set(speed); } + /** + * Set the speed of the dynamic intake + * + * @param speed PWM setpoint [-1, 1] + */ public void setActuatedVictor(double speed) { actuatedVictor.set(speed); } + /** + * Fire the piston + * + * @param value direction to fire + */ public void setPiston(DoubleSolenoid.Value value) { piston.set(value); System.out.println("Set Piston"); intakeUp = (value == DoubleSolenoid.Value.kReverse); } + /** + * Set isIntaking status + * + * @param isIntaking whether currently is intaking + */ public void setIntaking(boolean isIntaking) { this.isIntaking = isIntaking; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java index bdcc2015..fe321352 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java @@ -5,12 +5,19 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by blairrobot on 2/4/17. + * Command for toggling the intake up and down */ public class ToggleIntakeUpDown extends ReferencingCommand { - + /** + * The intake subsystem to execute the command on + */ Intake2017 intake2017; + /** + * Construct a ToggleIntakeUpDown command + * + * @param intake2017 intake subsytem to execute the command on + */ public ToggleIntakeUpDown(Intake2017 intake2017) { super(intake2017); requires(intake2017); @@ -18,29 +25,21 @@ public ToggleIntakeUpDown(Intake2017 intake2017) { System.out.println("ToggleIntakeUpDown constructed"); } - @Override - protected void initialize() { - System.out.println("ToggleIntakeUpDown init"); - } - + /** + * Set the piston as appropriate + */ @Override protected void execute() { intake2017.setPiston(intake2017.intakeUp ? DoubleSolenoid.Value.kForward : DoubleSolenoid.Value.kReverse); } + /** + * Finish instantly as the piston is set in execute + * + * @return true + */ @Override protected boolean isFinished() { return true; } - - @Override - protected void end() { - System.out.println("ToggleIntakeUpDown end"); - } - - @Override - protected void interrupted() { - System.out.println("ToggleIntakeUpDown interrupted."); - } - } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java index 60dfbd96..d6750118 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java @@ -4,12 +4,19 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by blairrobot on 1/28/17. + * Command for toggling the intake in and out */ public class ToggleIntaking extends ReferencingCommand { - + /** + * The intake subsystem to execute the command on + */ private Intake2017 intake2017; + /** + * Construct a ToggleIntakeUpDown command + * + * @param intake2017 intake subsytem to execute the command on + */ public ToggleIntaking(Intake2017 intake2017) { super(intake2017); requires(intake2017); @@ -17,11 +24,9 @@ public ToggleIntaking(Intake2017 intake2017) { System.out.println("ToggleIntaking constructed"); } - @Override - protected void initialize() { - System.out.println("ToggleIntaking init"); - } - + /** + * Set the motors as appropriate + */ @Override protected void execute() { if (intake2017.isIntaking) { @@ -34,21 +39,23 @@ protected void execute() { intake2017.setIntaking(!intake2017.isIntaking); } + /** + * Finish instantly as the piston is set in execute + * + * @return true + */ @Override protected boolean isFinished() { return true; } - @Override - protected void end() { - System.out.println("ToggleIntaking end"); - } - + /** + * Stop the motors if the command is interrupted + */ @Override protected void interrupted() { intake2017.setActuatedVictor(0); intake2017.setFixedVictor(0); System.out.println("ToggleIntaking interrupted, stopping intake2017."); } - } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java index 84b30962..2c8c0b3c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java @@ -5,7 +5,10 @@ /** * Created by ryant on 2017-02-18. + * @deprecated + * @see SIDI */ +@Deprecated public class DynamicIntakeIn extends ReferencingCommand { Intake2017 intake; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java index 0e4092db..332cf248 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java @@ -5,7 +5,10 @@ /** * Created by ryant on 2017-02-18. + * @deprecated + * @see SIDI */ +@Deprecated public class DynamicIntakeStop extends ReferencingCommand { Intake2017 intake; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java index 7320c4fd..a8ff7326 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java @@ -5,7 +5,10 @@ /** * Created by ryant on 2017-02-18. + * @deprecated + * @see SIDI */ +@Deprecated public class StaticIntakeIn extends ReferencingCommand { Intake2017 intake; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java index 4eeeb79c..ee0579d1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java @@ -5,7 +5,11 @@ /** * Created by ryant on 2017-02-18. + * + * @see SIDI + * @deprecated */ +@Deprecated public class StaticIntakeStop extends ReferencingCommand { Intake2017 intake; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java index 9f3ab1a3..bc818d1b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java @@ -5,12 +5,19 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by Justin on 1/28/2017. + * Command for lowering the intake */ public class IntakeDown extends ReferencingCommand { - + /** + * The intake subsystem to execute the command on + */ Intake2017 intake2017; + /** + * Construct an IntakeDown command + * + * @param intake2017 intake subsystem to execute the command on + */ public IntakeDown(Intake2017 intake2017) { super(intake2017); // requires(intake2017); @@ -18,29 +25,21 @@ public IntakeDown(Intake2017 intake2017) { System.out.println("IntakeDown constructed"); } - @Override - protected void initialize() { - System.out.println("IntakeDown init"); - } - + /** + * Set the piston to be in down position + */ @Override protected void execute() { intake2017.setPiston(DoubleSolenoid.Value.kForward); } + /** + * Finish instantly as the piston is set in execute + * + * @return true + */ @Override protected boolean isFinished() { return true; } - - @Override - protected void end() { - System.out.println("IntakeDown end"); - } - - @Override - protected void interrupted() { - System.out.println("IntakeDown interrupted."); - } - } \ No newline at end of file diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java index b068614f..f9ba43e7 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java @@ -5,12 +5,19 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by Justin on 1/28/2017. + * Command for raising the intake */ public class IntakeUp extends ReferencingCommand { - + /** + * The intake subsystem to execute the command on + */ Intake2017 intake2017; + /** + * Construct an IntakeDown command + * + * @param intake2017 intake subsystem to execute the command on + */ public IntakeUp(Intake2017 intake2017) { super(intake2017); // requires(intake2017); @@ -18,29 +25,21 @@ public IntakeUp(Intake2017 intake2017) { System.out.println("IntakeUp constructed"); } - @Override - protected void initialize() { - System.out.println("IntakeUp init"); - } - + /** + * Set the piston to be in up position + */ @Override protected void execute() { intake2017.setPiston(DoubleSolenoid.Value.kReverse); } + /** + * Finish instantly as the piston is set in execute + * + * @return true + */ @Override protected boolean isFinished() { return true; } - - @Override - protected void end() { - System.out.println("IntakeUp end"); - } - - @Override - protected void interrupted() { - System.out.println("IntakeUp interrupted."); - } - } From a78b11fc86a63c223c3dbd76da2246cc90d47e38 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Thu, 2 Mar 2017 15:58:22 -0500 Subject: [PATCH 28/66] Finish commenting TalonClusterDrive. --- .../drive/talonCluster/TalonClusterDrive.java | 54 ++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 5a0fcb28..22bc9002 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -235,6 +235,7 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T talonObject.canTalon.set(map.getLeftMaster().getPort()); } + //Weird MP shit leftTPointStatus = new CANTalon.MotionProfileStatus(); rightTPointStatus = new CANTalon.MotionProfileStatus(); } @@ -246,8 +247,9 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T * @param right The right voltage throttle, [-1, 1] */ private void setVBusThrottle(double left, double right) { + //Set voltage mode throttles leftMaster.setPercentVbus(left); - rightMaster.setPercentVbus(-right); + rightMaster.setPercentVbus(-right); //This is negative so PID doesn't have to be. Future people, if your robot goes in circles in voltage mode, this may be why. } // TODO refactor to specifiy PID VELOCITY setpoint @@ -259,10 +261,13 @@ private void setVBusThrottle(double left, double right) { * @param right The right PID velocity setpoint as a percent [-1, 1] */ private void setPIDThrottle(double left, double right) { + //If we're not shifting, scale by the max speed in the current gear if (overrideAutoShift) { leftMaster.setSpeed(PID_SCALE * (left * leftMaster.getMaxSpeed())); rightMaster.setSpeed(PID_SCALE * (right * rightMaster.getMaxSpeed())); - } else { + } + //If we are shifting, scale by the high gear max speed to make acceleration smoother and faster. + else { leftMaster.setSpeed(PID_SCALE * (left * leftMaster.getMaxSpeedHG())); rightMaster.setSpeed(PID_SCALE * (right * rightMaster.getMaxSpeedHG())); } @@ -275,6 +280,7 @@ private void setPIDThrottle(double left, double right) { * @param right Right throttle value */ public void setDefaultThrottle(double left, double right) { + //Clip to one to avoid anything strange. setPIDThrottle(clipToOne(left), clipToOne(right)); //setVBusThrottle(left, right); } @@ -283,6 +289,7 @@ public void setDefaultThrottle(double left, double right) { * Log stuff to file */ public void logData() { + //Print stuff to the log file for in-depth analysis or tuning. try (FileWriter fw = new FileWriter(logFN, true)) { StringBuilder sb = new StringBuilder(); sb.append((System.nanoTime() - startTime) / Math.pow(10, 9)); @@ -306,6 +313,7 @@ public void logData() { } catch (IOException e) { e.printStackTrace(); } + //Log to SmartDashboard for quick viewing maxSpeed = Math.max(maxSpeed, Math.max(Math.abs(leftMaster.getSpeed()), Math.abs(rightMaster.getSpeed()))); SmartDashboard.putNumber("Max Speed", maxSpeed); SmartDashboard.putNumber("Left", leftMaster.getSpeed()); @@ -324,11 +332,12 @@ public void logData() { } /** - * Log stuff to file, with a given veocity setpoint to log + * Log stuff to file, with a given velocity setpoint to log * * @param sp velocity setpoint */ public void logData(double sp) { + //Print stuff to the log file for in-depth analysis or tuning. try (FileWriter fw = new FileWriter(logFN, true)) { StringBuilder sb = new StringBuilder(); sb.append((System.nanoTime() - startTime) / Math.pow(10, 9)); @@ -356,6 +365,7 @@ public void logData(double sp) { } catch (IOException e) { e.printStackTrace(); } + //Log to SmartDashboard for quick viewing maxSpeed = Math.max(maxSpeed, Math.max(Math.abs(leftMaster.getSpeed()), Math.abs(rightMaster.getSpeed()))); SmartDashboard.putNumber("Max Speed", maxSpeed); SmartDashboard.putNumber("Left", leftMaster.getSpeed()); @@ -374,15 +384,18 @@ public void logData(double sp) { } /** - * Stuff run on enable - * Reset starTime, turn on navX control, and start DefaultArcadeDrive + * Stuff run on first enable + * Reset startTime, turn on navX control, and start DefaultArcadeDrive */ @Override protected void initDefaultCommand() { + //Set the start time to current time startTime = System.nanoTime(); + //Stop overriding the NavX if we're doing that. overrideNavX = false; // setDefaultCommand(new PIDTest(this)); // setDefaultCommand(new OpArcadeDrive(this, oi)); + //Start driving setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); } @@ -403,34 +416,47 @@ public double getGyroOutput() { * @param setLowGear whether to shift down (if false, shift up) */ public void setLowGear(boolean setLowGear) { + //If we have a shifter on the robot if (shifter != null) { + //If we want to downshift if (setLowGear) { + //Physically shift gears shifter.set(DoubleSolenoid.Value.kForward); + //Switch the PID constants rightMaster.switchToLowGear(); leftMaster.switchToLowGear(); + //Set logging boolean lowGear = true; } else { + //Physically shift gears shifter.set(DoubleSolenoid.Value.kReverse); + //Switch the PID constants rightMaster.switchToHighGear(); leftMaster.switchToHighGear(); + //Set logging boolean lowGear = false; } timeLastShifted = System.currentTimeMillis(); } else { + //Warn the user if they try to shift but didn't define a shifting piston. System.out.println("You're trying to shift gears, but your drive doesn't have a shifter."); } } + //TODO get rid of this because it's a reaaaaaally dumb wrapper. /** * @return left cluster measured velocity */ + @Deprecated public double getLeftSpeed() { return leftMaster.getSpeed(); } + //TODO get rid of this because it's a reaaaaaally dumb wrapper. /** * @return right cluster measured velocity */ + @Deprecated public double getRightSpeed() { return rightMaster.getSpeed(); } @@ -442,23 +468,30 @@ public boolean inLowGear() { return lowGear; } - // TODO simplify the should-shift logic + // TODO simplify the should-shift logic, especially by moving repeated code into separate functions. /** * @return whether the robot should downshift */ public boolean shouldDownshift() { + //Whether we should shift, ignoring timing regulation. boolean okToShift = Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift && !lowGear && !overrideAutoShift || oi.getFwd() == 0 && oi.getRot() != 0 && !overrideAutoShift; + //If we're using a both-way shift delay (must wait shiftDelay seconds after shifting EITHER WAY before shifting again) if (shiftDelay != null) { return okToShift && (System.currentTimeMillis() - timeLastShifted > shiftDelay * 1000); } + + //Otherwise, we use a "delay" system that waits to shift until the robot has met the conditions for downTimeThresh seconds. if (okToShift && !okToDownshift) { + //This block is a "flag" that triggers when we first meet the conditions to shift. okToDownshift = true; timeBelowShift = System.currentTimeMillis(); } else if (!okToShift && okToDownshift) { + //This resets the flag if we no longer meet the conditions to shift. okToDownshift = false; } + //Return if we've been eligible to shift for downTimeThresh seconds and are also currently eligible. return (System.currentTimeMillis() - timeBelowShift > downTimeThresh * 1000 && okToShift); } @@ -466,17 +499,24 @@ public boolean shouldDownshift() { * @return whether the robot should upshift */ public boolean shouldUpshift() { + //Whether we should shift, ignoring timing regulation. boolean okToShift = Math.max(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) > upshift && lowGear && !overrideAutoShift && Math.abs(oi.getFwd()) > upshiftFwdDeadband; + //If we're using a both-way shift delay (must wait shiftDelay seconds after shifting EITHER WAY before shifting again) if (shiftDelay != null) { return okToShift && (System.currentTimeMillis() - timeLastShifted > shiftDelay * 1000); } + + //Otherwise, we use a "delay" system that waits to shift until the robot has met the conditions for upTimeThresh seconds. if (okToShift && !okToUpshift) { + //This block is a "flag" that triggers when we first meet the conditions to shift. okToUpshift = true; timeAboveShift = System.currentTimeMillis(); } else if (!okToShift && okToUpshift) { + //This resets the flag if we no longer meet the conditions to shift. okToUpshift = false; } + //Return if we've been eligible to shift for upTimeThresh seconds and are also currently eligible. return (System.currentTimeMillis() - timeAboveShift > upTimeThresh * 1000 && okToShift); } @@ -485,8 +525,10 @@ public boolean shouldUpshift() { */ public void autoShift() { if (shouldUpshift()) { + //Upshift if we should setLowGear(false); } else if (shouldDownshift()) { + //Downshift if we should setLowGear(true); } } From de512eac2df30450bb8a7d3cb364796ba5f341d0 Mon Sep 17 00:00:00 2001 From: Bryan Li Date: Thu, 2 Mar 2017 16:33:42 -0500 Subject: [PATCH 29/66] Fixed typo. --- .../frc/team449/robot/drive/talonCluster/TalonClusterDrive.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 22bc9002..d4e44dc6 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -163,7 +163,7 @@ public class TalonClusterDrive extends DriveSubsystem implements NavxSubsystem { private double upshift; /** - * The speed setpoint at the downshiftshift break + * The speed setpoint at the downshift break */ private double downshift; From 62c246e9addb619c7e7b2bb91b8c33bde17535cb Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Thu, 2 Mar 2017 17:04:36 -0500 Subject: [PATCH 30/66] Thoroughly comment non-MP drive commands. --- .../drive/talonCluster/TalonClusterDrive.java | 4 +- .../commands/ArcadeDriveDefaultTTA.java | 139 ------------------ .../commands/DefaultArcadeDrive.java | 49 ++++-- .../talonCluster/commands/DriveAtSpeed.java | 34 ++++- .../talonCluster/commands/DriveStraight.java | 3 +- .../talonCluster/commands/ExecuteProfile.java | 2 + .../commands/NavXDriveStraight.java | 1 + .../commands/NavXRelativeTTA.java | 15 +- .../commands/NavXTurnToAngle.java | 45 ++++-- .../talonCluster/commands/OpArcadeDrive.java | 37 +++-- .../talonCluster/commands/OpTankDrive.java | 30 +++- .../commands/OverrideAutoShift.java | 18 ++- .../drive/talonCluster/commands/PIDTest.java | 16 +- .../commands/SwitchToHighGear.java | 3 +- .../commands/SwitchToLowGear.java | 2 +- ...rrideNavX.java => ToggleOverrideNavX.java} | 7 +- .../team449/robot/oi/OI2017ArcadeGamepad.java | 4 +- 17 files changed, 208 insertions(+), 201 deletions(-) delete mode 100644 src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java rename src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/{OverrideNavX.java => ToggleOverrideNavX.java} (76%) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 22bc9002..0da7e6fa 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -475,8 +475,8 @@ public boolean inLowGear() { */ public boolean shouldDownshift() { //Whether we should shift, ignoring timing regulation. - boolean okToShift = Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift && !lowGear && - !overrideAutoShift || oi.getFwd() == 0 && oi.getRot() != 0 && !overrideAutoShift; + boolean okToShift = (Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift || + (oi.getFwd() == 0 && oi.getRot() != 0)) && !lowGear && !overrideAutoShift; //If we're using a both-way shift delay (must wait shiftDelay seconds after shifting EITHER WAY before shifting again) if (shiftDelay != null) { return okToShift && (System.currentTimeMillis() - timeLastShifted > shiftDelay * 1000); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java deleted file mode 100644 index d6f84e66..00000000 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ArcadeDriveDefaultTTA.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.usfirst.frc.team449.robot.drive.talonCluster.commands; - -import edu.wpi.first.wpilibj.command.Command; -import edu.wpi.first.wpilibj.command.PIDCommand; -import edu.wpi.first.wpilibj.command.Scheduler; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import maps.org.usfirst.frc.team449.robot.components.ToleranceBufferAnglePIDMap; -import org.usfirst.frc.team449.robot.components.PIDAngleCommand; -import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; -import org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepad; - -/** - * Program created by noah on 1/23/17. - */ -public class ArcadeDriveDefaultTTA extends PIDAngleCommand { - - private OI2017ArcadeGamepad oi; - private double turnCoeffecient; - private TalonClusterDrive drive; - private double sp; - private double lastAngleStick; - - public ArcadeDriveDefaultTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, - OI2017ArcadeGamepad oi, double turnCoeffecient) { - super(map, drive); - this.oi = oi; - this.drive = drive; - this.turnCoeffecient = turnCoeffecient; - requires(drive); - } - - /** - * Uses the value that the pid loop calculated. The calculated value is the - * "output" parameter. This method is a good time to set motor values, maybe - * something along the lines of - * driveline.tankDrive(output, -output) - *

- *

- * All subclasses of {@link PIDCommand} must override this method. - *

- *

- *

- * This method will be called in a different thread then the {@link Scheduler} - * thread. - *

- * - * @param output the value the pid loop calculated - */ - @Override - protected void usePIDOutput(double output) { - if (minimumOutputEnabled) { - //Set the output to the minimum if it's too small. - if (output > 0 && output < minimumOutput) - output = minimumOutput; - else if (output < 0 && output > -minimumOutput) - output = -minimumOutput; - else if (Math.abs(this.getPIDController().getAvgError()) < deadband) - output = 0; - } - SmartDashboard.putNumber("Output", output); - drive.setDefaultThrottle(oi.getFwd() + output, oi.getFwd() - output); - } - - /** - * The initialize method is called the first time this Command is run after - * being started. - */ - @Override - protected void initialize() { - this.getPIDController().setSetpoint(drive.getGyroOutput()); - this.getPIDController().enable(); - } - - /** - * The execute method is called repeatedly until this Command either finishes - * or is canceled. - */ - @Override - protected void execute() { - if (oi.getRot() > 0 && oi.getRot() > lastAngleStick) { - this.setSetpointRelative(turnCoeffecient * (oi.getRot() - lastAngleStick)); - } else if (oi.getRot() < 0 && oi.getRot() < lastAngleStick) { - this.setSetpointRelative(turnCoeffecient * (oi.getRot() - lastAngleStick)); - } - lastAngleStick = oi.getRot(); - drive.logData(); - } - - /** - * Returns whether this command is finished. If it is, then the command will - * be removed and {@link Command#end() end()} will be called. - *

- *

- * It may be useful for a team to reference the {@link Command#isTimedOut() - * isTimedOut()} method for time-sensitive commands. - *

- * $ - * - * @return whether this command is finished. - * @see Command#isTimedOut() isTimedOut() - */ - @Override - protected boolean isFinished() { - return false; - } - - /** - * Called when the command ended peacefully. This is where you may want to - * wrap up loose ends, like shutting off a motor that was being used in the - * command. - */ - @Override - protected void end() { - System.out.println("NavXDriveStraight end"); - this.getPIDController().disable(); - } - - /** - * Called when the command ends because somebody called - * {@link Command#cancel() cancel()} or another command shared the same - * requirements as this one, and booted it out. - *

- *

- * This is where you may want to wrap up loose ends, like shutting off a motor - * that was being used in the command. - *

- *

- *

- * Generally, it is useful to simply call the {@link Command#end() end()} - * method within this method - *

- */ - @Override - protected void interrupted() { - System.out.println("NavXDriveStraight interrupted!"); - this.getPIDController().disable(); - } - -} diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index 06344a81..bb7efdb1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -10,31 +10,60 @@ * Drive with arcade drive setup, and when the driver isn't turning, use a NavX to stabilize the robot's alignment. */ public class DefaultArcadeDrive extends PIDAngleCommand { - //The OI giving the vel and turn stick values. + /** + * The OI giving the vel and turn stick values. + */ public ArcadeOI oi; - //Whether or not we should be using the NavX to drive straight stably. + /** + * Whether or not we should be using the NavX to drive straight stably. + */ private boolean drivingStraight; - //The velocity input from OI. Should be between -1 and 1. + + /** + * The velocity input from OI. Should be between -1 and 1. + */ private double vel; - //The rotation input from OI. Should be between -1 and 1. + + /** + * The rotation input from OI. Should be between -1 and 1. + */ private double rot; - //The talonClusterDrive this command is controlling. + + /** + * The talonClusterDrive this command is controlling. + */ private TalonClusterDrive driveSubsystem; - //The maximum velocity for the robot to be at in order to switch to driveStraight, in degrees/sec + + /** + * The maximum velocity for the robot to be at in order to switch to driveStraight, in degrees/sec + */ private double maxAngularVel; - //The map of values + + /** + * The map of values + */ ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map; + /** + * Default constructor + * @param map The angle PID map containing PID and other tuning constants. + * @param drive The drive this controls. + * @param oi The OI controlling the robot. + */ public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, ArcadeOI oi) { + //Assign stuff super(map, drive); maxAngularVel = map.getMaxAngularVel(); this.oi = oi; this.map = map; - requires(drive); driveSubsystem = drive; + //Needs a requires because it's a default command. + requires(drive); + + //Logging, but in Spanish. System.out.println("Drive Robot bueno"); } @@ -47,9 +76,11 @@ protected void initialize() { //Initial assignment drivingStraight = false; - driveSubsystem.setLowGear(true); //starting from rest, we want to be in low gear so we can accelerate vel = oi.getFwd(); rot = oi.getRot(); + + //starting from rest, we want to be in low gear so we can accelerate + driveSubsystem.setLowGear(true); } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java index 83b8f601..93c8df94 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java @@ -4,17 +4,34 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by BlairRobot on 2017-01-12. + * Go at a certain speed for a set number of seconds */ public class DriveAtSpeed extends ReferencingCommand { - double speed; - double seconds; - long startTime; + /** + * Speed to go at + */ + private double speed; + /** + * How long to run for + */ + private double seconds; + + /** + * When this command was initialized. + */ + private long startTime; + + /** + * Default constructor + * @param drive The drive we're controlling + * @param speed How fast to go, in RPS + * @param seconds How long to drive for. + */ public DriveAtSpeed(TalonClusterDrive drive, double speed, double seconds) { + //Initialize stuff super(drive); - // requires(subsystem); this.speed = speed; this.seconds = seconds; System.out.println("Drive Robot bueno"); @@ -22,24 +39,30 @@ public DriveAtSpeed(TalonClusterDrive drive, double speed, double seconds) { @Override protected void initialize() { + //Set up start time startTime = System.nanoTime(); + //Reset drive speed ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } @Override protected void execute() { + //Set the speed ((TalonClusterDrive) subsystem).setDefaultThrottle(speed, speed); + //Log data ((TalonClusterDrive) subsystem).logData(speed); } @Override protected boolean isFinished() { + //Time-based exit return (System.nanoTime() - startTime) * 1e-9 > seconds; } @Override protected void end() { ((TalonClusterDrive) subsystem).logData(); + //Break on exit. ((TalonClusterDrive) subsystem).setDefaultThrottle(0, 0); } @@ -47,6 +70,7 @@ protected void end() { protected void interrupted() { System.out.println("DriveAtSpeed Interrupted! Stopping the robot."); ((TalonClusterDrive) subsystem).logData(); + //Break if we're interrupted ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveStraight.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveStraight.java index b24e5a71..24e8d6a5 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveStraight.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveStraight.java @@ -5,8 +5,9 @@ import org.usfirst.frc.team449.robot.oi.OISubsystem; /** - * Program created by noah on 1/8/17. + * Drives straight when using a tank drive. Not updated for new OI organization. */ +//TODO update this to the new OI organization. public class DriveStraight extends ReferencingCommand { public OISubsystem oi; diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index 54942739..f67140b2 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -11,10 +11,12 @@ * ReferencingCommand to load and execute a motion profile on the master Talons in the two motor clusters */ public class ExecuteProfile extends ReferencingCommand { + //TODO Externalize all this shit /** * Number of points that must be loaded before we start executing the profile */ private static final int MIN_NUM_LOADED_POINTS = 200; // total number of points + /** * Filename of the MP input file */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java index e047bc98..830d2498 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java @@ -12,6 +12,7 @@ /** * Drives straight using the NavX gyro to keep a constant alignment. */ +//TODO update this to the new OI organization. public class NavXDriveStraight extends PIDAngleCommand { private OISubsystem oi; diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java index 1030bf93..eccb8ec8 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java @@ -4,7 +4,7 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Program created by noah on 1/23/17. + * Turn a ceetain number of degrees from the current heading. */ public class NavXRelativeTTA extends NavXTurnToAngle { @@ -12,19 +12,22 @@ public class NavXRelativeTTA extends NavXTurnToAngle { * Default constructor. * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. - * @param sp The setpoint, in degrees from 180 to -180. + * @param setpoint The setpoint, in degrees from 180 to -180. * @param drive The drive subsystem whose motors this is controlling. + * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ - public NavXRelativeTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double sp, TalonClusterDrive drive, + public NavXRelativeTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, double timeout) { - super(map, sp, drive, timeout); + super(map, setpoint, drive, timeout); } @Override protected void initialize() { + //Setup start time this.startTime = System.currentTimeMillis(); System.out.println("NavXRelativeTurnToAngle init."); - this.setSetpoint(clipTo180(drive.getGyroOutput() + sp)); + //Do math to setup the setpoint. + this.setSetpoint(clipTo180(drive.getGyroOutput() + setpoint)); //Make sure to enable the controller! this.getPIDController().enable(); } @@ -33,12 +36,14 @@ protected void initialize() { @Override protected void end() { System.out.println("NavXRelativeTurnToAngle end."); + //Stop the controller this.getPIDController().disable(); } @Override protected void interrupted() { System.out.println("NavXRelativeTurnToAngle interrupted!"); + //Stop the controller this.getPIDController().disable(); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java index 1b978c5e..33200342 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java @@ -10,36 +10,58 @@ */ public class NavXTurnToAngle extends PIDAngleCommand { + /** + * The drive subsystem this controls and gets the gyro reading from. + */ protected TalonClusterDrive drive; - protected double sp; + + /** + * The angle to turn to. + */ + protected double setpoint; + + /** + * How long this command is allowed to run for (in milliseconds) + */ protected long timeout; + + /** + * The time this command was initiated + */ protected long startTime; - //private double deadband; /** * Default constructor. * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. - * @param sp The setpoint, in degrees from 180 to -180. + * @param setpoint The setpoint, in degrees from 180 to -180. * @param drive The drive subsystem whose motors this is controlling. + * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ - public NavXTurnToAngle(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double sp, TalonClusterDrive drive, + public NavXTurnToAngle(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, double timeout) { super(map, drive); this.drive = drive; - this.sp = sp; + this.setpoint = setpoint; + //Convert from seconds to milliseconds this.timeout = (long) (timeout * 1000); requires(drive); } + /** + * Clip a degree number to the NavX's -180 to 180 system. + * @param theta The angle to clip, in degrees. + * @return The equivalent of that number, clipped to be between -180 and 180. + */ public static double clipTo180(double theta) { return (theta + 180) % 360 - 180; } @Override protected void usePIDOutput(double output) { + //Logging SmartDashboard.putNumber("Preprocessed output", output); - SmartDashboard.putNumber("Setpoint", this.getSetpoint()); + SmartDashboard.putNumber("NavX Turn To Angle Setpoint", this.getSetpoint()); if (minimumOutputEnabled) { //Set the output to the minimum if it's too small. if (output > 0 && output < minimumOutput) @@ -47,18 +69,22 @@ protected void usePIDOutput(double output) { else if (output < 0 && output > -minimumOutput) output = -minimumOutput; } + //If we're within deadband degrees of the setpoint, we stop moving to avoid "dancing" around the setpoint. if (Math.abs(this.getPIDController().getError()) < deadband) { output = 0; } - //Which one of these is negative may be different from robot to robot, we don't know. + //More logging SmartDashboard.putNumber("Processed output", output); + + //Which one of these is negative may be different from robot to robot, we don't know. drive.setDefaultThrottle(output, -output); //spin to the right angle } @Override protected void initialize() { + //Set up start time this.startTime = System.currentTimeMillis(); - this.setSetpoint(sp); + this.setSetpoint(setpoint); //Make sure to enable the controller! this.getPIDController().enable(); } @@ -73,9 +99,8 @@ protected void execute() { @Override protected boolean isFinished() { - //This method is crap and sometimes never terminates because of floating point errors, so we have a timeout + //The NavX onTarget() is crap and sometimes never terminates because of floating point errors, so we have a timeout return this.getPIDController().onTarget() || System.currentTimeMillis() - startTime > timeout; - //return false; } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java index f211f3bc..03eb5851 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java @@ -1,56 +1,73 @@ package org.usfirst.frc.team449.robot.drive.talonCluster.commands; -import com.ctre.CANTalon; import org.usfirst.frc.team449.robot.ReferencingCommand; import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; /** - * Program created by noah on 1/8/17. + * Very simple arcade drive control. */ public class OpArcadeDrive extends ReferencingCommand { + + /** + * The OI used for input. + */ public ArcadeOI oi; - double leftThrottle; - double rightThrottle; + /** + * The output to give the left side of the drive. + */ + private double leftThrottle; + + /** + * The output to the right side of the drive. + */ + private double rightThrottle; + /** + * Default constructor + * @param drive The drive this command controls + * @param oi The OI that gives the input to this command. + */ public OpArcadeDrive(TalonClusterDrive drive, ArcadeOI oi) { super(drive); this.oi = oi; + //Default commands need to require their subsystems. requires(subsystem); } @Override protected void initialize() { - ((TalonClusterDrive) subsystem).leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - ((TalonClusterDrive) subsystem).rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.Speed); - + //Start stationary. ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } @Override protected void execute() { - - + //Calculate the right and left outputs from the fwd and rot inputs. rightThrottle = oi.getFwd() + oi.getRot(); leftThrottle = oi.getFwd() - oi.getRot(); + ((TalonClusterDrive) subsystem).setDefaultThrottle(leftThrottle, rightThrottle); + //Logging. ((TalonClusterDrive) subsystem).logData(); - ((TalonClusterDrive) subsystem).setDefaultThrottle(leftThrottle, rightThrottle); } @Override protected boolean isFinished() { + //Don't exit because this is a default command. return false; } @Override protected void end() { + //Doesn't end, default command. } @Override protected void interrupted() { System.out.println("OpTankDrive Interrupted! Stopping the robot."); + //Break for safety! ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java index feaa09b1..70229796 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java @@ -5,46 +5,72 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.TankOI; /** - * Program created by noah on 1/8/17. + * Very simple tank drive control. */ public class OpTankDrive extends ReferencingCommand { + + /** + * The OI used for input. + */ public TankOI oi; + /** + * The output to be given to the left side of the robot. + */ private double leftThrottle; + + /** + * The output to be given to the right side of the robot. + */ private double rightThrottle; + /** + * Default constructor. + * @param drive The drive this command controls. + * @param oi The OI this command gets input from. + */ public OpTankDrive(TalonClusterDrive drive, TankOI oi) { super(drive); this.oi = oi; + //Default commands must require their subsystem. requires(subsystem); System.out.println("Drive Robot bueno"); } @Override protected void initialize() { + //Start stationary. ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } @Override protected void execute() { + //Get the throttle from the OI rightThrottle = oi.getRightThrottle(); leftThrottle = oi.getLeftThrottle(); - ((TalonClusterDrive) subsystem).logData(); + + //Give output to the motors. ((TalonClusterDrive) subsystem).setDefaultThrottle(leftThrottle, rightThrottle); + + //Data logging + ((TalonClusterDrive) subsystem).logData(); } @Override protected boolean isFinished() { + //Doesn't end because this is a default command return false; } @Override protected void end() { + //Doesn't end because this is a default command } @Override protected void interrupted() { System.out.println("OpTankDrive Interrupted! Stopping the robot."); + //Stop if interrupted for safety. ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java index 0047fb7f..b3eac595 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java @@ -4,13 +4,26 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by Noah Gleason on 2/12/2017. + * Override or unoverride whether we're autoshifting. Used to stay in low gear for pushing matches and more! */ public class OverrideAutoShift extends ReferencingCommand { + /** + * Whether or not to override. + */ private boolean override; + + /** + * Whether to switch to low or high gear before overriding. + */ private boolean switchToLowGear; + /** + * Default constructor + * @param drive The drive subsystem this controls. + * @param override Whether or not to override autoshifting. + * @param switchToLowGear Whether to switch to low gear. If false, switch to high gear. + */ public OverrideAutoShift(TalonClusterDrive drive, boolean override, boolean switchToLowGear) { super(drive); requires(subsystem); @@ -25,12 +38,15 @@ protected void initialize() { @Override protected void execute() { + //Set whether or not we're overriding ((TalonClusterDrive) subsystem).overrideAutoShift = override; + //Switch gears ((TalonClusterDrive) subsystem).setLowGear(switchToLowGear); } @Override protected boolean isFinished() { + //Runs instantaneously return true; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index b177d077..cfed6435 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -6,17 +6,13 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by BlairRobot on 2017-01-12. + * Drive forward at constant speed then stop to tune PID. */ public class PIDTest extends ReferencingCommandGroup { + /** - * Instantiate the ReferencingCommandGroup - * - * @param mappedSubsystem the {@link MappedSubsystem} - * to feed to this - * {@code - * ReferencingCommandGroup}'s - * {@link ReferencingCommand}s + * Default constructor + * @param mappedSubsystem the TalonClusterDrive to control */ public PIDTest(MappedSubsystem mappedSubsystem) { super(mappedSubsystem); @@ -24,9 +20,9 @@ public PIDTest(MappedSubsystem mappedSubsystem) { TalonClusterDrive driveSubsystem = (TalonClusterDrive) mappedSubsystem; - // for (int i = 0; i < 5; i++) { + //Drive forward for a bit addSequential(new DriveAtSpeed(driveSubsystem, 0.75, 1.5)); + //Stop addSequential(new DriveAtSpeed(driveSubsystem, 0, 5)); - // } } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java index 9636f663..24effcec 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java @@ -5,9 +5,10 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by BlairRobot on 2017-02-09. + * A wrapper command that switches to high gear. */ public class SwitchToHighGear extends ReferencingCommand { + public SwitchToHighGear(MappedSubsystem subsystem) { super(subsystem); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java index 027d0d0f..6c9680d1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java @@ -5,7 +5,7 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by BlairRobot on 2017-02-09. + * A wrapper command that switches to low gear. */ public class SwitchToLowGear extends ReferencingCommand { public SwitchToLowGear(MappedSubsystem subsystem) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java similarity index 76% rename from src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java rename to src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java index 65127ca1..02bf00fe 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java @@ -4,11 +4,11 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by Noah Gleason on 2/12/2017. + * Toggle whether or not to use the NavX to drive straight. */ -public class OverrideNavX extends ReferencingCommand { +public class ToggleOverrideNavX extends ReferencingCommand { - public OverrideNavX(TalonClusterDrive drive) { + public ToggleOverrideNavX(TalonClusterDrive drive) { super(drive); requires(subsystem); } @@ -20,6 +20,7 @@ protected void initialize() { @Override protected void execute() { + //Toggle whether or not we're overriding the NavX ((TalonClusterDrive) subsystem).overrideNavX = !((TalonClusterDrive) subsystem).overrideNavX; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 6761f88e..b1fd0e30 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -7,7 +7,7 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideNavX; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ToggleOverrideNavX; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToHighGear; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; @@ -259,7 +259,7 @@ public void mapButtons() { final double TIMEOUT = 5.; //Map mandatory commands - toggleOverrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem)); + toggleOverrideNavX.whenPressed(new ToggleOverrideNavX(Robot.driveSubsystem)); //Map drive commands if (turnaround != null) { From 8dae99b7d342db291daffc0fdd2fbd990b2476d3 Mon Sep 17 00:00:00 2001 From: Bryan Li Date: Thu, 2 Mar 2017 17:09:29 -0500 Subject: [PATCH 31/66] Improve clipToOne method in TalonClusterDrive. --- .../robot/drive/talonCluster/TalonClusterDrive.java | 7 +------ .../drive/talonCluster/commands/DefaultArcadeDrive.java | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 3fbea513..cf78666b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -540,11 +540,6 @@ public void autoShift() { * @return That number, clipped to 1 if it's greater than 1 or clipped to -1 if it's less than -1. */ private static double clipToOne(double in) { - if (in > 1) - return 1; - else if (in < -1) - return -1; - else - return in; + return Math.min(Math.max(in, -1), 1); } } \ No newline at end of file diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index bb7efdb1..9c836957 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -39,7 +39,6 @@ public class DefaultArcadeDrive extends PIDAngleCommand { * The maximum velocity for the robot to be at in order to switch to driveStraight, in degrees/sec */ private double maxAngularVel; - /** * The map of values */ From 112558cae13e17bb2e6cdbd18bc60b3c65341696 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Thu, 2 Mar 2017 17:23:34 -0500 Subject: [PATCH 32/66] Comment climber --- .../talonCluster/commands/ois/ArcadeOI.java | 2 +- .../talonCluster/commands/ois/TankOI.java | 2 +- .../mechanism/climber/ClimberSubsystem.java | 18 +++++++++++++++++- .../climber/commands/CurrentClimb.java | 15 +++++++++------ .../climber/commands/ManualClimb.java | 9 ++++++++- .../climber/commands/StopClimbing.java | 7 ++++++- 6 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/ArcadeOI.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/ArcadeOI.java index e5f978e6..cd42245a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/ArcadeOI.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/ArcadeOI.java @@ -1,7 +1,7 @@ package org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois; /** - * Created by Ryan on 2017-01-29. + * An arcade-style dual joystick OI. */ public interface ArcadeOI { /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/TankOI.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/TankOI.java index be5d0ed6..2b96a436 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/TankOI.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ois/TankOI.java @@ -1,7 +1,7 @@ package org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois; /** - * Created by ryant on 2017-01-25. + * A tank-style dual joystick OI. */ public interface TankOI { /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java index f9ff2846..9a4d19c7 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java @@ -4,14 +4,22 @@ import org.usfirst.frc.team449.robot.mechanism.MechanismSubsystem; /** - * Created by Justin on 1/12/2017. + * The climber, with current monitoring to stop. */ public class ClimberSubsystem extends MechanismSubsystem { + /** + * The CANTalon controlling the climber. + */ public RotPerSecCANTalonSRX canTalonSRX; + + /** + * The maximum allowable current before we stop the motor. + */ private double max_current; public ClimberSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.climber.ClimberMap.Climber map) { super(map.getMechanism()); + //Instantiate things this.map = map; canTalonSRX = new RotPerSecCANTalonSRX(map.getWinch()); this.max_current = map.getMaxCurrent(); @@ -22,10 +30,18 @@ protected void initDefaultCommand() { //Do nothing! } + /** + * Set the percent voltage to be given to the motor. + * @param percentVbus The voltage to give the motor, from -1 to 1. + */ public void setPercentVbus(double percentVbus) { canTalonSRX.setPercentVbus(percentVbus); } + /** + * Whether or not the current limit has been reached. + * @return If the output current is greater than the max allowable current. + */ public boolean reachedTop() { return canTalonSRX.canTalon.getOutputCurrent() > max_current; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java index 15a0959d..9fed0f72 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java @@ -5,11 +5,14 @@ import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; /** - * Created by Justin on 1/12/2017. + * Climb the rope and stop when the current limit is exceeded. */ public class CurrentClimb extends ReferencingCommand { - ClimberSubsystem climber; + /** + * The climber this is controlling + */ + private ClimberSubsystem climber; public CurrentClimb(ClimberSubsystem climber) { super(climber); @@ -25,27 +28,27 @@ protected void initialize() { @Override protected void execute() { - //if (climber.reachedTop()){ - // climber.setPercentVbus(0); - //} else { + //Climb as fast as we can climber.setPercentVbus(1); - //} SmartDashboard.putNumber("Current", climber.canTalonSRX.canTalon.getOutputCurrent()); } @Override protected boolean isFinished() { + //Stop when the current limit is exceeded. return climber.reachedTop(); } @Override protected void end() { + //Stop the motor when we reach the top. climber.setPercentVbus(0); System.out.println("CurrentClimb end"); } @Override protected void interrupted() { + //Stop climbing if we're for some reason interrupted. climber.setPercentVbus(0); System.out.println("CurrentClimb interrupted, stopping climb."); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java index 08972819..31ffd137 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java @@ -4,10 +4,13 @@ import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; /** - * Created by Noah Gleason on 2/11/2017. + * Climb the rope until this command is interrupted. WARNING: May damage stuff because of the torque. */ public class ManualClimb extends ReferencingCommand { + /** + * The climber this is controlling + */ ClimberSubsystem climber; public ManualClimb(ClimberSubsystem climber) { @@ -24,22 +27,26 @@ protected void initialize() { @Override protected void execute() { + //Climb as fast as we can climber.setPercentVbus(1); } @Override protected boolean isFinished() { + //DOES NOT STOP; you need another command like StopClimbing to interrupt it. return false; } @Override protected void end() { + //Stop climbing for safety climber.setPercentVbus(0); System.out.println("CurrentClimb end"); } @Override protected void interrupted() { + //Stop climbing for safety climber.setPercentVbus(0); System.out.println("CurrentClimb interrupted, stopping climb."); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java index 12aeb667..d2a23ca1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java @@ -4,10 +4,13 @@ import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; /** - * Created by Noah Gleason on 2/11/2017. + * Interrupts the current climb command and manually stops the climber. */ public class StopClimbing extends ReferencingCommand { + /** + * The climber this is controlling + */ ClimberSubsystem climber; public StopClimbing(ClimberSubsystem climber) { @@ -24,11 +27,13 @@ protected void initialize() { @Override protected void execute() { + //Stop climbing climber.setPercentVbus(0); } @Override protected boolean isFinished() { + //Finishes instantaneously return true; } From 79887500da4263da504889c51846421f8249f1df Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 10:31:49 -0500 Subject: [PATCH 33/66] Comment feeder. --- .../mechanism/feeder/FeederSubsystem.java | 28 +++++++++++++++++-- .../mechanism/feeder/commands/RunFeeder.java | 6 +++- .../mechanism/feeder/commands/StopFeeder.java | 8 ++++-- .../feeder/commands/ToggleFeeder.java | 8 ++++-- 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java index 5d9011f8..1c0aa5ad 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java @@ -5,27 +5,49 @@ import org.usfirst.frc.team449.robot.mechanism.MechanismSubsystem; /** - * Created by Noah Gleason on 2/18/2017. + * The auger that feeds balls into the shooter. */ public class FeederSubsystem extends MechanismSubsystem { + /** + * The Victor motor that runs the auger + */ private VictorSP victor; + + /** + * The percentage speed for the motor to run at, from -1 to 1. + */ private double speed; + + /** + * Whether or not the motor is currently running. + */ public boolean running; public FeederSubsystem(FeederMap.Feeder map) { super(map.getMechanism()); + speed = map.getSpeed(); + + //TODO make a MappedVictor class that we can directly give a motor map. + //Initialize the Victor this.victor = new VictorSP(map.getVictor().getPort()); victor.setInverted(map.getVictor().getInverted()); - speed = map.getSpeed(); + + //Starts off running = false; } + /** + * Turns the motor on. + */ public void runVictor() { victor.set(speed); running = true; } + /** + * Turns the motor off. + */ public void stopVictor() { victor.set(0); running = false; @@ -33,6 +55,6 @@ public void stopVictor() { @Override protected void initDefaultCommand() { - //Do nothing! + //Do nothing! Inheritance is dumb sometimes. } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java index ed03d2c8..8a1ed6f1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java @@ -8,7 +8,10 @@ */ public class RunFeeder extends ReferencingCommand { - FeederSubsystem feeder; + /** + * The feeder subsystem this controls. + */ + private FeederSubsystem feeder; public RunFeeder(FeederSubsystem feeder) { super(feeder); @@ -29,6 +32,7 @@ protected void execute() { @Override protected boolean isFinished() { + //Runs instantaneously return true; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java index c99cdd88..5eeed32f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java @@ -4,11 +4,14 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; /** - * Activate the feeder. + * Stop the feeder. */ public class StopFeeder extends ReferencingCommand { - FeederSubsystem feeder; + /** + * The feeder subsystem this controls. + */ + private FeederSubsystem feeder; public StopFeeder(FeederSubsystem feeder) { super(feeder); @@ -29,6 +32,7 @@ protected void execute() { @Override protected boolean isFinished() { + //Runs instantaneously return true; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java index e3ab2083..f374612d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java @@ -4,11 +4,14 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; /** - * Activate the feeder. + * Toggle the feeder. */ public class ToggleFeeder extends ReferencingCommand { - FeederSubsystem feeder; + /** + * The feeder subsystem this controls. + */ + private FeederSubsystem feeder; public ToggleFeeder(FeederSubsystem feeder) { super(feeder); @@ -33,6 +36,7 @@ protected void execute() { @Override protected boolean isFinished() { + //Runs instantaneously return true; } From e1126340f62186c18d7c2ca373bb1cf1a6cddb57 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 10:42:30 -0500 Subject: [PATCH 34/66] Comment intake. --- .../mechanism/intake/Intake2017/Intake2017.java | 11 +++++------ .../intake/Intake2017/commands/ToggleIntaking.java | 1 + .../Intake2017/commands/spin/DynamicIntakeIn.java | 2 +- .../Intake2017/commands/spin/DynamicIntakeStop.java | 2 +- .../spin/{SIDI.java => StaticInDynamicIn.java} | 12 ++++++++---- .../spin/{SIDS.java => StaticInDynamicStop.java} | 12 ++++++++---- .../Intake2017/commands/spin/StaticIntakeIn.java | 2 +- .../Intake2017/commands/spin/StaticIntakeStop.java | 2 +- .../spin/{SSDS.java => StaticStopDynamicStop.java} | 12 ++++++++---- .../Intake2017/commands/updown/IntakeDown.java | 1 - .../intake/Intake2017/commands/updown/IntakeUp.java | 1 - .../mechanism/topcommands/shooter/FireShooter.java | 4 ++-- .../mechanism/topcommands/shooter/LoadShooter.java | 4 ++-- .../mechanism/topcommands/shooter/RackShooter.java | 4 ++-- .../mechanism/topcommands/shooter/ResetShooter.java | 4 ++-- 15 files changed, 42 insertions(+), 32 deletions(-) rename src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/{SIDI.java => StaticInDynamicIn.java} (60%) rename src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/{SIDS.java => StaticInDynamicStop.java} (58%) rename src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/{SSDS.java => StaticStopDynamicStop.java} (65%) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java index c81368e0..1680b7ca 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java @@ -5,7 +5,7 @@ import org.usfirst.frc.team449.robot.MappedSubsystem; /** - * Created by Justin on 1/28/2017. + * The subsystem that picks up balls from the ground. */ public class Intake2017 extends MappedSubsystem { /** @@ -21,7 +21,7 @@ public class Intake2017 extends MappedSubsystem { */ private DoubleSolenoid piston; /** - * Whether is currently intaking + * Whether this is currently intaking */ public boolean isIntaking; @@ -43,12 +43,11 @@ public Intake2017(maps.org.usfirst.frc.team449.robot.mechanism.intake.Intake2017 fixedVictor.setInverted(map.getFixedVictor().getInverted()); this.actuatedVictor = new VictorSP(map.getActuatedVictor().getPort()); actuatedVictor.setInverted(map.getActuatedVictor().getInverted()); - this.piston = new DoubleSolenoid(map.getPistonModuleNum(), map.getPiston().getForward(), map.getPiston() - .getReverse()); + this.piston = new DoubleSolenoid(map.getPistonModuleNum(), map.getPiston().getForward(), map.getPiston().getReverse()); } /** - * Set the speed of the static intake + * Set the percentage speed of the static intake * * @param speed PWM setpoint [-1, 1] */ @@ -57,7 +56,7 @@ public void setFixedVictor(double speed) { } /** - * Set the speed of the dynamic intake + * Set the percentage speed of the dynamic intake * * @param speed PWM setpoint [-1, 1] */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java index d6750118..d2049ac4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java @@ -33,6 +33,7 @@ protected void execute() { intake2017.setActuatedVictor(0); intake2017.setFixedVictor(0); } else { + //TODO Stop hardcoding these intake2017.setActuatedVictor(1); intake2017.setFixedVictor(-0.5); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java index 2c8c0b3c..d846c2c2 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeIn.java @@ -6,7 +6,7 @@ /** * Created by ryant on 2017-02-18. * @deprecated - * @see SIDI + * @see StaticInDynamicIn */ @Deprecated public class DynamicIntakeIn extends ReferencingCommand { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java index 332cf248..6bb34d4a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/DynamicIntakeStop.java @@ -6,7 +6,7 @@ /** * Created by ryant on 2017-02-18. * @deprecated - * @see SIDI + * @see StaticInDynamicIn */ @Deprecated public class DynamicIntakeStop extends ReferencingCommand { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDI.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java similarity index 60% rename from src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDI.java rename to src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java index 3b5dc771..7aff4dd9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDI.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java @@ -4,19 +4,23 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by ryant on 2017-02-19. + * Run both intake motors. Used to pick up balls from the ground. */ -public class SIDI extends ReferencingCommand { +public class StaticInDynamicIn extends ReferencingCommand { - Intake2017 intake; + /** + * The intake subsystem to execute the command on + */ + private Intake2017 intake; - public SIDI(Intake2017 intake) { + public StaticInDynamicIn(Intake2017 intake) { super(intake); this.intake = intake; } @Override protected void initialize() { + //TODO Stop hardcoding these intake.setFixedVictor(-0.7); intake.setActuatedVictor(1); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDS.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java similarity index 58% rename from src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDS.java rename to src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java index 59950634..f821ae98 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SIDS.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java @@ -4,19 +4,23 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by ryant on 2017-02-19. + * Run the static motor but not the dynamic. This is used to agitate balls in the bin. */ -public class SIDS extends ReferencingCommand { +public class StaticInDynamicStop extends ReferencingCommand { - Intake2017 intake; + /** + * The intake subsystem to execute the command on + */ + private Intake2017 intake; - public SIDS(Intake2017 intake) { + public StaticInDynamicStop(Intake2017 intake) { super(intake); this.intake = intake; } @Override protected void initialize() { + //TODO Stop hardcoding these intake.setFixedVictor(-0.3); intake.setActuatedVictor(0); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java index a8ff7326..82505a2d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeIn.java @@ -6,7 +6,7 @@ /** * Created by ryant on 2017-02-18. * @deprecated - * @see SIDI + * @see StaticInDynamicIn */ @Deprecated public class StaticIntakeIn extends ReferencingCommand { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java index ee0579d1..76939cbc 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticIntakeStop.java @@ -6,7 +6,7 @@ /** * Created by ryant on 2017-02-18. * - * @see SIDI + * @see StaticInDynamicIn * @deprecated */ @Deprecated diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SSDS.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java similarity index 65% rename from src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SSDS.java rename to src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java index 39a96f82..d78ef384 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/SSDS.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java @@ -4,12 +4,16 @@ import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; /** - * Created by ryant on 2017-02-19. + * Stop both intake motors. */ -public class SSDS extends ReferencingCommand { - Intake2017 intake; +public class StaticStopDynamicStop extends ReferencingCommand { - public SSDS(Intake2017 intake) { + /** + * The intake subsystem to execute the command on + */ + private Intake2017 intake; + + public StaticStopDynamicStop(Intake2017 intake) { super(intake); this.intake = intake; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java index bc818d1b..1dc727df 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java @@ -20,7 +20,6 @@ public class IntakeDown extends ReferencingCommand { */ public IntakeDown(Intake2017 intake2017) { super(intake2017); - // requires(intake2017); this.intake2017 = intake2017; System.out.println("IntakeDown constructed"); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java index f9ba43e7..2342e89f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java @@ -20,7 +20,6 @@ public class IntakeUp extends ReferencingCommand { */ public IntakeUp(Intake2017 intake2017) { super(intake2017); - // requires(intake2017); this.intake2017 = intake2017; System.out.println("IntakeUp constructed"); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java index 61a319a4..3ff4b8ed 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java @@ -4,7 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.RunFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; +import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticInDynamicStop; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; @@ -23,7 +23,7 @@ public class FireShooter extends CommandGroup { public FireShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); addParallel(new AccelerateFlywheel(sfs, 2.5 * 60)); // TODO remove useless timeout - addParallel(new SIDS(intake)); + addParallel(new StaticInDynamicStop(intake)); addParallel(new RunFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java index c7b31376..f5654585 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java @@ -4,7 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDI; +import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticInDynamicIn; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeDown; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; @@ -25,7 +25,7 @@ public LoadShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem requires(intake); addParallel(new DecelerateFlywheel(sfs, 5)); addParallel(new IntakeDown(intake)); - addParallel(new SIDI(intake)); + addParallel(new StaticInDynamicIn(intake)); addParallel(new StopFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java index 57503119..559a2eb1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java @@ -4,7 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SIDS; +import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticInDynamicStop; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeUp; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; @@ -25,7 +25,7 @@ public RackShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem requires(intake); addParallel(new AccelerateFlywheel(sfs, 5)); addParallel(new IntakeUp(intake)); - addParallel(new SIDS(intake)); + addParallel(new StaticInDynamicStop(intake)); addParallel(new StopFeeder(feeder)); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java index 9e5898fd..a47fb5cf 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java @@ -4,7 +4,7 @@ import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.commands.StopFeeder; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; -import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.SSDS; +import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.spin.StaticStopDynamicStop; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeDown; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; @@ -25,7 +25,7 @@ public ResetShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsyste requires(intake); addParallel(new DecelerateFlywheel(sfs, 5)); addParallel(new IntakeDown(intake)); - addParallel(new SSDS(intake)); + addParallel(new StaticStopDynamicStop(intake)); addParallel(new StopFeeder(feeder)); } } From 55fcd956ac6cfd13d819f247f286dcd3d67cc952 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 10:52:14 -0500 Subject: [PATCH 35/66] Comment singleFlywheelShooter. --- .../singleflywheelshooter/SingleFlywheelShooter.java | 11 +++++++---- .../commands/AccelerateFlywheel.java | 5 +++-- .../commands/DecelerateFlywheel.java | 7 ++++--- .../singleflywheelshooter/commands/ToggleShooter.java | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java index 52e7d4b4..ac3b3550 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.java @@ -24,7 +24,7 @@ public class SingleFlywheelShooter extends MappedSubsystem { // TODO externalize /** - * Throttle at which to run the shooter + * Throttle at which to run the shooter, defaults to 0.5 */ public double throttle = 0.5; @@ -47,6 +47,8 @@ public SingleFlywheelShooter(maps.org.usfirst.frc.team449.robot.mechanism.single super(map.getMechanism()); this.map = map; this.talon = new RotPerSecCANTalonSRX(map.getTalon()); + + //If we have a throttle in the map, use that instead of 0.5 if (map.hasThrottle()) { this.throttle = map.getThrottle(); } @@ -74,7 +76,7 @@ private void setPIDSpeed(double sp) { /** * A wrapper around the speed method we're currently using/testing * - * @param sp The speed to go at, where 0 is off and 1 is max speed. + * @param sp The speed to go at [-1, 1] */ public void setDefaultSpeed(double sp) { setPIDSpeed(sp); @@ -90,7 +92,7 @@ public void logData(double throttle) { SmartDashboard.putNumber("max error", maxError); SmartDashboard.putNumber("speed", talon.canTalon.getPulseWidthVelocity()); - try (FileWriter fw = new FileWriter("/home/lvuser/shooterLog.csv", true)) { + try (FileWriter fw = new FileWriter("/home/lvuser/logs/shooterLog.csv", true)) { StringBuilder sb = new StringBuilder(); sb.append((System.nanoTime() - startTime) / 100); sb.append(","); @@ -115,7 +117,8 @@ public void logData(double throttle) { */ @Override protected void initDefaultCommand() { - try (PrintWriter writer = new PrintWriter("/home/lvuser/shooterLog.csv")) { + //TODO Externalize filepath. + try (PrintWriter writer = new PrintWriter("/home/lvuser/logs/shooterLog.csv")) { writer.close(); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java index 4db8e842..446b44b3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java @@ -11,7 +11,7 @@ public class AccelerateFlywheel extends ReferencingCommand { /** * Flywheel subsystem to execute the command on */ - SingleFlywheelShooter flywheelShooter; + private SingleFlywheelShooter flywheelShooter; /** * Construct an AccelerateFLywheel command @@ -38,12 +38,13 @@ protected void initialize() { */ @Override protected void execute() { - flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle * 100.0); + flywheelShooter.logData(((SingleFlywheelShooter) subsystem).throttle); flywheelShooter.setDefaultSpeed(((SingleFlywheelShooter) subsystem).throttle); flywheelShooter.spinning = true; System.out.println("AccelerateFlywheel executed"); } + //TODO make AccelerateFlywheel and DecelerateFlywheel consistent here. /** * Finish the command instantly, as the setpoint has already been set * diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java index 04d2836f..7d09cade 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java @@ -11,7 +11,7 @@ public class DecelerateFlywheel extends ReferencingCommand { /** * Flywheel subsystem to execute the command on */ - SingleFlywheelShooter flywheelShooter; + private SingleFlywheelShooter flywheelShooter; /** * Construct a DecelerateFLywheel command @@ -44,10 +44,11 @@ protected void execute() { System.out.println("DecelerateFlywheel executed"); } + //TODO make AccelerateFlywheel and DecelerateFlywheel consistent here. /** - * Finish the command instantly, as the setpoint has already been set + * Runs constantly in order to log data. * - * @return true + * @return false */ @Override protected boolean isFinished() { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java index bf91242a..f8657c45 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java @@ -11,7 +11,7 @@ public class ToggleShooter extends ReferencingCommand { /** * Flywheel subsystem to execute the command on */ - SingleFlywheelShooter flywheelShooter; + private SingleFlywheelShooter flywheelShooter; /** * Construct an AccelerateFLywheel command From 3dd69c5586eb6cded3f8f0641ae819ac0a76279e Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 10:56:27 -0500 Subject: [PATCH 36/66] Comment topCommands. --- .../singleflywheelshooter/commands/AccelerateFlywheel.java | 1 + .../singleflywheelshooter/commands/DecelerateFlywheel.java | 1 + .../robot/mechanism/topcommands/shooter/FireShooter.java | 2 +- .../robot/mechanism/topcommands/shooter/LoadShooter.java | 2 +- .../robot/mechanism/topcommands/shooter/RackShooter.java | 2 +- .../robot/mechanism/topcommands/shooter/ResetShooter.java | 3 ++- 6 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java index 446b44b3..0153eb6c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java @@ -13,6 +13,7 @@ public class AccelerateFlywheel extends ReferencingCommand { */ private SingleFlywheelShooter flywheelShooter; + //TODO Either implement or remove timeout. /** * Construct an AccelerateFLywheel command * diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java index 7d09cade..d66e43b2 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java @@ -13,6 +13,7 @@ public class DecelerateFlywheel extends ReferencingCommand { */ private SingleFlywheelShooter flywheelShooter; + //TODO Either implement or remove timeout. /** * Construct a DecelerateFLywheel command * diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java index 3ff4b8ed..371f9138 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/FireShooter.java @@ -22,7 +22,7 @@ public class FireShooter extends CommandGroup { */ public FireShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); - addParallel(new AccelerateFlywheel(sfs, 2.5 * 60)); // TODO remove useless timeout + addParallel(new AccelerateFlywheel(sfs, 2.5 * 60)); addParallel(new StaticInDynamicStop(intake)); addParallel(new RunFeeder(feeder)); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java index f5654585..87164cf4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/LoadShooter.java @@ -10,7 +10,7 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** - * Command group for loading the shooter. + * Command group for intaking balls from the ground. * Stops flywheel, runs static intake, runs dynamic intake, lowers intake, and stops feeder. */ public class LoadShooter extends CommandGroup { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java index 559a2eb1..fea0d865 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/RackShooter.java @@ -10,7 +10,7 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.AccelerateFlywheel; /** - * Command group for racking the shooter. + * Command group for preparing the shooter to fire. * Starts flywheel, runs static intake, stops dynamic intake, raises intake, and stops feeder. */ public class RackShooter extends CommandGroup { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java index a47fb5cf..c0c2c5e0 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/topcommands/shooter/ResetShooter.java @@ -10,7 +10,7 @@ import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.commands.DecelerateFlywheel; /** - * Command group for loading the shooter. + * Command group to reset everything. * Turns everything off, lowers intake */ public class ResetShooter extends CommandGroup { @@ -24,6 +24,7 @@ public class ResetShooter extends CommandGroup { public ResetShooter(SingleFlywheelShooter sfs, Intake2017 intake, FeederSubsystem feeder) { requires(intake); addParallel(new DecelerateFlywheel(sfs, 5)); + //TODO Possibly have this raise intake instead because we'll mostly use this right before climbing. addParallel(new IntakeDown(intake)); addParallel(new StaticStopDynamicStop(intake)); addParallel(new StopFeeder(feeder)); From e7c98883ae5b4d2a43dad3abe18ef235863713e0 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 12:39:10 -0500 Subject: [PATCH 37/66] JavaDoc everything. --- gradle/wrapper/gradle-wrapper.properties | 4 +- .../robot/ReferencingCommandGroup.java | 2 +- .../org/usfirst/frc/team449/robot/Robot.java | 38 +++++++++---- .../robot/components/PIDAngleCommand.java | 3 - .../components/RotPerSecCANTalonSRX.java | 8 ++- .../drive/talonCluster/TalonClusterDrive.java | 24 ++++++-- .../commands/DefaultArcadeDrive.java | 21 ++++++- .../talonCluster/commands/DriveAtSpeed.java | 20 ++++++- .../commands/NavXDriveStraight.java | 55 +++---------------- .../commands/NavXRelativeTTA.java | 10 +++- .../commands/NavXTurnToAngle.java | 21 ++++++- .../talonCluster/commands/OpArcadeDrive.java | 22 +++++--- .../talonCluster/commands/OpTankDrive.java | 20 ++++--- .../commands/OverrideAutoShift.java | 19 ++++++- .../commands/PIDBackAndForth.java | 3 +- .../commands/SwitchToHighGear.java | 20 +++++++ .../commands/SwitchToLowGear.java | 21 +++++++ .../commands/ToggleOverrideNavX.java | 22 +++++++- .../mechanism/climber/ClimberSubsystem.java | 10 ++++ .../climber/commands/CurrentClimb.java | 22 +++++++- .../climber/commands/ManualClimb.java | 26 ++++++++- .../climber/commands/StopClimbing.java | 30 ++++++++-- .../mechanism/feeder/FeederSubsystem.java | 10 ++++ .../mechanism/feeder/commands/RunFeeder.java | 21 ++++++- .../mechanism/feeder/commands/StopFeeder.java | 21 ++++++- .../feeder/commands/ToggleFeeder.java | 21 ++++++- .../intake/Intake2017/Intake2017.java | 4 +- .../commands/spin/StaticInDynamicIn.java | 13 ++++- .../commands/spin/StaticInDynamicStop.java | 13 ++++- .../commands/spin/StaticStopDynamicStop.java | 13 ++++- .../team449/robot/vision/CameraSubsystem.java | 29 ++++++++-- .../robot/vision/commands/ChangeCam.java | 29 ++++++++-- 32 files changed, 473 insertions(+), 122 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8e89be0d..991de595 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Mar 01 11:32:32 EST 2017 +#Sat Mar 04 12:31:48 EST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/src/main/java/org/usfirst/frc/team449/robot/ReferencingCommandGroup.java b/src/main/java/org/usfirst/frc/team449/robot/ReferencingCommandGroup.java index 64c0d272..bd5bed61 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/ReferencingCommandGroup.java +++ b/src/main/java/org/usfirst/frc/team449/robot/ReferencingCommandGroup.java @@ -14,7 +14,7 @@ public abstract class ReferencingCommandGroup extends CommandGroup { /** * Subsystem to reference to */ - MappedSubsystem subsystem; + private MappedSubsystem subsystem; /** * Instantiate the ReferencingCommandGroup diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index cd6300a1..dbfbbd85 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -22,35 +22,53 @@ */ public class Robot extends IterativeRobot { - //The shooter subsystem (flywheel only) + /** + * The shooter subsystem (flywheel only) + */ public static SingleFlywheelShooter singleFlywheelShooterSubsystem; - //The intake subsystem (intake motors and pistons) + /** + * The intake subsystem (intake motors and pistons) + */ public static Intake2017 intakeSubsystem; - //The climber + /** + *The climber + */ public static ClimberSubsystem climberSubsystem; - //The pneumatics (maybe doesn't work?) + /** + *The pneumatics (maybe doesn't work?) + */ public static PneumaticsSubsystem pneumaticsSubsystem; - //The drive + /** + *The drive + */ public static TalonClusterDrive driveSubsystem; - //OI, using an Xbox-style controller and arcade drive. + /** + * OI, using an Xbox-style controller and arcade drive. + */ public static OI2017ArcadeGamepad oiSubsystem; - //The cameras on the robot and the code to stream them to SmartDashboard (NOT computer vision!) + /** + * The cameras on the robot and the code to stream them to SmartDashboard (NOT computer vision!) + */ public static CameraSubsystem cameraSubsystem; - //The auger used to feed balls into the shooter. + /** + * The auger used to feed balls into the shooter. + */ public static FeederSubsystem feederSubsystem; - //The object constructed directly from map.cfg. + /** + * The object constructed directly from map.cfg. + * */ private static Robot2017Map.Robot2017 cfg; /** - * This is the method that runs when you turn on the robot. + * The method that runs when the robot is turned on. Initializes all subsystems from the map. */ public void robotInit() { System.out.println("Started robotInit."); diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java index bf24bf25..f6b9d5dd 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java @@ -87,16 +87,13 @@ It is called from the PIDController in PIDCommand, which will give it the output /** * Returns the input for the pid loop. *

- *

* It returns the input for the pid loop, so if this command was based off of * a gyro, then it should return the angle of the gyro *

*

- *

* All subclasses of {@link PIDCommand} must override this method. *

*

- *

* This method will be called in a different thread then the {@link Scheduler} * thread. *

diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java index 4015a937..fa614811 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java @@ -29,7 +29,9 @@ public class RotPerSecCANTalonSRX extends Component { */ protected CANTalon.FeedbackDevice feedbackDevice; - //The map used to construct this object. + /** + * The map used to construct this object. + */ private UnitlessCANTalonSRXMap.UnitlessCANTalonSRX map; /** @@ -144,6 +146,10 @@ public void switchToLowGear() { } } + /** + * Get the max speed of the gear the talon is currently in. + * @return max speed, in RPS, as given in the map. + */ public double getMaxSpeed() { return maxSpeed; } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index cf78666b..5700bfcb 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -474,9 +474,15 @@ public boolean inLowGear() { * @return whether the robot should downshift */ public boolean shouldDownshift() { - //Whether we should shift, ignoring timing regulation. - boolean okToShift = (Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift || - (oi.getFwd() == 0 && oi.getRot() != 0)) && !lowGear && !overrideAutoShift; + //We should shift if we're going slower than the downshift speed + boolean okToShift = Math.min(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) < downshift; + //Or if we're just turning in place. + okToShift = okToShift || (oi.getFwd() == 0 && oi.getRot() != 0); + //But there's no need to downshift if we're already in low gear. + okToShift = okToShift && !lowGear; + //And we don't want to shift if autoshifting is turned off. + okToShift = okToShift && !overrideAutoShift; + //If we're using a both-way shift delay (must wait shiftDelay seconds after shifting EITHER WAY before shifting again) if (shiftDelay != null) { return okToShift && (System.currentTimeMillis() - timeLastShifted > shiftDelay * 1000); @@ -499,9 +505,15 @@ public boolean shouldDownshift() { * @return whether the robot should upshift */ public boolean shouldUpshift() { - //Whether we should shift, ignoring timing regulation. - boolean okToShift = Math.max(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) > upshift && lowGear && - !overrideAutoShift && Math.abs(oi.getFwd()) > upshiftFwdDeadband; + //We should shift if we're going faster than the upshift speed... + boolean okToShift = Math.max(Math.abs(getLeftSpeed()), Math.abs(getRightSpeed())) > upshift; + //AND the driver's trying to go forward fast. + okToShift = okToShift && Math.abs(oi.getFwd()) > upshiftFwdDeadband; + //But there's no need to upshift if we're already in high gear. + okToShift = okToShift && lowGear; + //And we don't want to shift if autoshifting is turned off. + okToShift = okToShift && !overrideAutoShift; + //If we're using a both-way shift delay (must wait shiftDelay seconds after shifting EITHER WAY before shifting again) if (shiftDelay != null) { return okToShift && (System.currentTimeMillis() - timeLastShifted > shiftDelay * 1000); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index 9c836957..7b152bda 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -66,6 +66,9 @@ public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map System.out.println("Drive Robot bueno"); } + /** + * Initialize PIDController and variables. + */ @Override protected void initialize() { //Reset all values of the PIDController and enable it. @@ -82,6 +85,9 @@ protected void initialize() { driveSubsystem.setLowGear(true); } + /** + * Decide whether or not we should be in free drive or straight drive, and log data. + */ @Override protected void execute() { //Auto-shifting @@ -115,23 +121,36 @@ else if (!(drivingStraight) && rot == 0 && Math.abs(driveSubsystem.navx.getRate( SmartDashboard.putNumber("Rot axis", rot); } + /** + * Run constantly because this is a defaultDrive + * @return false + */ @Override protected boolean isFinished() { - //Runs constantly because this is a defaultDrive return false; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("DefaultArcadeDrive End."); } + /** + * Stop the motors and log when this command is interrupted. + */ @Override protected void interrupted() { System.out.println("DefaultArcadeDrive Interrupted! Stopping the robot."); driveSubsystem.setDefaultThrottle(0.0, 0.0); } + /** + * Give the correct output to the motors based on whether we're in free drive or drive straight. + * @param output The output of the angular PID loop. + */ @Override protected void usePIDOutput(double output) { //If we're driving straight.. diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java index 93c8df94..8a09b867 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java @@ -37,14 +37,20 @@ public DriveAtSpeed(TalonClusterDrive drive, double speed, double seconds) { System.out.println("Drive Robot bueno"); } + /** + * Set up start time. + */ @Override protected void initialize() { //Set up start time startTime = System.nanoTime(); - //Reset drive speed + //Reset drive speed (for safety reasons) ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } + /** + * Send output to motors and log data + */ @Override protected void execute() { //Set the speed @@ -53,19 +59,29 @@ protected void execute() { ((TalonClusterDrive) subsystem).logData(speed); } + /** + * Exit after the command's been running for long enough + * @return True if timeout has been reached, false otherwise + */ @Override protected boolean isFinished() { //Time-based exit return (System.nanoTime() - startTime) * 1e-9 > seconds; } + /** + * Stop the drive when the command ends. + */ @Override protected void end() { ((TalonClusterDrive) subsystem).logData(); - //Break on exit. + //Brake on exit. ((TalonClusterDrive) subsystem).setDefaultThrottle(0, 0); } + /** + * Log and stop the drive when the command is interrupted. + */ @Override protected void interrupted() { System.out.println("DriveAtSpeed Interrupted! Stopping the robot."); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java index 830d2498..8e67cdc4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXDriveStraight.java @@ -1,8 +1,5 @@ package org.usfirst.frc.team449.robot.drive.talonCluster.commands; -import edu.wpi.first.wpilibj.command.Command; -import edu.wpi.first.wpilibj.command.PIDCommand; -import edu.wpi.first.wpilibj.command.Scheduler; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import maps.org.usfirst.frc.team449.robot.components.ToleranceBufferAnglePIDMap; import org.usfirst.frc.team449.robot.components.PIDAngleCommand; @@ -28,21 +25,9 @@ public NavXDriveStraight(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, } /** - * Uses the value that the pid loop calculated. The calculated value is the - * "output" parameter. This method is a good time to set motor values, maybe - * something along the lines of - * driveline.tankDrive(output, -output) - *

- *

- * All subclasses of {@link PIDCommand} must override this method. - *

- *

- *

- * This method will be called in a different thread then the {@link Scheduler} - * thread. - *

+ * Give output to the drive based on the out of the PID loop. * - * @param output the value the pid loop calculated + * @param output the value the PID loop calculated */ @Override protected void usePIDOutput(double output) { @@ -62,8 +47,7 @@ else if (output < 0 && output > -minimumOutput) } /** - * The initialize method is called the first time this Command is run after - * being started. + * Set the setpoint of the angle PID. */ @Override protected void initialize() { @@ -72,8 +56,7 @@ protected void initialize() { } /** - * The execute method is called repeatedly until this Command either finishes - * or is canceled. + * Log the drive data. */ @Override protected void execute() { @@ -81,17 +64,9 @@ protected void execute() { } /** - * Returns whether this command is finished. If it is, then the command will - * be removed and {@link Command#end() end()} will be called. - *

- *

- * It may be useful for a team to reference the {@link Command#isTimedOut() - * isTimedOut()} method for time-sensitive commands. - *

- * $ + * Finishes instantaneously. * - * @return whether this command is finished. - * @see Command#isTimedOut() isTimedOut() + * @return true */ @Override protected boolean isFinished() { @@ -99,9 +74,7 @@ protected boolean isFinished() { } /** - * Called when the command ended peacefully. This is where you may want to - * wrap up loose ends, like shutting off a motor that was being used in the - * command. + * Log when this command ends */ @Override protected void end() { @@ -110,19 +83,7 @@ protected void end() { } /** - * Called when the command ends because somebody called - * {@link Command#cancel() cancel()} or another command shared the same - * requirements as this one, and booted it out. - *

- *

- * This is where you may want to wrap up loose ends, like shutting off a motor - * that was being used in the command. - *

- *

- *

- * Generally, it is useful to simply call the {@link Command#end() end()} - * method within this method - *

+ * Log when this command is interrupted. */ @Override protected void interrupted() { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java index eccb8ec8..5614dfa0 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java @@ -21,6 +21,9 @@ public NavXRelativeTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, d super(map, setpoint, drive, timeout); } + /** + * Set up the start time and setpoint. + */ @Override protected void initialize() { //Setup start time @@ -32,7 +35,9 @@ protected void initialize() { this.getPIDController().enable(); } - + /** + * Log when the command ends. + */ @Override protected void end() { System.out.println("NavXRelativeTurnToAngle end."); @@ -40,6 +45,9 @@ protected void end() { this.getPIDController().disable(); } + /** + * Log when the command is interrupted. + */ @Override protected void interrupted() { System.out.println("NavXRelativeTurnToAngle interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java index 33200342..da2c034d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java @@ -57,6 +57,10 @@ public static double clipTo180(double theta) { return (theta + 180) % 360 - 180; } + /** + * Give output to the motors based on the output of the PID loop + * @param output The output of the angle PID loop + */ @Override protected void usePIDOutput(double output) { //Logging @@ -80,6 +84,9 @@ else if (output < 0 && output > -minimumOutput) drive.setDefaultThrottle(output, -output); //spin to the right angle } + /** + * Set up the start time and setpoint. + */ @Override protected void initialize() { //Set up start time @@ -89,26 +96,38 @@ protected void initialize() { this.getPIDController().enable(); } + /** + * Log data to a file and SmartDashboard. + */ @Override protected void execute() { - //Just logging, nothing actually gets done. drive.logData(); SmartDashboard.putBoolean("onTarget", this.getPIDController().onTarget()); SmartDashboard.putNumber("Avg Navx Error", this.getPIDController().getAvgError()); } + /** + * Exit when the robot reaches the setpoint or enough time has passed. + * @return True if timeout seconds have passed or the robot is on target, false otherwise. + */ @Override protected boolean isFinished() { //The NavX onTarget() is crap and sometimes never terminates because of floating point errors, so we have a timeout return this.getPIDController().onTarget() || System.currentTimeMillis() - startTime > timeout; } + /** + * Log when the command ends. + */ @Override protected void end() { System.out.println("NavXTurnToAngle end."); this.getPIDController().disable(); } + /** + * Log when the command is interrupted. + */ @Override protected void interrupted() { System.out.println("NavXTurnToAngle interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java index 03eb5851..98153b96 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java @@ -36,12 +36,17 @@ public OpArcadeDrive(TalonClusterDrive drive, ArcadeOI oi) { requires(subsystem); } + /** + * Stop the drive for safety reasons. + */ @Override protected void initialize() { - //Start stationary. ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } + /** + * Give output to the motors based on the stick inputs. + */ @Override protected void execute() { //Calculate the right and left outputs from the fwd and rot inputs. @@ -53,21 +58,22 @@ protected void execute() { ((TalonClusterDrive) subsystem).logData(); } + /** + * Run constantly because this is a default drive + * @return false + */ @Override protected boolean isFinished() { - //Don't exit because this is a default command. return false; } - @Override - protected void end() { - //Doesn't end, default command. - } - + /** + * Log and brake when interrupted. + */ @Override protected void interrupted() { System.out.println("OpTankDrive Interrupted! Stopping the robot."); - //Break for safety! + //Brake for safety! ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java index 70229796..7f7e1900 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java @@ -37,12 +37,17 @@ public OpTankDrive(TalonClusterDrive drive, TankOI oi) { System.out.println("Drive Robot bueno"); } + /** + * Stop the drive for safety reasons. + */ @Override protected void initialize() { - //Start stationary. ((TalonClusterDrive) subsystem).setDefaultThrottle(0.0, 0.0); } + /** + * Give output to the motors based on the stick inputs. + */ @Override protected void execute() { //Get the throttle from the OI @@ -56,17 +61,18 @@ protected void execute() { ((TalonClusterDrive) subsystem).logData(); } + /** + * Run constantly because this is a default drive + * @return false + */ @Override protected boolean isFinished() { - //Doesn't end because this is a default command return false; } - @Override - protected void end() { - //Doesn't end because this is a default command - } - + /** + * Log and brake when interrupted. + */ @Override protected void interrupted() { System.out.println("OpTankDrive Interrupted! Stopping the robot."); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java index b3eac595..51ef9a09 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java @@ -31,30 +31,43 @@ public OverrideAutoShift(TalonClusterDrive drive, boolean override, boolean swit this.switchToLowGear = switchToLowGear; } + /** + * Log on initialization + */ @Override protected void initialize() { System.out.println("OverrideAutoShift init"); } + /** + * Override autoshifting. + */ @Override protected void execute() { //Set whether or not we're overriding ((TalonClusterDrive) subsystem).overrideAutoShift = override; - //Switch gears - ((TalonClusterDrive) subsystem).setLowGear(switchToLowGear); } + /** + * Finsh instantly because this is just a state-change command. + * @return true + */ @Override protected boolean isFinished() { - //Runs instantaneously return true; } + /** + * Log when this command ends. + */ @Override protected void end() { System.out.println("OverrideAutoShift end"); } + /** + * Log when interrupted + */ @Override protected void interrupted() { System.out.println("OverrideAutoShift Interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDBackAndForth.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDBackAndForth.java index a7b37850..e69b3bcd 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDBackAndForth.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDBackAndForth.java @@ -6,7 +6,7 @@ import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; /** - * Created by BlairRobot on 2017-01-13. + * Drive back and forth to tune PID */ public class PIDBackAndForth extends ReferencingCommandGroup { /** @@ -33,6 +33,7 @@ public PIDBackAndForth(MappedSubsystem mappedSubsystem) { addSequential(new DriveAtSpeed(driveSubsystem, 0), time); } */ + //TODO make this actually drive back and forth addSequential(new DriveAtSpeed(driveSubsystem, 1, 1), time); addSequential(new DriveAtSpeed(driveSubsystem, 0, 1), 100); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java index 24effcec..d3a94c14 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java @@ -9,30 +9,50 @@ */ public class SwitchToHighGear extends ReferencingCommand { + /** + * Default constructor + * @param subsystem The subsystem to execute this command on + */ public SwitchToHighGear(MappedSubsystem subsystem) { super(subsystem); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("SwitchToHighGear init."); } + /** + * Switch to high gear + */ @Override protected void execute() { ((TalonClusterDrive) subsystem).setLowGear(false); } + /** + * Exit immediately because this is a state-change command + * @return true + */ @Override protected boolean isFinished() { return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("SwitchToHighGear end."); } + /** + * Log when this command is interrupted. + */ @Override protected void interrupted() { System.out.println("SwitchToHighGear Interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java index 6c9680d1..c7bbd87c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java @@ -8,30 +8,51 @@ * A wrapper command that switches to low gear. */ public class SwitchToLowGear extends ReferencingCommand { + + /** + * Default constructor + * @param subsystem The subsystem to execute this command on + */ public SwitchToLowGear(MappedSubsystem subsystem) { super(subsystem); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("SwitchToLowGear init."); } + /** + * Switch to low gear + */ @Override protected void execute() { ((TalonClusterDrive) subsystem).setLowGear(true); } + /** + * Exit immediately because this is a state-change command + * @return true + */ @Override protected boolean isFinished() { return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("SwitchToLowGear end."); } + /** + * Log when this command is interrupted. + */ @Override protected void interrupted() { System.out.println("SwitchToLowGear Interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java index 02bf00fe..be338a6e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java @@ -6,34 +6,54 @@ /** * Toggle whether or not to use the NavX to drive straight. */ +//TODO Make this take a NavxSubsystem instead. public class ToggleOverrideNavX extends ReferencingCommand { + /** + * Default constructor. + * @param drive The drive subsystem this command controls + */ public ToggleOverrideNavX(TalonClusterDrive drive) { super(drive); requires(subsystem); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("OverrideNavX init"); } + /** + * Toggle whether or not we're overriding the NavX + */ @Override protected void execute() { - //Toggle whether or not we're overriding the NavX ((TalonClusterDrive) subsystem).overrideNavX = !((TalonClusterDrive) subsystem).overrideNavX; } + /** + * Exit immediately because this is a state-change command + * @return true + */ @Override protected boolean isFinished() { return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("OverrideNavX end"); } + /** + * Log when this command is interrupted. + */ @Override protected void interrupted() { System.out.println("OverrideNavX Interrupted!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java index 9a4d19c7..edf712e3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/ClimberSubsystem.java @@ -17,6 +17,10 @@ public class ClimberSubsystem extends MechanismSubsystem { */ private double max_current; + /** + * Construct a ClimberSubsystem + * @param map the config map + */ public ClimberSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.climber.ClimberMap.Climber map) { super(map.getMechanism()); //Instantiate things @@ -25,6 +29,12 @@ public ClimberSubsystem(maps.org.usfirst.frc.team449.robot.mechanism.climber.Cli this.max_current = map.getMaxCurrent(); } + /** + * Initialize the default command for a subsystem By default subsystems have + * no default command, but if they do, the default command is set with this + * method. It is called on all Subsystems by CommandBase in the users program + * after all the Subsystems are created. + */ @Override protected void initDefaultCommand() { //Do nothing! diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java index 9fed0f72..11e3a20e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java @@ -14,6 +14,10 @@ public class CurrentClimb extends ReferencingCommand { */ private ClimberSubsystem climber; + /** + * Default constructor + * @param climber The climber subsystem for this command to control + */ public CurrentClimb(ClimberSubsystem climber) { super(climber); requires(climber); @@ -21,24 +25,37 @@ public CurrentClimb(ClimberSubsystem climber) { System.out.println("CurrentClimb constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("CurrentClimb init"); } + /** + * Climb at full speed and log the current + */ @Override protected void execute() { //Climb as fast as we can climber.setPercentVbus(1); + //Log current to SmartDashboard SmartDashboard.putNumber("Current", climber.canTalonSRX.canTalon.getOutputCurrent()); } + /** + * Stop when the current limit is exceeded. + * @return true when the current limit is exceed, false otherwise. + */ @Override protected boolean isFinished() { - //Stop when the current limit is exceeded. return climber.reachedTop(); } + /** + * Stop the motor and log that the command has ended. + */ @Override protected void end() { //Stop the motor when we reach the top. @@ -46,6 +63,9 @@ protected void end() { System.out.println("CurrentClimb end"); } + /** + * Stop the motor and log that the command has been interrupted. + */ @Override protected void interrupted() { //Stop climbing if we're for some reason interrupted. diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java index 31ffd137..3ccc67f9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java @@ -11,8 +11,12 @@ public class ManualClimb extends ReferencingCommand { /** * The climber this is controlling */ - ClimberSubsystem climber; + private ClimberSubsystem climber; + /** + * Default constructor + * @param climber The climber subsystem for this command to control + */ public ManualClimb(ClimberSubsystem climber) { super(climber); requires(climber); @@ -20,35 +24,51 @@ public ManualClimb(ClimberSubsystem climber) { System.out.println("CurrentClimb constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("CurrentClimb init"); } + /** + * Climb at full speed. + */ @Override protected void execute() { //Climb as fast as we can climber.setPercentVbus(1); } + /** + * Does not stop, another command like {@link StopClimbing} needs to be run to stop it. + * @return false + */ @Override protected boolean isFinished() { //DOES NOT STOP; you need another command like StopClimbing to interrupt it. return false; } + /** + * Stop the motor and log that the command has ended. + */ @Override protected void end() { //Stop climbing for safety climber.setPercentVbus(0); - System.out.println("CurrentClimb end"); + System.out.println("ManualClimb end"); } + /** + * Stop the motor and log that the command has been interrupted. + */ @Override protected void interrupted() { //Stop climbing for safety climber.setPercentVbus(0); - System.out.println("CurrentClimb interrupted, stopping climb."); + System.out.println("ManualClimb interrupted, stopping climb."); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java index d2a23ca1..8babc22d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java @@ -11,8 +11,12 @@ public class StopClimbing extends ReferencingCommand { /** * The climber this is controlling */ - ClimberSubsystem climber; + private ClimberSubsystem climber; + /** + * Default constructor + * @param climber The climber subsystem for this command to control + */ public StopClimbing(ClimberSubsystem climber) { super(climber); requires(climber); @@ -20,33 +24,49 @@ public StopClimbing(ClimberSubsystem climber) { System.out.println("CurrentClimb constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("CurrentClimb init"); } + /** + * Stop the climb motor. + */ @Override protected void execute() { - //Stop climbing climber.setPercentVbus(0); } + /** + * Finishes instantaneously because it's just a state-change command. + * @return true + */ @Override protected boolean isFinished() { - //Finishes instantaneously return true; } + /** + * Stop the motor and log that the command has ended. + */ @Override protected void end() { + //Stop climbing for safety climber.setPercentVbus(0); - System.out.println("CurrentClimb end"); + System.out.println("StopClimbing end"); } + /** + * Stop the motor and log that the command has been interrupted. + */ @Override protected void interrupted() { + //Stop climbing for safety climber.setPercentVbus(0); - System.out.println("CurrentClimb interrupted, stopping climb."); + System.out.println("StopClimbing interrupted, stopping climb."); } } diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java index 1c0aa5ad..3517a742 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/FeederSubsystem.java @@ -24,6 +24,10 @@ public class FeederSubsystem extends MechanismSubsystem { */ public boolean running; + /** + * Construct a FeederSubsystem + * @param map The config map + */ public FeederSubsystem(FeederMap.Feeder map) { super(map.getMechanism()); speed = map.getSpeed(); @@ -53,6 +57,12 @@ public void stopVictor() { running = false; } + /** + * Initialize the default command for a subsystem By default subsystems have + * no default command, but if they do, the default command is set with this + * method. It is called on all Subsystems by CommandBase in the users program + * after all the Subsystems are created. + */ @Override protected void initDefaultCommand() { //Do nothing! Inheritance is dumb sometimes. diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java index 8a1ed6f1..b999834e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java @@ -13,6 +13,10 @@ public class RunFeeder extends ReferencingCommand { */ private FeederSubsystem feeder; + /** + * Default constructor. + * @param feeder The feeder subsystem this controls. + */ public RunFeeder(FeederSubsystem feeder) { super(feeder); requires(feeder); @@ -20,27 +24,42 @@ public RunFeeder(FeederSubsystem feeder) { System.out.println("RunFeeder constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("RunFeeder init"); } + /** + * Run the motor + */ @Override protected void execute() { feeder.runVictor(); } + /** + * Runs instantaneously + * @return true + */ @Override protected boolean isFinished() { - //Runs instantaneously return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("RunFeeder end"); } + /** + * Stop the motor and log when this command is interrupted. + */ @Override protected void interrupted() { feeder.stopVictor(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java index 5eeed32f..eb534ec9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java @@ -13,6 +13,10 @@ public class StopFeeder extends ReferencingCommand { */ private FeederSubsystem feeder; + /** + * Default constructor. + * @param feeder The feeder subsystem this controls. + */ public StopFeeder(FeederSubsystem feeder) { super(feeder); requires(feeder); @@ -20,27 +24,42 @@ public StopFeeder(FeederSubsystem feeder) { System.out.println("StopFeeder constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("StopFeeder init"); } + /** + * Stop the motor + */ @Override protected void execute() { feeder.stopVictor(); } + /** + * Runs instantaneously + * @return true + */ @Override protected boolean isFinished() { - //Runs instantaneously return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("StopFeeder end"); } + /** + * Stop the motor and log when this command is interrupted. + */ @Override protected void interrupted() { feeder.stopVictor(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java index f374612d..84e4c557 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java @@ -13,6 +13,10 @@ public class ToggleFeeder extends ReferencingCommand { */ private FeederSubsystem feeder; + /** + * Default constructor. + * @param feeder The feeder subsystem this controls. + */ public ToggleFeeder(FeederSubsystem feeder) { super(feeder); requires(feeder); @@ -20,11 +24,17 @@ public ToggleFeeder(FeederSubsystem feeder) { System.out.println("ToggleFeeder constructed"); } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("ToggleFeeder init"); } + /** + * Toggle whether or not the motor is running. + */ @Override protected void execute() { if (feeder.running) { @@ -34,17 +44,26 @@ protected void execute() { } } + /** + * Runs instantaneously + * @return true + */ @Override protected boolean isFinished() { - //Runs instantaneously return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("ToggleFeeder end"); } + /** + * Stop the motor and log when this command is interrupted. + */ @Override protected void interrupted() { feeder.stopVictor(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java index 1680b7ca..8a778eca 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/Intake2017.java @@ -25,7 +25,7 @@ public class Intake2017 extends MappedSubsystem { */ public boolean isIntaking; - // TODO make an enum + //TODO make an enum /** * Whether intake is currently up */ @@ -85,7 +85,7 @@ public void setIntaking(boolean isIntaking) { } /** - * Initialize the default command for a subsystem By default subsystems have + * Initialize the default command for a subsystem. By default subsystems have * no default command, but if they do, the default command is set with this * method. It is called on all Subsystems by CommandBase in the users program * after all the Subsystems are created. diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java index 7aff4dd9..c911c7ef 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java @@ -13,18 +13,29 @@ public class StaticInDynamicIn extends ReferencingCommand { */ private Intake2017 intake; + /** + * Default constructor. + * @param intake The intake subsystem this controls. + */ public StaticInDynamicIn(Intake2017 intake) { super(intake); this.intake = intake; } + /** + * Set the fixed and actuated motors to go in. + */ @Override - protected void initialize() { + protected void execute() { //TODO Stop hardcoding these intake.setFixedVictor(-0.7); intake.setActuatedVictor(1); } + /** + * Runs instantaneously. + * @return true + */ @Override protected boolean isFinished() { return true; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java index f821ae98..e4de1a6e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java @@ -13,18 +13,29 @@ public class StaticInDynamicStop extends ReferencingCommand { */ private Intake2017 intake; + /** + * Default constructor. + * @param intake The intake subsystem this controls. + */ public StaticInDynamicStop(Intake2017 intake) { super(intake); this.intake = intake; } + /** + * Set the fixed motor to go in slowly and the actuated motor to stop. + */ @Override - protected void initialize() { + protected void execute() { //TODO Stop hardcoding these intake.setFixedVictor(-0.3); intake.setActuatedVictor(0); } + /** + * Runs instantaneously. + * @return true + */ @Override protected boolean isFinished() { return true; diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java index d78ef384..b03157a3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java @@ -13,17 +13,28 @@ public class StaticStopDynamicStop extends ReferencingCommand { */ private Intake2017 intake; + /** + * Default constructor. + * @param intake The intake subsystem this controls. + */ public StaticStopDynamicStop(Intake2017 intake) { super(intake); this.intake = intake; } + /** + * Set the fixed and actuated motors to stop. + */ @Override - protected void initialize() { + protected void execute() { intake.setActuatedVictor(0); intake.setFixedVictor(0); } + /** + * Runs instantaneously. + * @return true + */ @Override protected boolean isFinished() { return true; diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index 86652998..d97fc4c0 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -17,18 +17,30 @@ */ public class CameraSubsystem extends MappedSubsystem { - //Video server to view on SmartDashboard + /** + * Video server to view on SmartDashboard + */ public MjpegServer server; - //List of cameras used on robot + /** + * List of cameras used on robot + */ public List cameras; - //Total number of cameras + /** + * Total number of cameras + */ public int camNum; - //Instantiates a new CameraSubsystem with the map - public static CameraMap.Camera map; + /** + * Instantiates a new CameraSubsystem with the map + */ + public CameraMap.Camera map; + /** + * Construct a CameraSubsystem + * @param map The config map + */ public CameraSubsystem(CameraMap.Camera map) { super(map); this.map = map; @@ -61,7 +73,12 @@ public CameraSubsystem(CameraMap.Camera map) { System.out.println("CameraSubsystem construct end"); } - + /** + * Initialize the default command for a subsystem. By default subsystems have + * no default command, but if they do, the default command is set with this + * method. It is called on all Subsystems by CommandBase in the users program + * after all the Subsystems are created. + */ @Override protected void initDefaultCommand() { //Do nothing! diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index bd16bf08..16c43780 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -8,22 +8,34 @@ */ public class ChangeCam extends ReferencingCommand { - //Initializes CameraSubsystem + /** + * The cameraSubsystem this command controls + */ private CameraSubsystem cameraSubsystem; - //Default constructor + //TODO get rid of timeout. + /** + * Default constructor. + * @param cameraSubsystem The cameraSubsystem this command controls. + * @param timeout The timeout for this command (does nothing) + */ public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { super(cameraSubsystem, timeout); requires(cameraSubsystem); this.cameraSubsystem = cameraSubsystem; } + /** + * Log when this command is initialized + */ @Override protected void initialize() { System.out.println("ChangeCam init"); - //Does nothing - Logging to console } + /** + * Switch the MjpegServer to use the next camera in the list + */ @Override protected void execute() { //Logging to console @@ -43,17 +55,26 @@ protected void execute() { System.out.println("ChangeCam exec end"); } + /** + * Finishes instantaneously. + * @return true + */ @Override protected boolean isFinished() { - //Finishes instantaneously. return true; } + /** + * Log when this command ends + */ @Override protected void end() { System.out.println("ChangeCam end"); } + /** + * Log when this command is interrupted. + */ @Override protected void interrupted() { System.out.println("ChangeCam interrupted!"); From cbaaa3226e3230e79848a60f612d95c8f3b6342f Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 14:18:23 -0500 Subject: [PATCH 38/66] Fix balbasaur map. --- src/main/resources/balbasaur_map.cfg | 35 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index de1dfc10..d2dab7ab 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -1,22 +1,23 @@ -tank_oi { - left_stick: 1 - right_stick: 2 -} arcade_oi { - gamepad: 5 + gamepad: 1 gamepad_left_axis: 0 gamepad_right_axis: 3 - turnaround_button: 8 - turn_to_0_button: 3 - turn_to_30_button: 6 - turn_to_180_button: 7 - turn_to_330_button: 4 + deadband: 0.05 - dpad_shift: 0.15 - override_navX: 10 - invert_fwd: false - invert_rot: false - invert_dpad: false + dpad_shift: 0.1 + + invert_fwd: true + invert_rot: true + invert_dpad: true + + override_navX { + joystick_index: 1 + button_index: 12 + } + switch_camera { + joystick_index: 1 + button_index: 2 + } } drive { drive {} @@ -62,7 +63,7 @@ drive { feedback_device: QuadEncoder reverse_sensor: false reverse_output: false - is_inverted: false + is_inverted: true nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 @@ -89,7 +90,7 @@ drive { feedback_device: QuadEncoder reverse_sensor: false reverse_output: false - is_inverted: true + is_inverted: false nominal_out_voltage: 0.0 peak_out_voltage: 12.0 profile: 0 From e587f5e7e65484b1e0ed5eb465f7f985bd4619db Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 14:32:42 -0500 Subject: [PATCH 39/66] Rename the RotPerSecCANTalonSRX proto. --- .../java/org/usfirst/frc/team449/robot/Robot.java | 4 ++-- .../robot/components/RotPerSecCANTalonSRX.java | 7 +++---- .../robot/drive/talonCluster/TalonClusterDrive.java | 6 +++--- ...sCANTalonSRX.proto => RotPerSecCANTalonSRX.proto} | 4 ++-- .../team449/robot/drive/meccanum/MeccanumDrive.proto | 10 +++++----- .../robot/drive/talonCluster/TalonClusterDrive.proto | 10 +++++----- .../team449/robot/mechanism/climber/Climber.proto | 4 ++-- .../DoubleFlywheelShooter.proto | 12 ------------ .../SingleFlywheelShooter.proto | 4 ++-- 9 files changed, 24 insertions(+), 37 deletions(-) rename src/main/proto/org/usfirst/frc/team449/robot/components/{UnitlessCANTalonSRX.proto => RotPerSecCANTalonSRX.proto} (93%) delete mode 100644 src/main/proto/org/usfirst/frc/team449/robot/mechanism/doubleflywheelshooter/DoubleFlywheelShooter.proto diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index dbfbbd85..69614859 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -75,8 +75,8 @@ public void robotInit() { try { //Try to construct map from the cfg file - //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", - cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", + cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", + //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", Robot2017Map.Robot2017.newBuilder()); } catch (IOException e) { //This is either the map file not being in the file system OR it being improperly formatted. diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java index fa614811..717d0f27 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.java @@ -1,7 +1,7 @@ package org.usfirst.frc.team449.robot.components; import com.ctre.CANTalon; -import maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap; +import maps.org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRXMap; /** * Component wrapper on CTRE CAN Talon SRX {@link CANTalon}, with unit conversions to/from RPS built in. Every @@ -32,15 +32,14 @@ public class RotPerSecCANTalonSRX extends Component { /** * The map used to construct this object. */ - private UnitlessCANTalonSRXMap.UnitlessCANTalonSRX map; + private RotPerSecCANTalonSRXMap.RotPerSecCANTalonSRX map; /** * Construct the CANTalonSRX from its map object * * @param map CANTalonSRX map object */ - public RotPerSecCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap - .UnitlessCANTalonSRX map) { + public RotPerSecCANTalonSRX(RotPerSecCANTalonSRXMap.RotPerSecCANTalonSRX map) { // Configure stuff this.map = map; canTalon = new CANTalon(map.getPort()); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 5700bfcb..defe6981 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -5,8 +5,8 @@ import edu.wpi.first.wpilibj.DoubleSolenoid; import edu.wpi.first.wpilibj.SPI; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import maps.org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRXMap; import maps.org.usfirst.frc.team449.robot.components.ToleranceBufferAnglePIDMap; -import maps.org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRXMap; import org.usfirst.frc.team449.robot.components.NavxSubsystem; import org.usfirst.frc.team449.robot.components.RotPerSecCANTalonSRX; import org.usfirst.frc.team449.robot.drive.DriveSubsystem; @@ -224,12 +224,12 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T leftMaster = new RotPerSecCANTalonSRX(map.getLeftMaster()); // Initialize slave talons. - for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getRightSlaveList()) { + for (RotPerSecCANTalonSRXMap.RotPerSecCANTalonSRX talon : map.getRightSlaveList()) { RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); talonObject.canTalon.set(map.getRightMaster().getPort()); } - for (UnitlessCANTalonSRXMap.UnitlessCANTalonSRX talon : map.getLeftSlaveList()) { + for (RotPerSecCANTalonSRXMap.RotPerSecCANTalonSRX talon : map.getLeftSlaveList()) { RotPerSecCANTalonSRX talonObject = new RotPerSecCANTalonSRX(talon); talonObject.canTalon.changeControlMode(CANTalon.TalonControlMode.Follower); talonObject.canTalon.set(map.getLeftMaster().getPort()); diff --git a/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto b/src/main/proto/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto similarity index 93% rename from src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto rename to src/main/proto/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto index cd68f8e8..0849720a 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto @@ -1,9 +1,9 @@ syntax = "proto2"; option java_package = "maps.org.usfirst.frc.team449.robot.components"; -option java_outer_classname = "UnitlessCANTalonSRXMap"; +option java_outer_classname = "RotPerSecCANTalonSRXMap"; -message UnitlessCANTalonSRX { +message RotPerSecCANTalonSRX { required int32 port = 1; // Feedback Device represents CTRE's {@link CANTalon.FeedbackDevice} diff --git a/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto b/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto index 71260af9..cadb44e7 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/drive/meccanum/MeccanumDrive.proto @@ -1,6 +1,6 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/drive/Drive.proto"; -import "org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto"; +import "org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto"; import "org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.drive.meccanum"; @@ -10,8 +10,8 @@ message MeccanumDrive { required Drive drive = 1; required ToleranceBufferAnglePID turn_PID = 6; required ToleranceBufferAnglePID straight_PID = 7; - required UnitlessCANTalonSRX front_left = 2; - required UnitlessCANTalonSRX front_right = 3; - required UnitlessCANTalonSRX back_left = 4; - required UnitlessCANTalonSRX back_right = 5; + required RotPerSecCANTalonSRX front_left = 2; + required RotPerSecCANTalonSRX front_right = 3; + required RotPerSecCANTalonSRX back_left = 4; + required RotPerSecCANTalonSRX back_right = 5; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto index 7d47878c..39f740f6 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.proto @@ -1,6 +1,6 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/drive/Drive.proto"; -import "org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto"; +import "org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto"; import "org/usfirst/frc/team449/robot/components/ToleranceBufferAnglePID.proto"; import "org/usfirst/frc/team449/robot/components/DoubleSolenoid.proto"; @@ -13,10 +13,10 @@ message TalonClusterDrive { required ToleranceBufferAnglePID straight_PID = 7; optional DoubleSolenoid shifter = 8; optional int32 module_number = 9; - required UnitlessCANTalonSRX right_master = 2; - repeated UnitlessCANTalonSRX right_slave = 3; - required UnitlessCANTalonSRX left_master = 4; - repeated UnitlessCANTalonSRX left_slave = 5; + required RotPerSecCANTalonSRX right_master = 2; + repeated RotPerSecCANTalonSRX right_slave = 3; + required RotPerSecCANTalonSRX left_master = 4; + repeated RotPerSecCANTalonSRX left_slave = 5; optional double wheel_diameter = 10; optional double upshift = 11; optional double downshift = 12; diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/climber/Climber.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/climber/Climber.proto index ee250ab3..e0428fc1 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/climber/Climber.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/climber/Climber.proto @@ -1,12 +1,12 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/mechanism/Mechanism.proto"; -import "org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto"; +import "org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.mechanism.climber"; option java_outer_classname = "ClimberMap"; message Climber { required Mechanism mechanism = 1; - required UnitlessCANTalonSRX winch = 2; + required RotPerSecCANTalonSRX winch = 2; required double max_current = 3; } \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/doubleflywheelshooter/DoubleFlywheelShooter.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/doubleflywheelshooter/DoubleFlywheelShooter.proto deleted file mode 100644 index a354167d..00000000 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/doubleflywheelshooter/DoubleFlywheelShooter.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto2"; -import "org/usfirst/frc/team449/robot/mechanism/Mechanism.proto"; -import "org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto"; - -option java_package = "maps.org.usfirst.frc.team449.robot.mechanism.doubleflywheelshooter"; -option java_outer_classname = "DoubleFlywheelShooterMap"; - -message DoubleFlywheelShooter { - required Mechanism mechanism = 1; - required UnitlessCANTalonSRX left_talon = 2; - required UnitlessCANTalonSRX right_talon = 3; -} \ No newline at end of file diff --git a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto index d3d19bde..c61baeb3 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/SingleFlywheelShooter.proto @@ -1,12 +1,12 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/mechanism/Mechanism.proto"; -import "org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.proto"; +import "org/usfirst/frc/team449/robot/components/RotPerSecCANTalonSRX.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter"; option java_outer_classname = "SingleFlywheelShooterMap"; message SingleFlywheelShooter { required Mechanism mechanism = 1; - required UnitlessCANTalonSRX talon = 2; + required RotPerSecCANTalonSRX talon = 2; optional double throttle = 3; } \ No newline at end of file From 23b2b714af0f87acb6af7eb5bf6a7fe1b1761ac8 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 14:43:18 -0500 Subject: [PATCH 40/66] Refer to subsystesm as "The subsystem to execute the command on" --- .../usfirst/frc/team449/robot/components/PIDAngleCommand.java | 2 +- .../robot/drive/talonCluster/commands/DefaultArcadeDrive.java | 2 +- .../robot/drive/talonCluster/commands/DriveAtSpeed.java | 2 +- .../robot/drive/talonCluster/commands/NavXRelativeTTA.java | 2 +- .../robot/drive/talonCluster/commands/NavXTurnToAngle.java | 4 ++-- .../robot/drive/talonCluster/commands/OpArcadeDrive.java | 2 +- .../robot/drive/talonCluster/commands/OpTankDrive.java | 2 +- .../robot/drive/talonCluster/commands/OverrideAutoShift.java | 2 +- .../team449/robot/drive/talonCluster/commands/PIDTest.java | 2 +- .../robot/drive/talonCluster/commands/ToggleOverrideNavX.java | 2 +- .../robot/mechanism/climber/commands/CurrentClimb.java | 4 ++-- .../team449/robot/mechanism/climber/commands/ManualClimb.java | 4 ++-- .../robot/mechanism/climber/commands/StopClimbing.java | 4 ++-- .../team449/robot/mechanism/feeder/commands/RunFeeder.java | 4 ++-- .../team449/robot/mechanism/feeder/commands/StopFeeder.java | 4 ++-- .../team449/robot/mechanism/feeder/commands/ToggleFeeder.java | 4 ++-- .../intake/Intake2017/commands/spin/StaticInDynamicIn.java | 2 +- .../intake/Intake2017/commands/spin/StaticInDynamicStop.java | 2 +- .../Intake2017/commands/spin/StaticStopDynamicStop.java | 2 +- .../org/usfirst/frc/team449/robot/vision/CameraSubsystem.java | 3 --- .../usfirst/frc/team449/robot/vision/commands/ChangeCam.java | 4 ++-- 21 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java index f6b9d5dd..d7f19b10 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java @@ -19,7 +19,7 @@ public abstract class PIDAngleCommand extends PIDCommand { protected boolean minimumOutputEnabled; /** - * The subsystem this command controls. + * The subsystem to execute the command on. */ protected NavxSubsystem subsystem; diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index 7b152bda..23c00579 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -47,7 +47,7 @@ public class DefaultArcadeDrive extends PIDAngleCommand { /** * Default constructor * @param map The angle PID map containing PID and other tuning constants. - * @param drive The drive this controls. + * @param drive The drive to execute the command on. * @param oi The OI controlling the robot. */ public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java index 8a09b867..c753de13 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java @@ -25,7 +25,7 @@ public class DriveAtSpeed extends ReferencingCommand { /** * Default constructor - * @param drive The drive we're controlling + * @param drive The drive to execute the command on * @param speed How fast to go, in RPS * @param seconds How long to drive for. */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java index 5614dfa0..1404d939 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java @@ -13,7 +13,7 @@ public class NavXRelativeTTA extends NavXTurnToAngle { * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. * @param setpoint The setpoint, in degrees from 180 to -180. - * @param drive The drive subsystem whose motors this is controlling. + * @param drive The drive subsystem to execute the command on. * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ public NavXRelativeTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java index da2c034d..8f7932b7 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java @@ -11,7 +11,7 @@ public class NavXTurnToAngle extends PIDAngleCommand { /** - * The drive subsystem this controls and gets the gyro reading from. + * The drive subsystem to execute the command on and to get the gyro reading from. */ protected TalonClusterDrive drive; @@ -35,7 +35,7 @@ public class NavXTurnToAngle extends PIDAngleCommand { * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. * @param setpoint The setpoint, in degrees from 180 to -180. - * @param drive The drive subsystem whose motors this is controlling. + * @param drive The drive subsystem to execute the command on. * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ public NavXTurnToAngle(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java index 98153b96..c88aa7fb 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java @@ -26,7 +26,7 @@ public class OpArcadeDrive extends ReferencingCommand { /** * Default constructor - * @param drive The drive this command controls + * @param drive The drive to execute the command on * @param oi The OI that gives the input to this command. */ public OpArcadeDrive(TalonClusterDrive drive, ArcadeOI oi) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java index 7f7e1900..7740ef75 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java @@ -26,7 +26,7 @@ public class OpTankDrive extends ReferencingCommand { /** * Default constructor. - * @param drive The drive this command controls. + * @param drive The drive to execute the command on. * @param oi The OI this command gets input from. */ public OpTankDrive(TalonClusterDrive drive, TankOI oi) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java index 51ef9a09..01441fb7 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java @@ -20,7 +20,7 @@ public class OverrideAutoShift extends ReferencingCommand { /** * Default constructor - * @param drive The drive subsystem this controls. + * @param drive The drive subsystem to execute the command on. * @param override Whether or not to override autoshifting. * @param switchToLowGear Whether to switch to low gear. If false, switch to high gear. */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index cfed6435..267d1120 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -12,7 +12,7 @@ public class PIDTest extends ReferencingCommandGroup { /** * Default constructor - * @param mappedSubsystem the TalonClusterDrive to control + * @param mappedSubsystem the TalonClusterDrive to execute the command on */ public PIDTest(MappedSubsystem mappedSubsystem) { super(mappedSubsystem); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java index be338a6e..6dfe6d45 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java @@ -11,7 +11,7 @@ public class ToggleOverrideNavX extends ReferencingCommand { /** * Default constructor. - * @param drive The drive subsystem this command controls + * @param drive The drive subsystem to execute the command on */ public ToggleOverrideNavX(TalonClusterDrive drive) { super(drive); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java index 11e3a20e..bbe02c49 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java @@ -10,13 +10,13 @@ public class CurrentClimb extends ReferencingCommand { /** - * The climber this is controlling + * The climber to execute the command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem for this command to control + * @param climber The climber subsystem to execute the command on */ public CurrentClimb(ClimberSubsystem climber) { super(climber); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java index 3ccc67f9..ed5cdaaf 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java @@ -9,13 +9,13 @@ public class ManualClimb extends ReferencingCommand { /** - * The climber this is controlling + * The climber to execute the command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem for this command to control + * @param climber The climber subsystem to execute the command on */ public ManualClimb(ClimberSubsystem climber) { super(climber); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java index 8babc22d..08b131e2 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java @@ -9,13 +9,13 @@ public class StopClimbing extends ReferencingCommand { /** - * The climber this is controlling + * The climber to execute the command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem for this command to control + * @param climber The climber subsystem to execute the command on */ public StopClimbing(ClimberSubsystem climber) { super(climber); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java index b999834e..7144db0e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java @@ -9,13 +9,13 @@ public class RunFeeder extends ReferencingCommand { /** - * The feeder subsystem this controls. + * The feeder subsystem to execute the command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem this controls. + * @param feeder The feeder subsystem to execute the command on. */ public RunFeeder(FeederSubsystem feeder) { super(feeder); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java index eb534ec9..13ef56c3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java @@ -9,13 +9,13 @@ public class StopFeeder extends ReferencingCommand { /** - * The feeder subsystem this controls. + * The feeder subsystem to execute the command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem this controls. + * @param feeder The feeder subsystem to execute the command on. */ public StopFeeder(FeederSubsystem feeder) { super(feeder); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java index 84e4c557..cdd8703a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java @@ -9,13 +9,13 @@ public class ToggleFeeder extends ReferencingCommand { /** - * The feeder subsystem this controls. + * The feeder subsystem to execute the command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem this controls. + * @param feeder The feeder subsystem to execute the command on. */ public ToggleFeeder(FeederSubsystem feeder) { super(feeder); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java index c911c7ef..70ca6ba3 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java @@ -15,7 +15,7 @@ public class StaticInDynamicIn extends ReferencingCommand { /** * Default constructor. - * @param intake The intake subsystem this controls. + * @param intake The intake subsystem to execute the command on. */ public StaticInDynamicIn(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java index e4de1a6e..553f99d9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java @@ -15,7 +15,7 @@ public class StaticInDynamicStop extends ReferencingCommand { /** * Default constructor. - * @param intake The intake subsystem this controls. + * @param intake The intake subsystem to execute the command on. */ public StaticInDynamicStop(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java index b03157a3..dbaf0074 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java @@ -15,7 +15,7 @@ public class StaticStopDynamicStop extends ReferencingCommand { /** * Default constructor. - * @param intake The intake subsystem this controls. + * @param intake The intake subsystem to execute the command on. */ public StaticStopDynamicStop(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java index d97fc4c0..04d92bbb 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/CameraSubsystem.java @@ -9,9 +9,6 @@ import java.util.ArrayList; import java.util.List; -//import edu.wpi.first.wpilibj.CameraServer; - - /** * Subsystem to initialize and push video to SmartDashboard */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 16c43780..5b8403de 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -9,14 +9,14 @@ public class ChangeCam extends ReferencingCommand { /** - * The cameraSubsystem this command controls + * The cameraSubsystem to execute the command on */ private CameraSubsystem cameraSubsystem; //TODO get rid of timeout. /** * Default constructor. - * @param cameraSubsystem The cameraSubsystem this command controls. + * @param cameraSubsystem The cameraSubsystem to execute the command on. * @param timeout The timeout for this command (does nothing) */ public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { From c18ee84a1a495189bd8f8848935a9270866e7158 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 4 Mar 2017 14:50:57 -0500 Subject: [PATCH 41/66] Make instant-exit command language consistent. --- .../frc/team449/robot/components/PIDAngleCommand.java | 2 +- .../drive/talonCluster/commands/DefaultArcadeDrive.java | 2 +- .../robot/drive/talonCluster/commands/DriveAtSpeed.java | 2 +- .../robot/drive/talonCluster/commands/ExecuteProfile.java | 2 +- .../robot/drive/talonCluster/commands/NavXRelativeTTA.java | 2 +- .../robot/drive/talonCluster/commands/NavXTurnToAngle.java | 4 ++-- .../robot/drive/talonCluster/commands/OpArcadeDrive.java | 2 +- .../robot/drive/talonCluster/commands/OpTankDrive.java | 2 +- .../drive/talonCluster/commands/OverrideAutoShift.java | 4 ++-- .../team449/robot/drive/talonCluster/commands/PIDTest.java | 2 +- .../drive/talonCluster/commands/SwitchToHighGear.java | 2 +- .../robot/drive/talonCluster/commands/SwitchToLowGear.java | 2 +- .../drive/talonCluster/commands/ToggleOverrideNavX.java | 4 ++-- .../robot/mechanism/climber/commands/CurrentClimb.java | 4 ++-- .../robot/mechanism/climber/commands/ManualClimb.java | 4 ++-- .../robot/mechanism/climber/commands/StopClimbing.java | 6 +++--- .../team449/robot/mechanism/feeder/commands/RunFeeder.java | 6 +++--- .../robot/mechanism/feeder/commands/StopFeeder.java | 6 +++--- .../robot/mechanism/feeder/commands/ToggleFeeder.java | 6 +++--- .../intake/Intake2017/commands/ToggleIntakeUpDown.java | 7 +++---- .../intake/Intake2017/commands/ToggleIntaking.java | 7 +++---- .../intake/Intake2017/commands/spin/StaticInDynamicIn.java | 4 ++-- .../Intake2017/commands/spin/StaticInDynamicStop.java | 4 ++-- .../Intake2017/commands/spin/StaticStopDynamicStop.java | 4 ++-- .../intake/Intake2017/commands/updown/IntakeDown.java | 7 +++---- .../intake/Intake2017/commands/updown/IntakeUp.java | 7 +++---- .../singleflywheelshooter/commands/AccelerateFlywheel.java | 7 +++---- .../singleflywheelshooter/commands/DecelerateFlywheel.java | 4 ++-- .../singleflywheelshooter/commands/ToggleShooter.java | 7 +++---- .../frc/team449/robot/vision/commands/ChangeCam.java | 6 +++--- 30 files changed, 61 insertions(+), 67 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java index d7f19b10..aa30846b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/PIDAngleCommand.java @@ -19,7 +19,7 @@ public abstract class PIDAngleCommand extends PIDCommand { protected boolean minimumOutputEnabled; /** - * The subsystem to execute the command on. + * The subsystem to execute this command on. */ protected NavxSubsystem subsystem; diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java index 23c00579..250fc21c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DefaultArcadeDrive.java @@ -47,7 +47,7 @@ public class DefaultArcadeDrive extends PIDAngleCommand { /** * Default constructor * @param map The angle PID map containing PID and other tuning constants. - * @param drive The drive to execute the command on. + * @param drive The drive to execute this command on. * @param oi The OI controlling the robot. */ public DefaultArcadeDrive(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java index c753de13..2f1a577a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/DriveAtSpeed.java @@ -25,7 +25,7 @@ public class DriveAtSpeed extends ReferencingCommand { /** * Default constructor - * @param drive The drive to execute the command on + * @param drive The drive to execute this command on * @param speed How fast to go, in RPS * @param seconds How long to drive for. */ diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index f67140b2..8f6f7311 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -62,7 +62,7 @@ public class ExecuteProfile extends ReferencingCommand { /** * Construct a new ExecuteProfile command * - * @param subsystem drive subsystem to execute the command on + * @param subsystem drive subsystem to execute this command on */ public ExecuteProfile(TalonClusterDrive subsystem) { super(subsystem); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java index 1404d939..fd027c5a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXRelativeTTA.java @@ -13,7 +13,7 @@ public class NavXRelativeTTA extends NavXTurnToAngle { * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. * @param setpoint The setpoint, in degrees from 180 to -180. - * @param drive The drive subsystem to execute the command on. + * @param drive The drive subsystem to execute this command on. * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ public NavXRelativeTTA(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java index 8f7932b7..e408ee17 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/NavXTurnToAngle.java @@ -11,7 +11,7 @@ public class NavXTurnToAngle extends PIDAngleCommand { /** - * The drive subsystem to execute the command on and to get the gyro reading from. + * The drive subsystem to execute this command on and to get the gyro reading from. */ protected TalonClusterDrive drive; @@ -35,7 +35,7 @@ public class NavXTurnToAngle extends PIDAngleCommand { * * @param map An turnPID map with PID values, an absolute tolerance, and minimum output. * @param setpoint The setpoint, in degrees from 180 to -180. - * @param drive The drive subsystem to execute the command on. + * @param drive The drive subsystem to execute this command on. * @param timeout How long this command is allowed to run for, in seconds. Needed because sometimes floating-point errors prevent termination. */ public NavXTurnToAngle(ToleranceBufferAnglePIDMap.ToleranceBufferAnglePID map, double setpoint, TalonClusterDrive drive, diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java index c88aa7fb..41c3625f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpArcadeDrive.java @@ -26,7 +26,7 @@ public class OpArcadeDrive extends ReferencingCommand { /** * Default constructor - * @param drive The drive to execute the command on + * @param drive The drive to execute this command on * @param oi The OI that gives the input to this command. */ public OpArcadeDrive(TalonClusterDrive drive, ArcadeOI oi) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java index 7740ef75..6054224f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OpTankDrive.java @@ -26,7 +26,7 @@ public class OpTankDrive extends ReferencingCommand { /** * Default constructor. - * @param drive The drive to execute the command on. + * @param drive The drive to execute this command on. * @param oi The OI this command gets input from. */ public OpTankDrive(TalonClusterDrive drive, TankOI oi) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java index 01441fb7..5339ee3b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideAutoShift.java @@ -20,7 +20,7 @@ public class OverrideAutoShift extends ReferencingCommand { /** * Default constructor - * @param drive The drive subsystem to execute the command on. + * @param drive The drive subsystem to execute this command on. * @param override Whether or not to override autoshifting. * @param switchToLowGear Whether to switch to low gear. If false, switch to high gear. */ @@ -49,7 +49,7 @@ protected void execute() { } /** - * Finsh instantly because this is just a state-change command. + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index 267d1120..4930580c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -12,7 +12,7 @@ public class PIDTest extends ReferencingCommandGroup { /** * Default constructor - * @param mappedSubsystem the TalonClusterDrive to execute the command on + * @param mappedSubsystem the TalonClusterDrive to execute this command on */ public PIDTest(MappedSubsystem mappedSubsystem) { super(mappedSubsystem); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java index d3a94c14..3979402c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToHighGear.java @@ -34,7 +34,7 @@ protected void execute() { } /** - * Exit immediately because this is a state-change command + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java index c7bbd87c..a4d70b26 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/SwitchToLowGear.java @@ -34,7 +34,7 @@ protected void execute() { } /** - * Exit immediately because this is a state-change command + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java index 6dfe6d45..08bdb145 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ToggleOverrideNavX.java @@ -11,7 +11,7 @@ public class ToggleOverrideNavX extends ReferencingCommand { /** * Default constructor. - * @param drive The drive subsystem to execute the command on + * @param drive The drive subsystem to execute this command on */ public ToggleOverrideNavX(TalonClusterDrive drive) { super(drive); @@ -35,7 +35,7 @@ protected void execute() { } /** - * Exit immediately because this is a state-change command + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java index bbe02c49..eee42e1f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/CurrentClimb.java @@ -10,13 +10,13 @@ public class CurrentClimb extends ReferencingCommand { /** - * The climber to execute the command on + * The climber to execute this command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem to execute the command on + * @param climber The climber subsystem to execute this command on */ public CurrentClimb(ClimberSubsystem climber) { super(climber); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java index ed5cdaaf..f719808f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/ManualClimb.java @@ -9,13 +9,13 @@ public class ManualClimb extends ReferencingCommand { /** - * The climber to execute the command on + * The climber to execute this command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem to execute the command on + * @param climber The climber subsystem to execute this command on */ public ManualClimb(ClimberSubsystem climber) { super(climber); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java index 08b131e2..b9b0fd7b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/climber/commands/StopClimbing.java @@ -9,13 +9,13 @@ public class StopClimbing extends ReferencingCommand { /** - * The climber to execute the command on + * The climber to execute this command on */ private ClimberSubsystem climber; /** * Default constructor - * @param climber The climber subsystem to execute the command on + * @param climber The climber subsystem to execute this command on */ public StopClimbing(ClimberSubsystem climber) { super(climber); @@ -41,7 +41,7 @@ protected void execute() { } /** - * Finishes instantaneously because it's just a state-change command. + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java index 7144db0e..618245d8 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/RunFeeder.java @@ -9,13 +9,13 @@ public class RunFeeder extends ReferencingCommand { /** - * The feeder subsystem to execute the command on. + * The feeder subsystem to execute this command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem to execute the command on. + * @param feeder The feeder subsystem to execute this command on. */ public RunFeeder(FeederSubsystem feeder) { super(feeder); @@ -41,7 +41,7 @@ protected void execute() { } /** - * Runs instantaneously + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java index 13ef56c3..0129c932 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/StopFeeder.java @@ -9,13 +9,13 @@ public class StopFeeder extends ReferencingCommand { /** - * The feeder subsystem to execute the command on. + * The feeder subsystem to execute this command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem to execute the command on. + * @param feeder The feeder subsystem to execute this command on. */ public StopFeeder(FeederSubsystem feeder) { super(feeder); @@ -41,7 +41,7 @@ protected void execute() { } /** - * Runs instantaneously + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java index cdd8703a..c202a146 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/feeder/commands/ToggleFeeder.java @@ -9,13 +9,13 @@ public class ToggleFeeder extends ReferencingCommand { /** - * The feeder subsystem to execute the command on. + * The feeder subsystem to execute this command on. */ private FeederSubsystem feeder; /** * Default constructor. - * @param feeder The feeder subsystem to execute the command on. + * @param feeder The feeder subsystem to execute this command on. */ public ToggleFeeder(FeederSubsystem feeder) { super(feeder); @@ -45,7 +45,7 @@ protected void execute() { } /** - * Runs instantaneously + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java index fe321352..73cdb37c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntakeUpDown.java @@ -9,14 +9,14 @@ */ public class ToggleIntakeUpDown extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ Intake2017 intake2017; /** * Construct a ToggleIntakeUpDown command * - * @param intake2017 intake subsytem to execute the command on + * @param intake2017 intake subsytem to execute this command on */ public ToggleIntakeUpDown(Intake2017 intake2017) { super(intake2017); @@ -34,8 +34,7 @@ protected void execute() { } /** - * Finish instantly as the piston is set in execute - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java index d2049ac4..1822f83d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/ToggleIntaking.java @@ -8,14 +8,14 @@ */ public class ToggleIntaking extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ private Intake2017 intake2017; /** * Construct a ToggleIntakeUpDown command * - * @param intake2017 intake subsytem to execute the command on + * @param intake2017 intake subsytem to execute this command on */ public ToggleIntaking(Intake2017 intake2017) { super(intake2017); @@ -41,8 +41,7 @@ protected void execute() { } /** - * Finish instantly as the piston is set in execute - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java index 70ca6ba3..93c8e163 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicIn.java @@ -9,13 +9,13 @@ public class StaticInDynamicIn extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ private Intake2017 intake; /** * Default constructor. - * @param intake The intake subsystem to execute the command on. + * @param intake The intake subsystem to execute this command on. */ public StaticInDynamicIn(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java index 553f99d9..6198b1f4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticInDynamicStop.java @@ -9,13 +9,13 @@ public class StaticInDynamicStop extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ private Intake2017 intake; /** * Default constructor. - * @param intake The intake subsystem to execute the command on. + * @param intake The intake subsystem to execute this command on. */ public StaticInDynamicStop(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java index dbaf0074..16df7aad 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/spin/StaticStopDynamicStop.java @@ -9,13 +9,13 @@ public class StaticStopDynamicStop extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ private Intake2017 intake; /** * Default constructor. - * @param intake The intake subsystem to execute the command on. + * @param intake The intake subsystem to execute this command on. */ public StaticStopDynamicStop(Intake2017 intake) { super(intake); diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java index 1dc727df..a0825150 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeDown.java @@ -9,14 +9,14 @@ */ public class IntakeDown extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ Intake2017 intake2017; /** * Construct an IntakeDown command * - * @param intake2017 intake subsystem to execute the command on + * @param intake2017 intake subsystem to execute this command on */ public IntakeDown(Intake2017 intake2017) { super(intake2017); @@ -33,8 +33,7 @@ protected void execute() { } /** - * Finish instantly as the piston is set in execute - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java index 2342e89f..718789a4 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java @@ -9,14 +9,14 @@ */ public class IntakeUp extends ReferencingCommand { /** - * The intake subsystem to execute the command on + * The intake subsystem to execute this command on */ Intake2017 intake2017; /** * Construct an IntakeDown command * - * @param intake2017 intake subsystem to execute the command on + * @param intake2017 intake subsystem to execute this command on */ public IntakeUp(Intake2017 intake2017) { super(intake2017); @@ -33,8 +33,7 @@ protected void execute() { } /** - * Finish instantly as the piston is set in execute - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java index 0153eb6c..55eaf255 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/AccelerateFlywheel.java @@ -9,7 +9,7 @@ */ public class AccelerateFlywheel extends ReferencingCommand { /** - * Flywheel subsystem to execute the command on + * Flywheel subsystem to execute this command on */ private SingleFlywheelShooter flywheelShooter; @@ -17,7 +17,7 @@ public class AccelerateFlywheel extends ReferencingCommand { /** * Construct an AccelerateFLywheel command * - * @param subsystem shooter to execute the command on + * @param subsystem shooter to execute this command on * @param timeout command timeout (doesn't actually work) */ public AccelerateFlywheel(MappedSubsystem subsystem, double timeout) { @@ -47,8 +47,7 @@ protected void execute() { //TODO make AccelerateFlywheel and DecelerateFlywheel consistent here. /** - * Finish the command instantly, as the setpoint has already been set - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java index d66e43b2..8a6a703e 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/DecelerateFlywheel.java @@ -9,7 +9,7 @@ */ public class DecelerateFlywheel extends ReferencingCommand { /** - * Flywheel subsystem to execute the command on + * Flywheel subsystem to execute this command on */ private SingleFlywheelShooter flywheelShooter; @@ -17,7 +17,7 @@ public class DecelerateFlywheel extends ReferencingCommand { /** * Construct a DecelerateFLywheel command * - * @param subsystem shooter to execute the command on + * @param subsystem shooter to execute this command on * @param timeout command timeout (doesn't actually work) */ public DecelerateFlywheel(MappedSubsystem subsystem, double timeout) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java index f8657c45..12cbe721 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/singleflywheelshooter/commands/ToggleShooter.java @@ -9,14 +9,14 @@ */ public class ToggleShooter extends ReferencingCommand { /** - * Flywheel subsystem to execute the command on + * Flywheel subsystem to execute this command on */ private SingleFlywheelShooter flywheelShooter; /** * Construct an AccelerateFLywheel command * - * @param subsystem shooter to execute the command on + * @param subsystem shooter to execute this command on */ public ToggleShooter(MappedSubsystem subsystem) { super(subsystem); @@ -47,8 +47,7 @@ protected void execute() { } /** - * Finish the command instantly, as the setpoint has already been set - * + * Finish immediately because this is a state-change command. * @return true */ @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java index 5b8403de..37c55555 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java +++ b/src/main/java/org/usfirst/frc/team449/robot/vision/commands/ChangeCam.java @@ -9,14 +9,14 @@ public class ChangeCam extends ReferencingCommand { /** - * The cameraSubsystem to execute the command on + * The cameraSubsystem to execute this command on */ private CameraSubsystem cameraSubsystem; //TODO get rid of timeout. /** * Default constructor. - * @param cameraSubsystem The cameraSubsystem to execute the command on. + * @param cameraSubsystem The cameraSubsystem to execute this command on. * @param timeout The timeout for this command (does nothing) */ public ChangeCam(CameraSubsystem cameraSubsystem, double timeout) { @@ -56,7 +56,7 @@ protected void execute() { } /** - * Finishes instantaneously. + * Finish immediately because this is a state-change command. * @return true */ @Override From f62d9fd852c44454197a91425c2d709c5c9021b7 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sun, 5 Mar 2017 12:57:30 -0500 Subject: [PATCH 42/66] Add fancy joystick. --- .../org/usfirst/frc/team449/robot/Robot.java | 4 +- .../robot/components/TriggerButton.java | 30 ++ .../team449/robot/oi/OI2017ArcadeGamepad.java | 16 +- .../robot/oi/OI2017ArcadeGamepad.proto | 3 + .../frc/team449/robot/oi/TriggerButton.proto | 10 + src/main/resources/fancy_map.cfg | 397 ++++++++++++++++++ 6 files changed, 453 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java create mode 100644 src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto create mode 100644 src/main/resources/fancy_map.cfg diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index a49a2748..cc03f597 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -44,8 +44,8 @@ public void robotInit() { System.out.println("Started robotInit"); try { //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", - cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", - //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map_only_drive.cfg", + //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", + cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/fancy_map.cfg", Robot2017Map.Robot2017.newBuilder()); } catch (IOException e) { System.out.println("Config file is bad/nonexistent!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java b/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java new file mode 100644 index 00000000..c81e1b1c --- /dev/null +++ b/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java @@ -0,0 +1,30 @@ +package org.usfirst.frc.team449.robot.components; + +import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.buttons.Button; +import maps.org.usfirst.frc.team449.robot.oi.TriggerButtonMap; +import org.usfirst.frc.team449.robot.oi.components.SmoothedThrottle; +import org.usfirst.frc.team449.robot.oi.components.Throttle; + +/** + * Created by Noah Gleason on 3/5/2017. + */ +public class TriggerButton extends Button{ + + private Throttle throttle; + private double triggerAt; + + public TriggerButton(int port, int axis, double triggerAt){ + throttle = new SmoothedThrottle(new Joystick(port), axis); + this.triggerAt = triggerAt; + } + + public TriggerButton(TriggerButtonMap.TriggerButton map){ + this(map.getPort(), map.getAxis(), map.getTriggerAt()); + } + + @Override + public boolean get() { + return throttle.getValue() >= triggerAt; + } +} diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 2f977757..aef29f15 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -1,9 +1,11 @@ package org.usfirst.frc.team449.robot.oi; import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.buttons.Button; import edu.wpi.first.wpilibj.buttons.JoystickButton; import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepadMap; import org.usfirst.frc.team449.robot.Robot; +import org.usfirst.frc.team449.robot.components.TriggerButton; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; @@ -39,9 +41,9 @@ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { private Throttle fwdThrottle; private Joystick gamepad; private double deadband; - private JoystickButton tt0, tt30, tt180, tt330, turnaround, switchToLowGear, switchToHighGear, climb, overrideNavX; - private JoystickButton switchCamera, toggleIntake, toggleIntakeUpDown, tmpOverrideLow, tmpOverrideHigh, toggleOverrideHigh, toggleFeeder, shoot; - private JoystickButton loadShooter, rackShooter, fireShooter; + private Button tt0, tt30, tt180, tt330, turnaround, switchToLowGear, switchToHighGear, climb, overrideNavX; + private Button switchCamera, toggleIntake, toggleIntakeUpDown, tmpOverrideLow, tmpOverrideHigh, toggleOverrideHigh, toggleFeeder, shoot; + private Button loadShooter, rackShooter, fireShooter; public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { //This is just to give the sticks better names and allow quickly swapping which is which according to driver preference. @@ -82,13 +84,17 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasToggleOverrideLow()){ tmpOverrideLow = new MJButton(map.getToggleOverrideLow()); + } else if (map.hasTriggerToggleOverrideLow()){ + tmpOverrideLow = new TriggerButton(map.getTriggerToggleOverrideLow()); } if (map.hasToggleOverrideHigh()){ tmpOverrideHigh = new MJButton(map.getToggleOverrideHigh()); + } else if (map.hasTriggerToggleOverrideHigh()){ + tmpOverrideHigh = new TriggerButton(map.getTriggerToggleOverrideHigh()); } - if (map.hasToggleOverrideHigh()) { // TODO check if tmp == toggle + /*if (map.hasToggleOverrideHigh()) { // TODO check if tmp == toggle toggleOverrideHigh = new MJButton(map.getToggleOverrideHigh()); - } + }*/ if (map.hasToggleFeeder()) { toggleFeeder = new MJButton(map.getToggleFeeder()); } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto index e0c04e82..3d626365 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto @@ -1,5 +1,6 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/oi/JButton.proto"; +import "org/usfirst/frc/team449/robot/oi/TriggerButton.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.oi"; option java_outer_classname = "OI2017ArcadeGamepadMap"; @@ -25,6 +26,8 @@ message OI2017ArcadeGamepad { optional JButton toggle_intake_up_down = 14; optional JButton toggle_override_low = 15; optional JButton toggle_override_high = 16; + optional TriggerButton trigger_toggle_override_low = 24; + optional TriggerButton trigger_toggle_override_high = 25; optional JButton shoot = 17; optional JButton switch_camera = 23; diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto new file mode 100644 index 00000000..c0a59791 --- /dev/null +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto @@ -0,0 +1,10 @@ +syntax = "proto2"; + +option java_package = "maps.org.usfirst.frc.team449.robot.oi"; +option java_outer_classname = "TriggerButtonMap"; + +message TriggerButton { + required int32 port = 1; + required int32 axis = 2; + required double trigger_at = 3; +} diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg new file mode 100644 index 00000000..61e63a49 --- /dev/null +++ b/src/main/resources/fancy_map.cfg @@ -0,0 +1,397 @@ +arcade_oi { + gamepad: 1 + gamepad_left_axis: 0 + gamepad_right_axis: 5 + + deadband: 0.05 + dpad_shift: 0.1 + + invert_fwd: true + invert_rot: true + invert_dpad: true + + switch_to_low_gear { + ji: 3 + bi: 1 + } + switch_to_high_gear { + ji: 3 + bi: 2 + } + override_navX { + ji: 3 + bi: 12 + } + climb { + ji: 1 + bi: 5 + } + toggle_feeder { + ji: 3 + bi: 5 + } + toggle_intake { + ji: 3 + bi: 6 + } + toggle_intake_up_down { + ji: 3 + bi: 7 + } + trigger_toggle_override_low { + port: 1 + axis: 2 + trigger_at: 0.9 + } + trigger_toggle_override_high { + port: 1 + axis: 3 + trigger_at: 0.9 + } + shoot { + ji: 3 + bi: 10 + } + loadShooter { + ji: 2 + bi: 3 + } + rackShooter { + ji: 2 + bi: 4 + } + fireShooter { + ji: 1 + bi: 6 + } + resetShooter { + ji: 2 + bi: 1 + } + switch_camera { + ji: 1 + bi: 2 + } +} +drive { + drive {} + turn_PID { + PID { + p: 0.007 + i: 0 + d: 0 + f: 0 + percent_tolerance: 1 + } + tolerance_buffer: 25 + absolute_tolerance: 1 + minimum_output: 0.1 + minimum_output_enabled: false + maximum_output : 0 + maximum_output_enabled: false + deadband: 0.75 + deadband_enabled: true + inverted: false + } + straight_PID { + PID { + p: 0.02 + i: 0 + d: 0.008 + f: 0 + percent_tolerance: 1 + } + tolerance_buffer: 25 + absolute_tolerance: 1 + minimum_output: 0.1 + minimum_output_enabled: false + maximum_output: 0.33333 + maximum_output_enabled: true + deadband: 1.0 + deadband_enabled: true + max_angular_vel: 0.05 + inverted: true + } + shifter { + forward: 2 + reverse: 3 + } + module_number: 15 + right_master { + port: 2 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 10.0 + profile: 0 + kP_hg: 0.4 + kI_hg: 0.0 + kD_hg: 4.0 + kP_lg: 0.15 + kI_lg: 0.0 + kD_lg: 0.0 + kP_mp: 0.3 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 14.5 + max_speed_lg: 5.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_master{ + port: 7 + feedback_device: QuadEncoder + reverse_sensor: true + reverse_output: false + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 10.0 + profile: 0 + kP_hg: 0.4 + kI_hg: 0.0 + kD_hg: 4.0 + kP_lg: 0.15 + kI_lg: 0.0 + kD_lg: 0.0 + kP_mp: 0.3 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 14.5 + max_speed_lg: 5.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + right_slave { + port: 1 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + right_slave{ + port: 3 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_slave{ + port: 8 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_slave{ + port: 6 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + wheel_diameter: 4 + upshift: 3.5 + downshift: 2 + up_time_thresh: 0.25 + down_time_thresh: 0.25 + upshift_fwd_deadband: 0.3 +} +climber{ + mechanism{} + winch { + port: 5 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: false + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.0 + kI_hg: 0.0 + kD_hg: 0.0 + max_speed_hg: 13.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: true + encoder_CPR: 512 + } + max_current: 50.0 +} +feeder { + mechanism {} + victor { + port: 1 + inverted: true + } + speed: 0.66 +} +shooter{ + mechanism {} + talon { + port: 4 + feedback_device: CtreMagEncoder_Relative + reverse_sensor: true + reverse_output: false + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.1 + kI_hg: 0.0 + kD_hg: 0.0 + max_speed_hg: 80.0 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: true + encoder_CPR: 1024 + } + throttle: 0.71 +} +intake { + mechanism {} + fixed_victor { + port: 2 + inverted: false + } + actuated_victor { + port: 0 + inverted: false + } + piston { + forward: 5 + reverse: 4 + } + pistonModuleNum: 15 +} +camera { + server { + name: "Cameras" + port: 5800 + } + USB_camera { + name: "cam0" + dev: 0 + width: 160 + height: 90 + fps: 30 + } + USB_camera { + name: "cam1" + dev: 1 + width: 160 + height: 120 + fps: 30 + } +} +module: 15 \ No newline at end of file From f7d07efe8a03964bc1b79073e1c24172a631c147 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sun, 5 Mar 2017 12:57:30 -0500 Subject: [PATCH 43/66] Add support for fancy joystick. --- .../org/usfirst/frc/team449/robot/Robot.java | 4 +- .../robot/components/TriggerButton.java | 30 ++ .../team449/robot/oi/OI2017ArcadeGamepad.java | 16 +- .../robot/oi/OI2017ArcadeGamepad.proto | 3 + .../frc/team449/robot/oi/TriggerButton.proto | 10 + src/main/resources/fancy_map.cfg | 397 ++++++++++++++++++ 6 files changed, 453 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java create mode 100644 src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto create mode 100644 src/main/resources/fancy_map.cfg diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index a49a2748..cc03f597 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -44,8 +44,8 @@ public void robotInit() { System.out.println("Started robotInit"); try { //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", - cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", - //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map_only_drive.cfg", + //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", + cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/fancy_map.cfg", Robot2017Map.Robot2017.newBuilder()); } catch (IOException e) { System.out.println("Config file is bad/nonexistent!"); diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java b/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java new file mode 100644 index 00000000..c81e1b1c --- /dev/null +++ b/src/main/java/org/usfirst/frc/team449/robot/components/TriggerButton.java @@ -0,0 +1,30 @@ +package org.usfirst.frc.team449.robot.components; + +import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.buttons.Button; +import maps.org.usfirst.frc.team449.robot.oi.TriggerButtonMap; +import org.usfirst.frc.team449.robot.oi.components.SmoothedThrottle; +import org.usfirst.frc.team449.robot.oi.components.Throttle; + +/** + * Created by Noah Gleason on 3/5/2017. + */ +public class TriggerButton extends Button{ + + private Throttle throttle; + private double triggerAt; + + public TriggerButton(int port, int axis, double triggerAt){ + throttle = new SmoothedThrottle(new Joystick(port), axis); + this.triggerAt = triggerAt; + } + + public TriggerButton(TriggerButtonMap.TriggerButton map){ + this(map.getPort(), map.getAxis(), map.getTriggerAt()); + } + + @Override + public boolean get() { + return throttle.getValue() >= triggerAt; + } +} diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 2f977757..aef29f15 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -1,9 +1,11 @@ package org.usfirst.frc.team449.robot.oi; import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.buttons.Button; import edu.wpi.first.wpilibj.buttons.JoystickButton; import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepadMap; import org.usfirst.frc.team449.robot.Robot; +import org.usfirst.frc.team449.robot.components.TriggerButton; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; @@ -39,9 +41,9 @@ public class OI2017ArcadeGamepad extends BaseOI implements ArcadeOI { private Throttle fwdThrottle; private Joystick gamepad; private double deadband; - private JoystickButton tt0, tt30, tt180, tt330, turnaround, switchToLowGear, switchToHighGear, climb, overrideNavX; - private JoystickButton switchCamera, toggleIntake, toggleIntakeUpDown, tmpOverrideLow, tmpOverrideHigh, toggleOverrideHigh, toggleFeeder, shoot; - private JoystickButton loadShooter, rackShooter, fireShooter; + private Button tt0, tt30, tt180, tt330, turnaround, switchToLowGear, switchToHighGear, climb, overrideNavX; + private Button switchCamera, toggleIntake, toggleIntakeUpDown, tmpOverrideLow, tmpOverrideHigh, toggleOverrideHigh, toggleFeeder, shoot; + private Button loadShooter, rackShooter, fireShooter; public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { //This is just to give the sticks better names and allow quickly swapping which is which according to driver preference. @@ -82,13 +84,17 @@ public OI2017ArcadeGamepad(OI2017ArcadeGamepadMap.OI2017ArcadeGamepad map) { if (map.hasToggleOverrideLow()){ tmpOverrideLow = new MJButton(map.getToggleOverrideLow()); + } else if (map.hasTriggerToggleOverrideLow()){ + tmpOverrideLow = new TriggerButton(map.getTriggerToggleOverrideLow()); } if (map.hasToggleOverrideHigh()){ tmpOverrideHigh = new MJButton(map.getToggleOverrideHigh()); + } else if (map.hasTriggerToggleOverrideHigh()){ + tmpOverrideHigh = new TriggerButton(map.getTriggerToggleOverrideHigh()); } - if (map.hasToggleOverrideHigh()) { // TODO check if tmp == toggle + /*if (map.hasToggleOverrideHigh()) { // TODO check if tmp == toggle toggleOverrideHigh = new MJButton(map.getToggleOverrideHigh()); - } + }*/ if (map.hasToggleFeeder()) { toggleFeeder = new MJButton(map.getToggleFeeder()); } diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto index e0c04e82..3d626365 100644 --- a/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.proto @@ -1,5 +1,6 @@ syntax = "proto2"; import "org/usfirst/frc/team449/robot/oi/JButton.proto"; +import "org/usfirst/frc/team449/robot/oi/TriggerButton.proto"; option java_package = "maps.org.usfirst.frc.team449.robot.oi"; option java_outer_classname = "OI2017ArcadeGamepadMap"; @@ -25,6 +26,8 @@ message OI2017ArcadeGamepad { optional JButton toggle_intake_up_down = 14; optional JButton toggle_override_low = 15; optional JButton toggle_override_high = 16; + optional TriggerButton trigger_toggle_override_low = 24; + optional TriggerButton trigger_toggle_override_high = 25; optional JButton shoot = 17; optional JButton switch_camera = 23; diff --git a/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto b/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto new file mode 100644 index 00000000..c0a59791 --- /dev/null +++ b/src/main/proto/org/usfirst/frc/team449/robot/oi/TriggerButton.proto @@ -0,0 +1,10 @@ +syntax = "proto2"; + +option java_package = "maps.org.usfirst.frc.team449.robot.oi"; +option java_outer_classname = "TriggerButtonMap"; + +message TriggerButton { + required int32 port = 1; + required int32 axis = 2; + required double trigger_at = 3; +} diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg new file mode 100644 index 00000000..382019c5 --- /dev/null +++ b/src/main/resources/fancy_map.cfg @@ -0,0 +1,397 @@ +arcade_oi { + gamepad: 1 + gamepad_left_axis: 0 + gamepad_right_axis: 5 + + deadband: 0.05 + dpad_shift: 0.1 + + invert_fwd: true + invert_rot: true + invert_dpad: true + + switch_to_low_gear { + ji: 3 + bi: 1 + } + switch_to_high_gear { + ji: 3 + bi: 2 + } + override_navX { + ji: 3 + bi: 12 + } + climb { + ji: 1 + bi: 5 + } + toggle_feeder { + ji: 3 + bi: 5 + } + toggle_intake { + ji: 3 + bi: 6 + } + toggle_intake_up_down { + ji: 3 + bi: 7 + } + trigger_toggle_override_low { + port: 1 + axis: 2 + trigger_at: 0.9 + } + trigger_toggle_override_high { + port: 1 + axis: 3 + trigger_at: 0.9 + } + shoot { + ji: 3 + bi: 10 + } + loadShooter { + ji: 2 + bi: 3 + } + rackShooter { + ji: 2 + bi: 4 + } + fireShooter { + ji: 1 + bi: 6 + } + resetShooter { + ji: 2 + bi: 1 + } + switch_camera { + ji: 1 + bi: 1 + } +} +drive { + drive {} + turn_PID { + PID { + p: 0.007 + i: 0 + d: 0 + f: 0 + percent_tolerance: 1 + } + tolerance_buffer: 25 + absolute_tolerance: 1 + minimum_output: 0.1 + minimum_output_enabled: false + maximum_output : 0 + maximum_output_enabled: false + deadband: 0.75 + deadband_enabled: true + inverted: false + } + straight_PID { + PID { + p: 0.02 + i: 0 + d: 0.008 + f: 0 + percent_tolerance: 1 + } + tolerance_buffer: 25 + absolute_tolerance: 1 + minimum_output: 0.1 + minimum_output_enabled: false + maximum_output: 0.33333 + maximum_output_enabled: true + deadband: 1.0 + deadband_enabled: true + max_angular_vel: 0.05 + inverted: true + } + shifter { + forward: 2 + reverse: 3 + } + module_number: 15 + right_master { + port: 2 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 10.0 + profile: 0 + kP_hg: 0.4 + kI_hg: 0.0 + kD_hg: 4.0 + kP_lg: 0.15 + kI_lg: 0.0 + kD_lg: 0.0 + kP_mp: 0.3 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 14.5 + max_speed_lg: 5.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_master{ + port: 7 + feedback_device: QuadEncoder + reverse_sensor: true + reverse_output: false + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 10.0 + profile: 0 + kP_hg: 0.4 + kI_hg: 0.0 + kD_hg: 4.0 + kP_lg: 0.15 + kI_lg: 0.0 + kD_lg: 0.0 + kP_mp: 0.3 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 14.5 + max_speed_lg: 5.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + right_slave { + port: 1 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + right_slave{ + port: 3 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_slave{ + port: 8 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + left_slave{ + port: 6 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 + } + wheel_diameter: 4 + upshift: 3.5 + downshift: 2 + up_time_thresh: 0.25 + down_time_thresh: 0.25 + upshift_fwd_deadband: 0.3 +} +climber{ + mechanism{} + winch { + port: 5 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: false + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.0 + kI_hg: 0.0 + kD_hg: 0.0 + max_speed_hg: 13.5 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: true + encoder_CPR: 512 + } + max_current: 50.0 +} +feeder { + mechanism {} + victor { + port: 1 + inverted: true + } + speed: 0.66 +} +shooter{ + mechanism {} + talon { + port: 4 + feedback_device: CtreMagEncoder_Relative + reverse_sensor: true + reverse_output: false + is_inverted: false + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.1 + kI_hg: 0.0 + kD_hg: 0.0 + max_speed_hg: 80.0 + fwd_lim_norm_open: true + rev_lim_norm_open: true + fwd_lim_enabled: true + rev_lim_enabled: true + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: true + encoder_CPR: 1024 + } + throttle: 0.71 +} +intake { + mechanism {} + fixed_victor { + port: 2 + inverted: false + } + actuated_victor { + port: 0 + inverted: false + } + piston { + forward: 5 + reverse: 4 + } + pistonModuleNum: 15 +} +camera { + server { + name: "Cameras" + port: 5800 + } + USB_camera { + name: "cam0" + dev: 0 + width: 160 + height: 90 + fps: 30 + } + USB_camera { + name: "cam1" + dev: 1 + width: 160 + height: 120 + fps: 30 + } +} +module: 15 \ No newline at end of file From e12af53e5900d5af20c1d58a85219fad786cecb9 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Sun, 5 Mar 2017 16:34:19 -0500 Subject: [PATCH 44/66] 2017-03-05 16:33 auto testing stuff --- gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../org/usfirst/frc/team449/robot/Robot.java | 26 +- .../drive/talonCluster/TalonClusterDrive.java | 10 +- src/main/resources/leftProfile.csv | 2053 +++++++++-------- src/main/resources/map.cfg | 8 +- src/main/resources/rightProfile.csv | 2053 +++++++++-------- 7 files changed, 2191 insertions(+), 1961 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 17acce555f5b888152000977618e8fecbc352bed..b2dbf865c4acc3d35fef869a54bc6d245afc56df 100644 GIT binary patch delta 26 gcmX@GocX|V<_*z@m<7^PH^&_k5(F_O7hm=T0F;&rd;kCd delta 26 gcmX@GocX|V<_*z@m@{)jH^&_k5(F_O7hm=T0Gs0r8UO$Q diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 26a13107..2ad0f21d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Tue Feb 21 13:43:19 EST 2017 +#Sun Mar 05 12:56:33 EST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 23e9e487..db8c8a67 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -2,6 +2,7 @@ import edu.wpi.first.wpilibj.IterativeRobot; import edu.wpi.first.wpilibj.command.Scheduler; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import maps.org.usfirst.frc.team449.robot.Robot2017Map; import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; @@ -60,20 +61,43 @@ public void robotInit() { @Override public void teleopInit() { // Scheduler.getInstance().add(new DefaultDrive(driveSubsystem, oiSubsystem)); + driveSubsystem.setVBusThrottle(0, 0); } @Override public void teleopPeriodic() { - Scheduler.getInstance().run(); + //Scheduler.getInstance().run(); + SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); + driveSubsystem.setVBusThrottle(0, 0); } @Override public void autonomousInit() { // Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); + SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); + driveSubsystem.setVBusThrottle(0, 0); + driveSubsystem.leftMaster.canTalon.setEncPosition(0); + driveSubsystem.rightMaster.canTalon.setEncPosition(0); } @Override public void autonomousPeriodic() { Scheduler.getInstance().run(); + SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); + } + + @Override + public void testPeriodic(){ + SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); + driveSubsystem.setVBusThrottle(0, 0); + } + + @Override + public void disabledInit() { + driveSubsystem.setVBusThrottle(0, 0); + driveSubsystem.leftMaster.canTalon.reset(); + driveSubsystem.leftMaster.canTalon.clearMotionProfileTrajectories(); + driveSubsystem.rightMaster.canTalon.reset(); + driveSubsystem.rightMaster.canTalon.clearMotionProfileTrajectories(); } } \ No newline at end of file diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 02396a48..0c14b743 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -71,7 +71,7 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T * @param left The left throttle, a number between -1 and 1 inclusive. * @param right The right throttle, a number between -1 and 1 inclusive. */ - private void setVBusThrottle(double left, double right) { + public void setVBusThrottle(double left, double right) { leftMaster.setPercentVbus(left); rightMaster.setPercentVbus(right); } @@ -108,12 +108,20 @@ public void logData() { sb.append(leftTPointStatus.activePoint.position); sb.append(","); sb.append(rightTPointStatus.activePoint.position); + sb.append(","); + sb.append(leftTPointStatus.activePoint.velocity); + sb.append(","); + sb.append(rightTPointStatus.activePoint.velocity); sb.append("\n"); fw.write(sb.toString()); SmartDashboard.putNumber("Left", leftMaster.getSpeed()); SmartDashboard.putNumber("Right", rightMaster.getSpeed()); + SmartDashboard.putNumber("Left Pos inches", leftMaster.nativeToRPS(leftMaster.canTalon.getEncPosition())/10*Math.PI*4); + SmartDashboard.putNumber("Right Pos inches", rightMaster.nativeToRPS(rightMaster.canTalon.getEncPosition())/10*Math.PI*4); + SmartDashboard.putNumber("Right Pos", rightMaster.canTalon.getEncPosition()); + SmartDashboard.putNumber("Left Pos", leftMaster.canTalon.getEncPosition()); SmartDashboard.putNumber("Throttle", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); SmartDashboard.putNumber("Heading", navx.pidGet()); SmartDashboard.putNumber("Left Setpoint", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); diff --git a/src/main/resources/leftProfile.csv b/src/main/resources/leftProfile.csv index f4a153ff..b51c4fb9 100644 --- a/src/main/resources/leftProfile.csv +++ b/src/main/resources/leftProfile.csv @@ -1,978 +1,1077 @@ +1076 6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, -2.2386850691897895E-5, 3.227370138379579E-4, 0.05, -5.8694738625745044E-5, 7.26157758676943E-4, 0.05, -1.2324200564308514E-4, 0.0012909453403468021, 0.05, -2.2409688149547963E-4, 0.0020170975170478896, 0.05, -3.693274123767641E-4, 0.0029046106176256895, 0.05, -5.670013715651596E-4, 0.00395347918376791, 0.05, -0.001062412963463878, 0.009908231837974365, 0.05, -0.0018954263680363188, 0.016660268091448816, 0.05, -0.002923834985205565, 0.02056817234338492, 0.05, -0.004168204281704437, 0.02488738592997743, 0.05, -0.005649101494002708, 0.029617944245965425, 0.05, -0.0073870901680806456, 0.03475977348155875, 0.05, -0.009402734392836978, 0.04031288449512665, 0.05, -0.01171659689397361, 0.04627725002273262, 0.05, -0.014349236575204849, 0.052652793624624786, 0.05, -0.01732121650516467, 0.05943959859919642, 0.05, -0.020653091926625813, 0.06663750842922284, 0.05, -0.02436541873627054, 0.07424653619289454, 0.05, -0.028478751831647126, 0.08226666190753171, 0.05, -0.03301364028311635, 0.09069776902938444, 0.05, -0.03799063431598097, 0.09953988065729245, 0.05, -0.04343027747295482, 0.10879286313947692, 0.05, -0.04935311342646011, 0.11845671907010576, 0.05, -0.05577967783693869, 0.12853128820957166, 0.05, -0.06273050615389304, 0.13901656633908693, 0.05, -0.07022612735236386, 0.14991242396941648, 0.05, -0.07828706686306194, 0.1612187902139617, 0.05, -0.08693384361075653, 0.17293553495389158, 0.05, -0.09618697088700853, 0.1850625455250401, 0.05, -0.10606695888347577, 0.19759975992934475, 0.05, -0.11659430628059077, 0.21054694794230003, 0.05, -0.1277895095434459, 0.22390406525710246, 0.05, -0.13967305337349348, 0.23767087660095165, 0.05, -0.15226541655796016, 0.2518472636893339, 0.05, -0.1655870699563533, 0.2664330679678629, 0.05, -0.17965847230194817, 0.28142804691189754, 0.05, -0.19450007590692947, 0.2968320720996258, 0.05, -0.21013231859555342, 0.3126448537724791, 0.05, -0.2265756298166109, 0.32886622442114916, 0.05, -0.24385042516034558, 0.34549590687469356, 0.05, -0.2619771073416738, 0.3625336436265647, 0.05, -0.2809760671416952, 0.37997919600042784, 0.05, -0.3008676773983052, 0.3978322051322006, 0.05, -0.32167229925925134, 0.4160924372189226, 0.05, -0.34341027350429687, 0.4347594849009104, 0.05, -0.3661019263659121, 0.4538330572323044, 0.05, -0.38976756265074325, 0.4733127256966233, 0.05, -0.41442747019482606, 0.49319815088165575, 0.05, -0.44010191300454904, 0.5134888561944598, 0.05, -0.4668111348607708, 0.5341844371244355, 0.05, -0.49457535499420413, 0.5552844026686669, 0.05, -0.5234147680835293, 0.5767882617865018, 0.05, -0.5533495417038903, 0.5986954724072202, 0.05, -0.5843998168534578, 0.6210055029913487, 0.05, -0.6165857030107346, 0.6437177231455357, 0.05, -0.6499272790695053, 0.6668315211754152, 0.05, -0.6844445931368608, 0.6903462813471092, 0.05, -0.7201576545549351, 0.7142612283614869, 0.05, -0.7570864376111934, 0.7385756611251663, 0.05, -0.7952508799361132, 0.7632888464983947, 0.05, -0.8346708735826177, 0.7883998729300904, 0.05, -0.8753662707255809, 0.8139079428592633, 0.05, -0.9173568767202626, 0.8398121198936335, 0.05, -0.9606624488827582, 0.8661114432499123, 0.05, -1.005302694565179, 0.8928049136484171, 0.05, -1.0512972672303331, 0.9198914533030802, 0.05, -1.098665763713469, 0.9473699296627147, 0.05, -1.1474277225730058, 0.9752391771907367, 0.05, -1.19760262097233, 1.003497967986486, 0.05, -1.249209867848539, 1.032144937524181, 0.05, -1.3022688080130274, 1.0611788032897658, 0.05, -1.356798710078316, 1.0905980413057768, 0.05, -1.412818769009319, 1.1204011786200567, 0.05, -1.4703481001978354, 1.1505866237703273, 0.05, -1.529405735569747, 1.1811527074382318, 0.05, -1.5900106196126649, 1.2120976808583563, 0.05, -1.6521816052323686, 1.2434197123940756, 0.05, -1.7159374500956075, 1.275116897264778, 0.05, -1.7812968108095142, 1.3071872142781351, 0.05, -1.8482782382798506, 1.33962854940673, 0.05, -1.9169001745099619, 1.3724387246022263, 0.05, -1.9871809466211232, 1.4056154422232248, 0.05, -2.0591387601111832, 1.4391562698011995, 0.05, -2.1327916961146802, 1.4730587200699368, 0.05, -2.208157705132256, 1.5073201803515146, 0.05, -2.2852545993344435, 1.541937884043748, 0.05, -2.3641000491433024, 1.5769089961771772, 0.05, -2.44471157620316, 1.612230541197152, 0.05, -2.5271065471278233, 1.647899418493264, 0.05, -2.6113021670816883, 1.683912399077303, 0.05, -2.6973154731985813, 1.7202661223378597, 0.05, -2.7851633279549293, 1.7569570951269604, 0.05, -2.8748624127691724, 1.7939816962848614, 0.05, -2.966429219203713, 1.831336128690817, 0.05, -3.0598800438340623, 1.8690164926069823, 0.05, -3.1552309798296982, 1.9070187199127178, 0.05, -3.2524979092386275, 1.945338588178588, 0.05, -3.3516964957028534, 1.9839717292845234, 0.05, -3.4528421764010253, 2.0229136139634347, 0.05, -3.555940050573216, 2.061957483443812, 0.05, -3.6609849070782476, 2.10089713010063, 0.05, -3.767971346199784, 2.1397287824307285, 0.05, -3.8768937761602325, 2.178448599208963, 0.05, -3.9877464101575923, 2.217052679947201, 0.05, -4.100523263082475, 2.2555370584976453, 0.05, -4.2152181491583764, 2.2938977215180247, 0.05, -4.331824678851708, 2.332130593866646, 0.05, -4.450336256511155, 2.370231553188927, 0.05, -4.5707460784231095, 2.4081964382390995, 0.05, -4.693047130031735, 2.446021032172501, 0.05, -4.817232184291527, 2.4837010851958428, 0.05, -4.9432938002757405, 2.5212323196842727, 0.05, -5.071224321863427, 2.5586104317537415, 0.05, -5.201015874943362, 2.595831061598693, 0.05, -5.332660369071379, 2.6328898825603435, 0.05, -5.466149494481201, 2.6697825081964255, 0.05, -5.601474722851764, 2.706504567411259, 0.05, -5.738627306272483, 2.743051668414386, 0.05, -5.877598278725149, 2.7794194490533064, 0.05, -6.018378454480442, 2.815603515105874, 0.05, -6.160958431435326, 2.851599539097668, 0.05, -6.305328590160686, 2.887403174507208, 0.05, -6.451479094322594, 2.9230100832381645, 0.05, -6.59939989753954, 2.9584160643389166, 0.05, -6.749080737158978, 2.9936167923887673, 0.05, -6.900511145049381, 3.028608157808064, 0.05, -7.053680444783867, 3.063385994689714, 0.05, -7.208577756235395, 3.0979462290305704, 0.05, -7.3651919985109275, 3.1322848455106405, 0.05, -7.523511896542079, 3.166397960623023, 0.05, -7.683525980421868, 3.2002816775957674, 0.05, -7.845222592296683, 3.2339322374963198, 0.05, -8.008589892647812, 3.267346007022595, 0.05, -8.17361586129566, 3.3005193729569653, 0.05, -8.340288308221258, 3.333448938511946, 0.05, -8.508594874303776, 3.366131321650364, 0.05, -8.678523039810885, 3.398563310142191, 0.05, -8.850060128924294, 3.430741782268183, 0.05, -9.023193320524197, 3.4626638319980576, 0.05, -9.197900060549975, 3.4941348005155572, 0.05, -9.3741481666547, 3.5249621220945224, 0.05, -9.551905486046536, 3.555146387836714, 0.05, -9.731139914851488, 3.584688576099023, 0.05, -9.911819404510002, 3.613589793170299, 0.05, -10.093911977920186, 3.6418514682036864, 0.05, -10.277385747114279, 3.6694753838818515, 0.05, -10.462208918939554, 3.696463436505509, 0.05, -10.648349817485151, 3.7228179709119478, 0.05, -10.835776889002554, 3.7485414303480677, 0.05, -11.02445872266832, 3.773636673315335, 0.05, -11.214364055869117, 3.7981066640159344, 0.05, -11.40546179637505, 3.8219548101186573, 0.05, -11.597721024147447, 3.845184555447939, 0.05, -11.791111011950095, 3.8677997560529778, 0.05, -11.98560123495234, 3.8898044600448825, 0.05, -12.181161380776167, 3.9112029164765496, 0.05, -12.37776136158266, 3.9319996161298656, 0.05, -12.575371323238022, 3.9521992331072258, 0.05, -12.773961663583181, 3.971806806903194, 0.05, -12.973503029737872, 3.9908273230937934, 0.05, -13.173966337713209, 4.009266159506744, 0.05, -13.375322776351315, 4.0271287727621035, 0.05, -13.577543821798692, 4.044420908947527, 0.05, -13.780601237074084, 4.061148305507848, 0.05, -13.984467087424859, 4.077317007015514, 0.05, -14.189113743696701, 4.092933125436868, 0.05, -14.394513884904576, 4.108002824157489, 0.05, -14.60064051682448, 4.122532638398098, 0.05, -14.807466964772148, 4.1365289589533525, 0.05, -15.014966883394914, 4.1499983724553156, 0.05, -15.223114263463819, 4.162947601378077, 0.05, -15.431883428857075, 4.175383307865117, 0.05, -15.641249052593107, 4.187312474720646, 0.05, -15.851186146174607, 4.198741871629993, 0.05, -16.06167006679135, 4.209678412334849, 0.05, -16.272676524970205, 4.220129163577087, 0.05, -16.48418157448602, 4.230100990316272, 0.05, -16.696161627130763, 4.239601052894881, 0.05, -16.9085934385374, 4.248636228132758, 0.05, -17.12145412217297, 4.2572136727113685, 0.05, -17.33472113547107, 4.265340265962003, 0.05, -17.548372292500325, 4.273023140585084, 0.05, -17.762385747282238, 4.280269095638264, 0.05, -17.97674000668644, 4.287085188084087, 0.05, -18.191413920929545, 4.293478284862083, 0.05, -18.40638668168516, 4.299455215112291, 0.05, -18.621637815349608, 4.305022673288999, 0.05, -18.837147191241183, 4.310187517831491, 0.05, -19.052895007610058, 4.31495632737751, 0.05, -19.268861786494035, 4.319335577679577, 0.05, -19.48502838278782, 4.323331925875682, 0.05, -19.7013759652532, 4.326951649307542, 0.05, -19.917886020489743, 4.330201104730844, 0.05, -20.134540344043007, 4.33308647106532, 0.05, -20.351321039937094, 4.33561391788176, 0.05, -20.568210505356006, 4.337789308378235, 0.05, -20.785191443406525, 4.339618761010342, 0.05, -21.002246836870945, 4.341107869288437, 0.05, -21.219359954792044, 4.3422623584219595, 0.05, -21.43651434619478, 4.343087828054746, 0.05, -21.653693831898376, 4.3435897140719, 0.05, -21.87088249392401, 4.343773240512712, 0.05, -22.08806467853407, 4.343643692201163, 0.05, -22.305224985088763, 4.343206131093857, 0.05, -22.522348259680363, 4.342465491832017, 0.05, -22.73941958694161, 4.341426545224943, 0.05, -22.956424290801582, 4.340094077199395, 0.05, -23.173347922812553, 4.338472640219388, 0.05, -23.390176253834788, 4.3365666204447235, 0.05, -23.60689527347671, 4.334380392838397, 0.05, -23.823491182257406, 4.331918175613918, 0.05, -24.03995038216002, 4.329183998052264, 0.05, -24.25625947292637, 4.326181815327038, 0.05, -24.472405245017498, 4.322915441822527, 0.05, -24.688374676903557, 4.319388637721193, 0.05, -24.90415492481496, 4.315604958228049, 0.05, -25.119733318477547, 4.311567873251694, 0.05, -25.335097355251254, 4.307280735474139, 0.05, -25.550234694369028, 4.302746782355484, 0.05, -25.765133151280498, 4.29796913822938, 0.05, -25.979780692103656, 4.292950816463137, 0.05, -26.19416542818806, 4.2876947216880685, 0.05, -26.40827561079189, 4.2822036520765545, 0.05, -26.62209962568563, 4.276480297874871, 0.05, -26.835625983834145, 4.27052716297026, 0.05, -27.048843329074042, 4.264346904797926, 0.05, -27.26174041714847, 4.257941761488524, 0.05, -27.474306122375108, 4.251314104532756, 0.05, -27.68652942438022, 4.2444660401022265, 0.05, -27.89839941361848, 4.237399784765258, 0.05, -28.109905277622406, 4.230117280078478, 0.05, -28.32103630093988, 4.222620466349509, 0.05, -28.531781861041157, 4.214911202025558, 0.05, -28.74213142050445, 4.206991189265824, 0.05, -28.952074530291096, 4.198862195732924, 0.05, -29.16160081656235, 4.190525725425062, 0.05, -29.370699986337158, 4.1819833954961565, 0.05, -29.579361816768746, 4.173236608631721, 0.05, -29.787576154528278, 4.164286755190641, 0.05, -29.995340321588394, 4.155283341202298, 0.05, -30.20265904061311, 4.146374380494291, 0.05, -30.409536965255736, 4.137558492852529, 0.05, -30.615978684781183, 4.128834390508907, 0.05, -30.82198872525702, 4.120200809516742, 0.05, -31.0275715446469, 4.1116563877975425, 0.05, -31.232731542095973, 4.103199948981471, 0.05, -31.43747304791957, 4.094830116471939, 0.05, -31.641800330319462, 4.086545647997798, 0.05, -31.84571759563674, 4.0783453063455175, 0.05, -32.049228988628734, 4.070227859839896, 0.05, -32.252338584868525, 4.062191924795844, 0.05, -32.455050406319, 4.054236429009494, 0.05, -32.65736840865139, 4.046360046647671, 0.05, -32.85929648760921, 4.038561579156435, 0.05, -33.06083847786971, 4.030839805210056, 0.05, -33.26199815296998, 4.023193502005416, 0.05, -33.4627792294961, 4.015621530522344, 0.05, -33.66318536320632, 4.008122674204315, 0.05, -33.863220150742244, 4.000695750718508, 0.05, -34.06288713157032, 3.9933396165615753, 0.05, -34.26218978837248, 3.986053136043193, 0.05, -34.46113154160483, 3.978835064646994, 0.05, -34.65971576335224, 3.9716844349482026, 0.05, -34.85794576399956, 3.964600012946365, 0.05, -35.05582479928958, 3.9575807058004187, 0.05, -35.253356070841065, 3.950625431029635, 0.05, -35.450542726621265, 3.9437331156039606, 0.05, -35.64738785973429, 3.936902662260507, 0.05, -35.84389450930525, 3.9301329914192293, 0.05, -36.04006566289223, 3.9234230717396725, 0.05, -36.23590425626725, 3.916771867500349, 0.05, -36.43141317254856, 3.910178325626293, 0.05, -36.626595244367, 3.90364143636883, 0.05, -36.82145325359981, 3.8971601846562436, 0.05, -37.01598993040188, 3.89073353604137, 0.05, -37.21020795991521, 3.8843605902666214, 0.05, -37.40410997383808, 3.8780402784574655, 0.05, -37.59769855699808, 3.8717716632000103, 0.05, -37.79097624748602, 3.8655538097587137, 0.05, -37.98394553503474, 3.8593857509744383, 0.05, -38.17660886182193, 3.853266535743841, 0.05, -38.368968624237205, 3.847195248305489, 0.05, -38.561027175150436, 3.8411710182645864, 0.05, -38.75278681638273, 3.835192824645897, 0.05, -38.94424981145823, 3.829259901509927, 0.05, -39.135418375707545, 3.8233712849863664, 0.05, -39.326294680942176, 3.817526104692628, 0.05, -39.51688085588472, 3.811723498850879, 0.05, -39.70717898659406, 3.805962614186802, 0.05, -39.897191116885615, 3.800242605831171, 0.05, -40.08691924860348, 3.7945626343573178, 0.05, -40.27636533904438, 3.7889218088180012, 0.05, -40.465531309850924, 3.783319416130784, 0.05, -40.654419036626976, 3.777754535521097, 0.05, -40.84303035773789, 3.772226422218248, 0.05, -41.0313670711146, 3.7667342675342357, 0.05, -41.2194309347074, 3.7612772718558682, 0.05, -41.40722366758266, 3.7558546575053717, 0.05, -41.594746950289036, 3.7504656541273875, 0.05, -41.782002425217414, 3.7451094985675186, 0.05, -41.96899169521073, 3.7397853998663866, 0.05, -42.15571632836628, 3.734492663110951, 0.05, -42.34217785379671, 3.729230508608602, 0.05, -42.52837776400679, 3.7239982042015622, 0.05, -42.71431751487483, 3.7187950173607422, 0.05, -42.899998527242225, 3.7136202473478783, 0.05, -43.08542218499756, 3.7084731551067054, 0.05, -43.27058983648768, 3.703353029802431, 0.05, -43.45550279546202, 3.6982591794867017, 0.05, -43.640162340948955, 3.6931909097386932, 0.05, -43.824569716701404, 3.6881475150489686, 0.05, -44.00872613285285, 3.683128323028845, 0.05, -44.192632765642145, 3.6781326557858645, 0.05, -44.37629075757084, 3.6731598385739406, 0.05, -44.55970121681352, 3.6682091848536085, 0.05, -44.742865219400464, 3.6632800517388633, 0.05, -44.92578380856872, 3.6583717833650686, 0.05, -45.10845799378539, 3.6534837043335555, 0.05, -45.29088875344168, 3.6486151931257087, 0.05, -45.47307703331593, 3.643765597485114, 0.05, -45.65502374613445, 3.6389342563702414, 0.05, -45.83672977484622, 3.634120574235483, 0.05, -46.018195969789254, 3.6293238988606724, 0.05, -46.199423150046954, 3.6245436051539963, 0.05, -46.38041210363772, 3.6197790718153215, 0.05, -46.5611635875447, 3.6150296781395976, 0.05, -46.74167832847272, 3.6102948185605137, 0.05, -46.92195702230747, 3.605573876694813, 0.05, -47.10200033448515, 3.600866243553652, 0.05, -47.281808900179946, 3.596171313895986, 0.05, -47.461383324736815, 3.5914884911374316, 0.05, -47.64072418347185, 3.586817174700774, 0.05, -47.81983202191444, 3.5821567688517324, 0.05, -47.99870735593714, 3.577506680454015, 0.05, -48.177350671666375, 3.572866314584612, 0.05, -48.3557624259716, 3.5682350861044085, 0.05, -48.53394304676226, 3.5636124158131937, 0.05, -48.71189293241012, 3.5589977129572317, 0.05, -48.889612451851754, 3.5543903888325534, 0.05, -49.06710194587008, 3.5497898803664505, 0.05, -49.24436172567269, 3.545195596052275, 0.05, -49.42139207369773, 3.540606960500888, 0.05, -49.59819324397587, 3.536023405562803, 0.05, -49.77476546120114, 3.5314443445054597, 0.05, -49.95110892205958, 3.5268692171687537, 0.05, -50.12722379413772, 3.5222974415628228, 0.05, -50.30311021670264, 3.5177284512984066, 0.05, -50.478768300379535, 3.5131616735378826, 0.05, -50.6541981272897, 3.508596538203393, 0.05, -50.82939975109288, 3.504032476063527, 0.05, -51.00437319693221, 3.4994689167866015, 0.05, -51.17911846148059, 3.4949052909677194, 0.05, -51.35363551299046, 3.490341030197322, 0.05, -51.52792429108349, 3.4857755618605615, 0.05, -51.70198470715429, 3.4812083214160703, 0.05, -51.87581664369713, 3.476638730856854, 0.05, -52.04941995507883, 3.4720662276340506, 0.05, -52.22279446669322, 3.467490232287772, 0.05, -52.39593997557241, 3.46291017758371, 0.05, -52.56885625002819, 3.458325489115584, 0.05, -52.7415430293624, 3.4537355866841, 0.05, -52.91400002475577, 3.449139907867526, 0.05, -53.08622691768959, 3.4445378586763544, 0.05, -53.258223361075466, 3.439928867717575, 0.05, -53.429988979292254, 3.4353123643358363, 0.05, -53.601523366665916, 3.430687747473168, 0.05, -53.77282608877404, 3.426054442162422, 0.05, -53.94389668200931, 3.421411864705444, 0.05, -54.11473465337026, 3.4167594272190884, 0.05, -54.285339479822966, 3.4120965290540233, 0.05, -54.455710608960935, 3.4074225827593985, 0.05, -54.62584745856238, 3.4027369920289656, 0.05, -54.79574941644637, 3.398039157679802, 0.05, -54.96541584032104, 3.3933284774934056, 0.05, -55.13484605762436, 3.388604346066373, 0.05, -55.304039365357106, 3.3838661546549846, 0.05, -55.47299502990802, 3.379113291018231, 0.05, -55.64171228687127, 3.374345139265001, 0.05, -55.81019034085608, 3.369561079696267, 0.05, -55.978428365598496, 3.3647604948483276, 0.05, -56.146425503563606, 3.3599427593021693, 0.05, -56.3141808646952, 3.3551072226320104, 0.05, -56.48169352817899, 3.3502532696757212, 0.05, -56.64896254123819, 3.345380261184068, 0.05, -56.815986917784066, 3.3404875309175632, 0.05, -56.982765640867974, 3.335574461678226, 0.05, -57.14929765946366, 3.3306403719137787, 0.05, -57.315581889841624, 3.325684607559253, 0.05, -57.48161721633507, 3.3207065298687986, 0.05, -57.647402488228636, 3.3157054378713777, 0.05, -57.81293652155145, 3.3106806664562805, 0.05, -57.97821809848373, 3.305631538645546, 0.05, -58.14324596682744, 3.3005573668742905, 0.05, -58.308018839696395, 3.2954574573789697, 0.05, -58.47253539519783, 3.290331110028656, 0.05, -58.63679427682464, 3.285177632536152, 0.05, -58.80079409202025, 3.2799963039122204, 0.05, -58.96453341130404, 3.2747863856759065, 0.05, -59.12801077168891, 3.2695472076974754, 0.05, -59.29122467004151, 3.2642779670518838, 0.05, -59.45417357040564, 3.2589780072826935, 0.05, -59.61685589588635, 3.2536465096142186, 0.05, -59.77927003368568, 3.2482827559864447, 0.05, -59.94141433300161, 3.24288598631862, 0.05, -60.103287104518074, 3.2374554303292284, 0.05, -60.26488661999549, 3.2319903095482503, 0.05, -60.42621111185274, 3.226489837145077, 0.05, -60.58725877280288, 3.2209532190029493, 0.05, -60.74802775784163, 3.2153797007750504, 0.05, -60.90851617688106, 3.20976838078853, 0.05, -61.06872210456717, 3.2041185537223518, 0.05, -61.228643569438795, 3.1984292974324418, 0.05, -61.38827856090021, 3.1926998292283226, 0.05, -61.54762502601478, 3.186929302291386, 0.05, -61.70668086902298, 3.1811168601640283, 0.05, -61.86544395085331, 3.1752616366066198, 0.05, -62.0239120886251, 3.1693627554358197, 0.05, -62.18208305619029, 3.163419351303615, 0.05, -62.339954583223374, 3.1574305406617333, 0.05, -62.49752435303124, 3.1513953961572643, 0.05, -62.65479000404988, 3.1453130203728263, 0.05, -62.81174912952596, 3.139182509521522, 0.05, -62.96839927593178, 3.1330029281164378, 0.05, -63.12473794242047, 3.1267733297736586, 0.05, -63.28076258027538, 3.120492757098298, 0.05, -63.436470592353864, 3.1141602415696634, 0.05, -63.59185933639401, 3.1077748808029417, 0.05, -63.746926115914796, 3.101335590415809, 0.05, -63.90166818839656, 3.0948414496352976, 0.05, -64.05608276078958, 3.0882914478602688, 0.05, -64.21016698893406, 3.0816845628895386, 0.05, -64.36391797697668, 3.0750197608523213, 0.05, -64.5173327767843, 3.0682959961522993, 0.05, -64.670408390153, 3.061512267373976, 0.05, -64.82314176317746, 3.0546674604893007, 0.05, -64.97552979192149, 3.0477605748806296, 0.05, -65.12756931559261, 3.0407904734225326, 0.05, -65.2792571201554, 3.03375609125609, 0.05, -65.43058993703858, 3.0266563376633986, 0.05, -65.58156443938574, 3.019490046943426, 0.05, -65.73217724867808, 3.012256185846916, 0.05, -65.88242492531616, 3.00495353276145, 0.05, -66.03230397522418, 2.9975809981605526, 0.05, -66.1818108459068, 2.990137413652356, 0.05, -66.33094192587531, 2.9826215993702596, 0.05, -66.47969354619026, 2.975032406299042, 0.05, -66.62806197721801, 2.9673686205549124, 0.05, -66.7760434314974, 2.9596290855876815, 0.05, -66.92363405867583, 2.9518125435685665, 0.05, -67.07082994893497, 2.9439178051828745, 0.05, -67.21762713298588, 2.9359436810180783, 0.05, -67.36402157605276, 2.92788886133774, 0.05, -67.510009185183, 2.9197521826045874, 0.05, -67.65558580176521, 2.911532331644331, 0.05, -67.80074720596521, 2.903228083999937, 0.05, -67.94548911367694, 2.894838154234617, 0.05, -68.08980718004908, 2.8863613274426396, 0.05, -68.23369699090446, 2.8777962171078144, 0.05, -68.37715407245847, 2.869141631079995, 0.05, -68.52017388532889, 2.86039625740846, 0.05, -68.66275182424108, 2.8515587782438914, 0.05, -68.80488321776966, 2.8426278705713237, 0.05, -68.94656333367242, 2.8336023180551417, 0.05, -69.08778736964204, 2.8244807193926467, 0.05, -69.22855046050802, 2.8152618173195663, 0.05, -69.3688476744256, 2.8059442783516166, 0.05, -69.50867401743433, 2.796526860174678, 0.05, -69.648024424426, 2.7870081398332247, 0.05, -69.7868937695421, 2.7773869023221, 0.05, -69.92527686047723, 2.7676618187023885, 0.05, -70.06316843865626, 2.7578315635806376, 0.05, -70.20056318377094, 2.7478949022934964, 0.05, -70.33745570791612, 2.7378504829036263, 0.05, -70.47384056180508, 2.7276970777791663, 0.05, -70.6097122313689, 2.717433391276424, 0.05, -70.74506514068301, 2.707058186282106, 0.05, -70.879893650565, 2.6965701976397636, 0.05, -71.01419206276786, 2.685968244057422, 0.05, -71.14795461705697, 2.6752510857822043, 0.05, -71.28117549214235, 2.664417501707602, 0.05, -71.41384881106636, 2.6534663784802537, 0.05, -71.54596863775555, 2.6423965337839506, 0.05, -71.67752898113103, 2.6312068675096616, 0.05, -71.80852379454963, 2.6198962683719915, 0.05, -71.93894698126545, 2.608463734316384, 0.05, -72.06879238926062, 2.59690815990346, 0.05, -72.1980538187626, 2.5852285900396246, 0.05, -72.32672502411889, 2.573424107125787, 0.05, -72.4547997107843, 2.561493733308323, 0.05, -72.58227154567793, 2.5494366978724656, 0.05, -72.70913415150149, 2.5372521164713002, 0.05, -72.83538111533103, 2.5249392765908696, 0.05, -72.96100598665709, 2.51249742652103, 0.05, -73.08600228587291, 2.4999259843164934, 0.05, -73.21036350377084, 2.487224357958614, 0.05, -73.3340831041439, 2.4743920074612435, 0.05, -73.45715453299208, 2.4614285769634705, 0.05, -73.57957121458999, 2.4483336319582807, 0.05, -73.70132656161238, 2.4351069404476067, 0.05, -73.8224139795527, 2.4217483588066298, 0.05, -73.94282686546484, 2.408257718242541, 0.05, -74.0625586205843, 2.3946351023891808, 0.05, -74.18160265012895, 2.3808805908929767, 0.05, -74.29995237054348, 2.36699440829061, 0.05, -74.41760121619609, 2.3529769130521494, 0.05, -74.53454264516724, 2.338828579422892, 0.05, -74.65077014336593, 2.3245499639739524, 0.05, -74.76627723352404, 2.3101418031620846, 0.05, -74.88105748267583, 2.2956049830358047, 0.05, -74.99510450850538, 2.2809405165909746, 0.05, -75.10841198555258, 2.2661495409440153, 0.05, -75.22097365846861, 2.2512334583205225, 0.05, -75.33278334314544, 2.236193693536482, 0.05, -75.4438349410806, 2.2210319587030525, 0.05, -75.55412244937985, 2.2057501659849414, 0.05, -75.66363996309859, 2.1903502743747114, 0.05, -75.77238169352036, 2.1748346084353045, 0.05, -75.8803419734615, 2.1592055988227967, 0.05, -75.98751527164235, 2.143465963617046, 0.05, -76.09389619893147, 2.1276185457825374, 0.05, -76.19947952469498, 2.111666515269954, 0.05, -76.3042601856097, 2.0956132182945133, 0.05, -76.40823330176694, 2.079462323144678, 0.05, -76.51139418327777, 2.0632176302165215, 0.05, -76.61373834858578, 2.046883306160268, 0.05, -76.71526153790151, 2.0304637863144968, 0.05, -76.81595972200878, 2.0139636821453757, 0.05, -76.91582912306949, 1.9973880212139417, 0.05, -77.01486622487114, 1.980742036032991, 0.05, -77.11306778789206, 1.9640312604185217, 0.05, -77.21043086859248, 1.9472616140082935, 0.05, -77.30695282861906, 1.930439200531489, 0.05, -77.4026313554431, 1.9135705364807905, 0.05, -77.49746447844377, 1.8966624600132336, 0.05, -77.59145058035678, 1.879722038260198, 0.05, -77.6845884199452, 1.8627567917684984, 0.05, -77.77687714495805, 1.8457745002569588, 0.05, -77.86831630907493, 1.8287832823374417, 0.05, -77.9589058909463, 1.8117916374273313, 0.05, -78.04864630830212, 1.7948083471164533, 0.05, -78.13753843731793, 1.7778425803160447, 0.05, -78.22558362791374, 1.7609038119162297, 0.05, -78.31278372159812, 1.7440018736876743, 0.05, -78.39914106726162, 1.7271469132701383, 0.05, -78.48465853891821, 1.7103494331316194, 0.05, -78.56933954985529, 1.6936202187414358, 0.05, -78.65318807103257, 1.6769704235456562, 0.05, -78.73620864401026, 1.6604114595537438, 0.05, -78.8184063980598, 1.6439550809910055, 0.05, -78.89978706341597, 1.6276133071232326, 0.05, -78.98035698601676, 1.6113984520158144, 0.05, -79.06012314001113, 1.5953230798872937, 0.05, -79.13909314029922, 1.5794000057620143, 0.05, -79.2172752542314, 1.5636422786433963, 0.05, -79.29467841351594, 1.548063185690976, 0.05, -79.37131222116949, 1.5326761530709536, 0.05, -79.44718696296947, 1.5174948359996598, 0.05, -79.52231361375664, 1.5025330157433472, 0.05, -79.59670384349894, 1.487804594846036, 0.05, -79.67037002281859, 1.4733235863929723, 0.05, -79.74332522625038, 1.4591040686356564, 0.05, -79.81558323454713, 1.4451601659351794, 0.05, -79.8871585354067, 1.4315060171913963, 0.05, -79.95806632283254, 1.418155748516732, 0.05, -80.02832249375034, 1.405123418355885, 0.05, -80.09794364477531, 1.3924230204995076, 0.05, -80.16694706556989, 1.3800684158914762, 0.05, -80.2353507315512, 1.3680733196260835, 0.05, -80.30317329404954, 1.356451249966883, 0.05, -80.37043406917327, 1.345215502474654, 0.05, -80.43715302448635, 1.3343791062615353, 0.05, -80.50335076390081, 1.3239547882892047, 0.05, -80.56904851087553, 1.3139549394944212, 0.05, -80.63426808941702, 1.3043915708296556, 0.05, -80.69903190371096, 1.2952762858788187, 0.05, -80.76336291522, 1.2866202301806884, 0.05, -80.82728461917876, 1.2784340791751703, 0.05, -80.89082101796608, 1.2707279757465342, 0.05, -80.95399659368339, 1.263511514346103, 0.05, -81.01683627916105, 1.2567937095534103, 0.05, -81.07936542696955, 1.2505829561697657, 0.05, -81.14160977739095, 1.2448870084281003, 0.05, -81.20359542509954, 1.2397129541716712, 0.05, -81.26534878362469, 1.2350671705029708, 0.05, -81.3268965506197, 1.2309553399000923, 0.05, -81.3882656696327, 1.2273823802602823, 0.05, -81.4494832934864, 1.2243524770737366, 0.05, -81.51057674516545, 1.2218690335811795, 0.05, -81.57157347956478, 1.2199346879864543, 0.05, -81.63250104178259, 1.2185512443562851, 0.05, -81.69338702996353, 1.2177197636189503, 0.05, -81.754259053252, 1.2174404657693643, 0.05, -81.81514469178508, 1.2177127706616913, 0.05, -81.87607145829618, 1.2185353302219517, 0.05, -81.93706675577535, 1.2199059495834248, 0.05, -81.99815784039102, 1.2218216923132443, 0.05, -82.05937178263704, 1.224278844920487, 0.05, -82.1207354267207, 1.227272881673003, 0.05, -82.18227535569694, 1.2307985795249494, 0.05, -82.24401785604833, 1.2348500070277983, 0.05, -82.30598887819937, 1.2394204430209401, 0.05, -82.36821400671465, 1.244502570305615, 0.05, -82.43071842684667, 1.2500884026401609, 0.05, -82.49352688996866, 1.2561692624397995, 0.05, -82.55666368714995, 1.2627359436258159, 0.05, -82.62015262106063, 1.2697786782135492, 0.05, -82.68401697608371, 1.2772871004616042, 0.05, -82.74827949587196, 1.2852503957649988, 0.05, -82.81296235935733, 1.2936572697074882, 0.05, -82.87808716051431, 1.3024960231395735, 0.05, -82.94367488480886, 1.3117544858910157, 0.05, -83.00974589596161, 1.321420223055273, 0.05, -83.07631992019512, 1.3314804846700985, 0.05, -83.14341602741912, 1.3419221444799978, 0.05, -83.2110526226068, 1.3527319037537167, 0.05, -83.2792474358154, 1.3638962641720314, 0.05, -83.34801750969035, 1.3754014774989816, 0.05, -83.41737919955324, 1.387233797257638, 0.05, -83.48734815877826, 1.3993791845005772, 0.05, -83.55793934643116, 1.4118237530578774, 0.05, -83.62916701616271, 1.4245533946311588, 0.05, -83.70104472017715, 1.4375540802889222, 0.05, -83.77358531307219, 1.450811857900854, 0.05, -83.84680094774895, 1.4643126935352695, 0.05, -83.9207030875124, 1.4780427952690334, 0.05, -83.99530250691008, 1.4919883879537836, 0.05, -84.07060929654348, 1.5061357926681518, 0.05, -84.14663287598836, 1.5204715888974978, 0.05, -84.22338200420839, 1.5349825644006432, 0.05, -84.30086478177849, 1.549655551401858, 0.05, -84.3790886679038, 1.5644777225063544, 0.05, -84.45806049149625, 1.5794364718491267, 0.05, -84.53778646224443, 1.5945194149634583, 0.05, -84.61827218506855, 1.609714456482569, 0.05, -84.69952267565705, 1.6250098117699658, 0.05, -84.78154236924544, 1.6403938717677307, 0.05, -84.8643351437964, 1.6558554910190706, 0.05, -84.94790433118176, 1.6713837477071896, 0.05, -85.03225272804487, 1.6869679372620872, 0.05, -85.11738262497914, 1.7025979386856431, 0.05, -85.20329580946515, 1.718263689719954, 0.05, -85.28999358759185, 1.7339555625340144, 0.05, -85.37747680587088, 1.749664365580691, 0.05, -85.46574585755528, 1.765381033687892, 0.05, -85.55480070819816, 1.781097012857549, 0.05, -85.6446409066894, 1.796803969824912, 0.05, -85.73526560771616, 1.8124940205351037, 0.05, -85.82667357792647, 1.828159404206199, 0.05, -85.91886322250205, 1.843792891511724, 0.05, -86.01183260292214, 1.8593876084018064, 0.05, -86.10557943932797, 1.8749367281164175, 0.05, -86.20010114091288, 1.8904340316981976, 0.05, -86.29539480917038, 1.9058733651500108, 0.05, -86.3914572644502, 1.921249105596502, 0.05, -86.4882850517382, 1.9365557457601856, 0.05, -86.58587446272057, 1.951788219647352, 0.05, -86.68422153843979, 1.9669415143844389, 0.05, -86.78332210029924, 1.982011237189227, 0.05, -86.88317174390443, 1.9969928721035604, 0.05, -86.98376587305938, 2.0118825830992044, 0.05, -87.08509969329991, 2.0266764048104244, 0.05, -87.18716823601294, 2.041370854260528, 0.05, -87.28996636397171, 2.055962559175569, 0.05, -87.39348879146264, 2.07044854981864, 0.05, -87.49773008459967, 2.0848258627405225, 0.05, -87.60268468040749, 2.0990919161564534, 0.05, -87.70834689156267, 2.113244223103433, 0.05, -87.81471092561004, 2.1272806809473463, 0.05, -87.92177087557661, 2.1411989993315115, 0.05, -88.02952075034187, 2.1549974953052753, 0.05, -88.13795447983578, 2.1686745898781994, 0.05, -88.24706591130479, 2.18222862938007, 0.05, -88.35684882184457, 2.195658210795527, 0.05, -88.46729694079612, 2.2089623790310555, 0.05, -88.57840392885242, 2.2221397611260882, 0.05, -88.69016342157873, 2.235189854526271, 0.05, -88.8025689979294, 2.2481115270133354, 0.05, -88.91561422309857, 2.260904503383428, 0.05, -89.0292926185475, 2.2735679089785137, 0.05, -89.14359770500377, 2.2861017291253645, 0.05, -89.25852297461661, 2.2985053922568204, 0.05, -89.37406191935969, 2.310778894861477, 0.05, -89.49020802712552, 2.3229221553164527, 0.05, -89.60695477860982, 2.334935029685989, 0.05, -89.72429567141145, 2.346817856032637, 0.05, -89.84222420828107, 2.3585707373921525, 0.05, -89.96073390140117, 2.3701938624019596, 0.05, -90.07981829142743, 2.381687800525186, 0.05, -90.19947093364335, 2.393052844318503, 0.05, -90.31968540313494, 2.4042893898318525, 0.05, -90.44045531401575, 2.4153982176161546, 0.05, -90.56177430228011, 2.426379765287251, 0.05, -90.68363603451729, 2.437234644743431, 0.05, -90.806034229868, 2.4479639070142722, 0.05, -90.9289626250152, 2.4585679029439134, 0.05, -91.05241501465905, 2.469047792876952, 0.05, -91.17638522136139, 2.4794041340468405, 0.05, -91.30086712584526, 2.4896380896774803, 0.05, -91.42585464029469, 2.4997502889887326, 0.05, -91.55134174163278, 2.5097420267617814, 0.05, -91.67732243930811, 2.519613953506551, 0.05, -91.80379079842605, 2.529367182358607, 0.05, -91.93074094855123, 2.5390030025035992, 0.05, -92.05816706221921, 2.548522273359465, 0.05, -92.1860633549819, 2.557925855253693, 0.05, -92.31442411752353, 2.5672152508326316, 0.05, -92.44324368467453, 2.576391343020048, 0.05, -92.57251645014254, 2.5854553093604635, 0.05, -92.70223686051328, 2.594408207414675, 0.05, -92.83239943168772, 2.6032514234888047, 0.05, -92.96299872704893, 2.6119859072241716, 0.05, -93.09402937162663, 2.6206128915541003, 0.05, -93.22548604257638, 2.629133418994972, 0.05, -93.35736349499905, 2.6375490484534696, 0.05, -93.48965651853364, 2.645860470691591, 0.05, -93.62235998193253, 2.654069267977942, 0.05, -93.75546880242034, 2.6621764097562095, 0.05, -93.8889779640284, 2.6701832321612495, 0.05, -94.02288249965582, 2.6780907125483733, 0.05, -94.15717751516044, 2.6859003100925194, 0.05, -94.2918581563059, 2.6936128229091914, 0.05, -94.42691965419641, 2.701229957810064, 0.05, -94.5623572819955, 2.708752555981905, 0.05, -94.6981663659234, 2.7161816785578674, 0.05, -94.83434230762383, 2.7235188340086314, 0.05, -94.97088055671419, 2.730764981807209, 0.05, -95.1077766205467, 2.73792127665022, 0.05, -95.24502605760439, 2.7449887411536658, 0.05, -95.38262450468832, 2.751968941678662, 0.05, -95.52056763330333, 2.7588625723000737, 0.05, -95.65885118117068, 2.765670957346801, 0.05, -95.79747094385694, 2.7723952537252825, 0.05, -95.93642276529815, 2.7790364288241265, 0.05, -96.07570253979351, 2.7855954899074002, 0.05, -96.21530624025188, 2.7920740091671874, 0.05, -96.3552298657685, 2.798472510332273, 0.05, -96.49546637223246, 2.804730129279288, 0.05, -96.6360036961209, 2.810746477768641, 0.05, -96.77682787347453, 2.816483547072775, 0.05, -96.91792487801976, 2.821940090904622, 0.05, -97.0592806857115, 2.8271161538348815, 0.05, -97.20088122546939, 2.832010795157726, 0.05, -97.34271239161755, 2.836623322963419, 0.05, -97.48476007442625, 2.8409536561739848, 0.05, -97.62701012920499, 2.845001095574738, 0.05, -97.76944838922182, 2.848765200336723, 0.05, -97.91206066182926, 2.852245452148648, 0.05, -98.05483276264563, 2.8554420163273178, 0.05, -98.19775046291092, 2.858354005305802, 0.05, -98.3407995239374, 2.8609812205298892, 0.05, -98.483965715374, 2.863323828731792, 0.05, -98.62723477071461, 2.8653811068121926, 0.05, -98.77059242541277, 2.8671530939633736, 0.05, -98.91402439896214, 2.8686394709874308, 0.05, -99.05751641516967, 2.869840324150568, 0.05, -99.20105417023731, 2.870755101352882, 0.05, -99.34462337196447, 2.8713840345433304, 0.05, -99.48820972886692, 2.8717271380489593, 0.05, -99.63179892345144, 2.871783891690434, 0.05, -99.77537666752026, 2.871554881376296, 0.05, -99.91892863619013, 2.8710393733972643, 0.05, -100.0624405330862, 2.8702379379213947, 0.05, -100.20589805368854, 2.869150412046675, 0.05, -100.34928689312915, 2.86777678881207, 0.05, -100.49259275111608, 2.866117159738643, 0.05, -100.63580132331552, 2.864171443988693, 0.05, -100.77889832866214, 2.8619401069324093, 0.05, -100.9218694720772, 2.8594228683012743, 0.05, -101.06470047510668, 2.8566200605895267, 0.05, -101.20737705984573, 2.8535316947809672, 0.05, -101.34988496264334, 2.8501580559524435, 0.05, -101.49220991612094, 2.8464990695519945, 0.05, -101.63433768162452, 2.842555310071433, 0.05, -101.77625399864826, 2.838326340474711, 0.05, -101.9179446404459, 2.8338128359528745, 0.05, -102.05939539220562, 2.8290150351944003, 0.05, -102.20059203661751, 2.8239328882379233, 0.05, -102.34152037111205, 2.8185666898910187, 0.05, -102.48216620783889, 2.812916734536733, 0.05, -102.6225153683608, 2.806983210438153, 0.05, -102.76255368807982, 2.800766394380568, 0.05, -102.90226701485076, 2.794266535418929, 0.05, -103.04164120775187, 2.7874838580221515, 0.05, -103.18066214378676, 2.7804187206979893, 0.05, -103.31931571370417, 2.7730713983480486, 0.05, -103.45758781432878, 2.765442012492155, 0.05, -103.59546436082026, 2.757530929829704, 0.05, -103.73293129362648, 2.7493386561244497, 0.05, -103.86997456043892, 2.7408653362486777, 0.05, -104.00658011415423, 2.7321110743063453, 0.05, -104.14273393437911, 2.723076404497656, 0.05, -104.27842202261134, 2.7137617646446346, 0.05, -104.41363038422298, 2.704167232232993, 0.05, -104.54834504422442, 2.6942932000287967, 0.05, -104.68255205441501, 2.6841402038118876, 0.05, -104.81623745765373, 2.673708064774182, 0.05, -104.94938733759625, 2.66299759885038, 0.05, -105.08198779615115, 2.65200917109807, 0.05, -105.21402492517066, 2.640742580390064, 0.05, -105.3454848740954, 2.6291989784948724, 0.05, -105.47635376652858, 2.617377848663398, 0.05, -105.60661778483754, 2.6052803661793686, 0.05, -105.73626309341202, 2.5929061714894988, 0.05, -105.86527589162714, 2.5802559643022924, 0.05, -105.9936424056125, 2.5673302797074897, 0.05, -106.12134886422498, 2.5541291722494543, 0.05, -106.24838151831482, 2.5406530817964876, 0.05, -106.37472663327951, 2.5269022992937704, 0.05, -106.50037050664675, 2.5128774673446523, 0.05, -106.62529944201118, 2.4985787072886483, 0.05, -106.74949976122947, 2.484006384365837, 0.05, -106.87295781197501, 2.4691610149107346, 0.05, -106.99565995663426, 2.4540428931847527, 0.05, -107.11759257133993, 2.4386522941134454, 0.05, -107.23874206068312, 2.4229897868638717, 0.05, -107.35909483853507, 2.407055557038843, 0.05, -107.47863735148351, 2.390850258968925, 0.05, -107.5973560395235, 2.3743737607996764, 0.05, -107.71523739305651, 2.3576270706601963, 0.05, -107.83226788946459, 2.340609928161559, 0.05, -107.94843405857794, 2.3233233822672315, 0.05, -108.06372242534492, 2.3057673353396404, 0.05, -108.17811954200232, 2.2879423331479596, 0.05, -108.29161196905163, 2.2698485409860396, 0.05, -108.40418631372026, 2.251486893372663, 0.05, -108.51582916720807, 2.232857069756179, 0.05, -108.62652716943072, 2.2139600444530534, 0.05, -108.73626695976645, 2.1947958067146334, 0.05, -108.84503521082249, 2.175365021120699, 0.05, -108.9528186034107, 2.155667851764277, 0.05, -109.05960384558273, 2.1357048434403483, 0.05, -109.16537765225286, 2.115476133402498, 0.05, -109.270126782925, 2.094982613443007, 0.05, -109.37383800137592, 2.0742243690180846, 0.05, -109.47649807267503, 2.0532014259822535, 0.05, -109.57809381942019, 2.031914934903172, 0.05, -109.67861554878677, 2.010434587331591, 0.05, -109.77805924045073, 1.9888738332793443, 0.05, -109.87642302599654, 1.9672757109162353, 0.05, -109.97370509465892, 1.9456413732475057, 0.05, -110.0699036536444, 1.9239711797094974, 0.05, -110.16501696727286, 1.9022662725691657, 0.05, -110.25904331910479, 1.8805270366386653, 0.05, -110.35198105052457, 1.8587546283956506, 0.05, -110.4438285064364, 1.8369491182366282, 0.05, -110.53458410629372, 1.8151119971463554, 0.05, -110.62424626555827, 1.7932431852909265, 0.05, -110.7128134662396, 1.7713440136265128, 0.05, -110.80028420502698, 1.7494147757477736, 0.05, -110.88665700465874, 1.7274559926352089, 0.05, -110.97193044171733, 1.705468741171895, 0.05, -111.05610309492737, 1.6834530642006658, 0.05, -111.13917360250949, 1.6614101516425297, 0.05, -111.22114061882048, 1.6393403262200539, 0.05, -111.30200281907794, 1.6172440051491483, 0.05, -111.38175891129418, 1.5951218443247355, 0.05, -111.46040765252235, 1.5729748245634045, 0.05, -111.5379477997192, 1.5508029439371507, 0.05, -111.61437815426093, 1.528607090834563, 0.05, -111.68969753163053, 1.5063875473919697, 0.05, -111.76390479327114, 1.4841452328120546, 0.05, -111.8369987934931, 1.4618800044390805, 0.05, -111.90897843654294, 1.4395928609968525, 0.05, -111.9798426573311, 1.4172844157634468, 0.05, -112.04959040569798, 1.3949549673376487, 0.05, -112.11822063529742, 1.3726045919887475, 0.05, -112.18573235997064, 1.3502344934645316, 0.05, -112.25212458996008, 1.3278445997887307, 0.05, -112.3173963700689, 1.3054356021765334, 0.05, -112.38154676319901, 1.2830078626021157, 0.05, -112.44457486447955, 1.2605620256107697, 0.05, -112.50647976264317, 1.2380979632722489, 0.05, -112.56726061015489, 1.215616950234584, 0.05, -112.62691654897787, 1.1931187764596825, 0.05, -112.68544674920203, 1.1706040044832244, 0.05, -112.74285040625593, 1.148073141077971, 0.05, -112.79913027214862, 1.1255973178537915, 0.05, -112.85429482810427, 1.1032911191131174, 0.05, -112.90835473519184, 1.081198141751234, 0.05, -112.9613206768957, 1.0593188340772544, 0.05, -113.0132033830925, 1.0376541239362174, 0.05, -113.06401359983983, 1.0162043349465903, 0.05, -113.11376208182573, 0.9949696397179545, 0.05, -113.16245963066405, 0.9739509767665162, 0.05, -113.21011707113915, 0.9531488095021506, 0.05, -113.25674524357882, 0.9325634487934362, 0.05, -113.30235501112023, 0.9121953508280602, 0.05, -113.34695725661793, 0.8920449099540859, 0.05, -113.3905628991682, 0.8721128510054273, 0.05, -113.43318286696471, 0.852399355930116, 0.05, -113.47482810272116, 0.832904715128885, 0.05, -113.51550958585587, 0.8136296626941389, 0.05, -113.5552382987142, 0.7945742571666243, 0.05, -113.5940252515029, 0.7757390557738872, 0.05, -113.63188147456941, 0.7571244613301595, 0.05, -113.66881799901245, 0.7387304888605939, 0.05, -113.70484590164672, 0.7205580526853476, 0.05, -113.73997623469639, 0.702606660993277, 0.05, -113.7742201139443, 0.6848775849582076, 0.05, -113.80758863507656, 0.667370422645185, 0.05, -113.84009292827943, 0.6500858640574827, 0.05, -113.87174411798293, 0.6330237940699394, 0.05, -113.90255337664216, 0.6161851731845441, 0.05, -113.93253184671333, 0.5995694014234862, 0.05, -113.96169070898635, 0.5831772454605385, 0.05, -113.9900411753926, 0.5670093281249688, 0.05, -114.01759442379105, 0.5510649679688249, 0.05, -114.04436167357143, 0.5353449956075353, 0.05, -114.07035416783904, 0.5198498853523337, 0.05, -114.09558312813661, 0.5045792059514262, 0.05, -114.12005980894641, 0.4895336161959756, 0.05, -114.1437954675172, 0.4747131714157545, 0.05, -114.16680137422564, 0.4601181341690764, 0.05, -114.18908881159102, 0.4457487473075146, 0.05, -114.21066905378929, 0.4316048439653522, 0.05, -114.23155341157688, 0.4176871557517584, 0.05, -114.25175318930897, 0.40399555464165005, 0.05, -114.27127969301843, 0.3905300741890403, 0.05, -114.2901442548644, 0.3772912369196003, 0.05, -114.3083581956577, 0.3642788158659104, 0.05, -114.32593286286944, 0.3514933442346183, 0.05, -114.34287959125365, 0.3389345676843815, 0.05, -114.35920974151168, 0.32660300516062696, 0.05, -114.37493467001075, 0.3144985699813283, 0.05, -114.39006574365234, 0.3026214728319823, 0.05, -114.4046143288231, 0.2909717034151872, 0.05, -114.418591803356, 0.27954949065773815, 0.05, -114.43200955315669, 0.26835499601376267, 0.05, -114.44487895869112, 0.25738811068849166, 0.05, -114.45721142859604, 0.24664939809839664, 0.05, -114.46901835294913, 0.23613848706200502, 0.05, -114.48031113108412, 0.22585556269967624, 0.05, -114.49110117862236, 0.2158009507646208, 0.05, -114.50139990498445, 0.2059745272417999, 0.05, -114.51121873169885, 0.19637653428791507, 0.05, -114.52056906858206, 0.18700673766422876, 0.05, -114.52946233914386, 0.1778654112358436, 0.05, -114.5379099796107, 0.16895280933669699, 0.05, -114.54592342632488, 0.1602689342834821, 0.05, -114.5535141023285, 0.15181352007253338, 0.05, -114.56069344547356, 0.14358686290116598, 0.05, -114.56747290408848, 0.135589172298217, 0.05, -114.57386391238273, 0.1278201658852663, 0.05, -114.57987791684882, 0.120280089321607, 0.05, -114.58552637778213, 0.11296921866633745, 0.05, -114.59082073233094, 0.10588709097625829, 0.05, -114.59577243273979, 0.09903400817696435, 0.05, -114.60039294081747, 0.09241016155356163, 0.05, -114.60469371320252, 0.08601544770114637, 0.05, -114.60868619540602, 0.07984964407013202, 0.05, -114.61238185694737, 0.07391323082696713, 0.05, -114.61579216347518, 0.0682061305561655, 0.05, -114.6189285672766, 0.06272807602848138, 0.05, -114.62180253218078, 0.057479298083568116, 0.05, -114.62442553020513, 0.05245996048695157, 0.05, -114.62680902400982, 0.047669876093617614, 0.05, -114.62896447986083, 0.04310911702009116, 0.05, -114.63090336714585, 0.03877774570042499, 0.05, -114.63263715791388, 0.03467581536046156, 0.05, -114.63417730354278, 0.030802912578072453, 0.05, -114.63553529257021, 0.027159780548451154, 0.05, -114.63672259147432, 0.02374597808232363, 0.05, -114.63775066586794, 0.020561487872277986, 0.05, -114.6386309892024, 0.017606466689207918, 0.05, -114.63937504321468, 0.014881080245634622, 0.05, -114.63999427922472, 0.012384720200722768, 0.05, -114.64050018202599, 0.010118056025343086, 0.05, -114.64090422628891, 0.008080885258390966, 0.05, -114.64121788290305, 0.006273132282881554, 0.05, -114.64145262349817, 0.004694811902472399, 0.05, -114.64161992026925, 0.003345935421716808, 0.05, -114.64173124582537, 0.0022265111224007298, 0.05, -114.64179807306219, 0.0013365447363215726, 0.05, -114.64183187505834, 6.760399231100614E-4, 0.05, -114.64184412499532, 2.449987394014842E-4, 0.05, -114.641846296101, 4.3422113563056317E-5, 0.05, -114.641846296101, 0.0, 0.05, +1.5696511274196726E-5, 1.8893022548393452E-4, 0.05, +3.695114096406378E-5, 4.2509259379734096E-4, 0.05, +7.473707861046543E-5, 7.557187529280328E-4, 0.05, +1.3377742503573547E-4, 0.0011808069285054008, 0.05, +2.187951357872895E-4, 0.0017003542150310805, 0.05, +3.345129504380503E-4, 0.002314356293015216, 0.05, +5.044020635113415E-4, 0.003397782261465826, 0.05, +0.0012019369939863405, 0.01395069860949998, 0.05, +0.0020630880398329783, 0.01722302091693275, 0.05, +0.0031050760616516473, 0.02083976043637338, 0.05, +0.004345121177472925, 0.02480090231642555, 0.05, +0.005800442542521106, 0.029106427300963623, 0.05, +0.00748825820468756, 0.03375631324332909, 0.05, +0.009425784921288182, 0.03875053433201246, 0.05, +0.011630237961572826, 0.04408906080569286, 0.05, +0.014118830895369125, 0.049771858675925956, 0.05, +0.016908775329119902, 0.05579888867501552, 0.05, +0.02001728073167343, 0.062170108051070504, 0.05, +0.023461554112077843, 0.06888546760808825, 0.05, +0.027258799783315916, 0.07594491342476144, 0.05, +0.03142621908022264, 0.08334838593813448, 0.05, +0.03598101001189771, 0.09109581863350141, 0.05, +0.04094036702486492, 0.09918714025934414, 0.05, +0.0463214805963562, 0.10762227142982556, 0.05, +0.052141536938297726, 0.11640112683883057, 0.05, +0.058417717583939544, 0.12552361291283626, 0.05, +0.06516719909027395, 0.1349896301266882, 0.05, +0.07240715256586241, 0.14479906951176935, 0.05, +0.08015474332454225, 0.15495181517359674, 0.05, +0.08842713037378813, 0.16544774098491757, 0.05, +0.0972414661124778, 0.1762867147737935, 0.05, +0.10661489572363853, 0.18746859222321458, 0.05, +0.11656455685280084, 0.1989932225832465, 0.05, +0.12710757894495409, 0.21086044184306474, 0.05, +0.13826108289708325, 0.22307007904258305, 0.05, +0.1500421804609849, 0.2356219512780325, 0.05, +0.1624679736941333, 0.2485158646629679, 0.05, +0.17555555442728643, 0.2617516146630626, 0.05, +0.18932200365250718, 0.2753289845044148, 0.05, +0.20378439095101125, 0.2892477459700817, 0.05, +0.21895977394006214, 0.3035076597810177, 0.05, +0.23486519749231752, 0.3181084710451077, 0.05, +0.2515176932542404, 0.3330499152384579, 0.05, +0.2689342787732389, 0.3483317103799703, 0.05, +0.28713195702057526, 0.3639535649467275, 0.05, +0.30612771555050183, 0.3799151705985319, 0.05, +0.32593852579231763, 0.3962162048363161, 0.05, +0.3465813422692299, 0.4128563295382451, 0.05, +0.3680731018267431, 0.42983519115026403, 0.05, +0.39043072297106934, 0.44715242288652507, 0.05, +0.4136711048761095, 0.4648076381008028, 0.05, +0.43781112645800657, 0.48280043163794173, 0.05, +0.46286764576722894, 0.5011303861844468, 0.05, +0.488857499052488, 0.5197970657051812, 0.05, +0.5157974996816668, 0.5388000125835748, 0.05, +0.5437044371131523, 0.5581387486297101, 0.05, +0.5725950764418537, 0.5778127865740285, 0.05, +0.6024861566506128, 0.597821604175182, 0.05, +0.6333943904318602, 0.6181646756249475, 0.05, +0.6653364623781226, 0.6388414389252484, 0.05, +0.698329028443779, 0.6598513213131272, 0.05, +0.7323887144334253, 0.6811937197929272, 0.05, +0.7675321154175443, 0.702868019682379, 0.05, +0.8037757937896485, 0.7248735674420828, 0.05, +0.8411362787155241, 0.7472096985175123, 0.05, +0.8796300650679693, 0.7698757270489035, 0.05, +0.9192736111934112, 0.7928709225088383, 0.05, +0.9600833385638905, 0.8161945474095866, 0.05, +1.0020756305281124, 0.8398458392844405, 0.05, +1.0452668298594305, 0.8638239866263601, 0.05, +1.0896732387065526, 0.8881281769424415, 0.05, +1.1353111162955283, 0.9127575517795147, 0.05, +1.1821966780795903, 0.9377112356812412, 0.05, +1.2303460937003816, 0.9629883124158284, 0.05, +1.2797754858710018, 0.988587843412402, 0.05, +1.3305009287058391, 1.0145088566967484, 0.05, +1.3825384460928836, 1.0407503477408895, 0.05, +1.4359040100450489, 1.067311279043308, 0.05, +1.4906135393857152, 1.0941905868133268, 0.05, +1.546682897399537, 1.1213871602764354, 0.05, +1.6041278913645434, 1.148899879300127, 0.05, +1.6629642685582025, 1.176727543873181, 0.05, +1.7232077171822033, 1.2048689724800166, 0.05, +1.7848738625816412, 1.2333229079887558, 0.05, +1.8479782661425619, 1.2620880712184162, 0.05, +1.9125364226314854, 1.29116312977847, 0.05, +1.9785637600936468, 1.320546749243229, 0.05, +2.046075635386493, 1.3502375058569178, 0.05, +2.1150873344619834, 1.3802339815098135, 0.05, +2.185614068619474, 1.4105346831498113, 0.05, +2.2576709731103723, 1.4411380898179704, 0.05, +2.331273105285892, 1.4720426435103897, 0.05, +2.406435441942172, 1.5032467331255979, 0.05, +2.4831728775250856, 1.534748711658272, 0.05, +2.5615002217947365, 1.5665468853930191, 0.05, +2.6414321975309107, 1.5986395147234824, 0.05, +2.7229834382611564, 1.631024814604916, 0.05, +2.8061684850162925, 1.6637009351027199, 0.05, +2.891001786601016, 1.6966660316944728, 0.05, +2.977489217798924, 1.7297486239581579, 0.05, +3.065628098161267, 1.762777607246855, 0.05, +3.155415684032897, 1.7957517174326, 0.05, +3.2468491652740874, 1.8286696248238061, 0.05, +3.3399256648682965, 1.8615299918841817, 0.05, +3.4346422416073166, 1.894331534780399, 0.05, +3.5309958854787187, 1.9270728774280454, 0.05, +3.6289835208389034, 1.9597527072036913, 0.05, +3.7286020043742902, 1.992369670707737, 0.05, +3.829848124518708, 2.024922402888356, 0.05, +3.932718603408274, 2.0574095777913217, 0.05, +4.037210093006639, 2.0898297919672952, 0.05, +4.143319179583356, 2.122181731534344, 0.05, +4.251042378449177, 2.15446397731642, 0.05, +4.3603761388356395, 2.186675207729243, 0.05, +4.471316839618051, 2.218814015648247, 0.05, +4.583860791970127, 2.2508790470415168, 0.05, +4.698004238984789, 2.2828689402932354, 0.05, +4.8137433529148845, 2.3147822786019066, 0.05, +4.931074240812997, 2.3466177579622522, 0.05, +5.04999293945352, 2.37837397281046, 0.05, +5.170495416569124, 2.4100495423120782, 0.05, +5.292577574411792, 2.441643156853375, 0.05, +5.416235246145411, 2.4731534346723665, 0.05, +5.541464197301372, 2.504579023119227, 0.05, +5.668260126022572, 2.5359185744239934, 0.05, +5.796618665294613, 2.5671707854408226, 0.05, +5.926535380977261, 2.598334313652958, 0.05, +6.058005773218052, 2.6294078448158222, 0.05, +6.191025276997837, 2.6603900755956915, 0.05, +6.325589262726608, 2.691279714575433, 0.05, +6.461693036890082, 2.7220754832694554, 0.05, +6.599331842747473, 2.7527761171478264, 0.05, +6.738500861080676, 2.7833803666640704, 0.05, +6.8791952109951024, 2.813886998288518, 0.05, +7.02140995077225, 2.84429479554294, 0.05, +7.165140078319721, 2.8746025509494357, 0.05, +7.310380532110801, 2.9048090758215896, 0.05, +7.457126194594527, 2.9349132496745227, 0.05, +7.605371890288256, 2.964913913874588, 0.05, +7.75510416172315, 2.994645428697874, 0.05, +7.906301321644135, 3.0239431984197087, 0.05, +8.058941693445007, 3.0528074360174453, 0.05, +8.213003624668463, 3.0812386244691385, 0.05, +8.368465481324659, 3.109237133123919, 0.05, +8.525305658265875, 3.1368035388243336, 0.05, +8.683502579161354, 3.163938417909576, 0.05, +8.843034699912886, 3.1906424150306245, 0.05, +9.003880512494993, 3.216916251642133, 0.05, +9.16601854586273, 3.2427606673547604, 0.05, +9.329427376448088, 3.2681766117071525, 0.05, +9.494085619624816, 3.293164863534564, 0.05, +9.659971944715421, 3.3177265018121114, 0.05, +9.827065070888564, 3.3418625234628667, 0.05, +9.995343770760195, 3.365573997432624, 0.05, +10.164786878081255, 3.3888621464212085, 0.05, +10.335373284163028, 3.411728121635448, 0.05, +10.50708194732715, 3.434173263282417, 0.05, +10.67989189061277, 3.4561988657124365, 0.05, +10.853782207322519, 3.477806334194978, 0.05, +11.028732063652537, 3.498997126600364, 0.05, +11.204720701581886, 3.519772758586971, 0.05, +11.381727438241958, 3.5401347332014477, 0.05, +11.5597316754451, 3.560084744062859, 0.05, +11.738712894395603, 3.579624379010045, 0.05, +11.91865066482853, 3.598755408658553, 0.05, +12.099524640519347, 3.6174795138163556, 0.05, +12.281314570164906, 3.6357985929111685, 0.05, +12.464000289335882, 3.653714383419515, 0.05, +12.647561734159572, 3.671228896473794, 0.05, +12.831978934511605, 3.688344007040653, 0.05, +13.017232015711144, 3.7050616239907677, 0.05, +13.203301209814477, 3.7213838820666636, 0.05, +13.39016684508112, 3.737312705332888, 0.05, +13.577809359113147, 3.7528502806405366, 0.05, +13.76620929066388, 3.7679986310146685, 0.05, +13.955347288391419, 3.7827599545507704, 0.05, +14.145204108981078, 3.7971364117931796, 0.05, +14.335760616644222, 3.8111301532628814, 0.05, +14.526997788288584, 3.8247434328872245, 0.05, +14.718896715043694, 3.837978535102189, 0.05, +14.911438599728328, 3.8508376936926703, 0.05, +15.10460475627713, 3.863323130976042, 0.05, +15.29837661793975, 3.8754372332523936, 0.05, +15.492735733816978, 3.887182317544554, 0.05, +15.687663765590536, 3.8985606354711537, 0.05, +15.88314249785454, 3.90957464528007, 0.05, +16.079153826692178, 3.920226576752767, 0.05, +16.275679769535486, 3.9305188568661698, 0.05, +16.47270246397973, 3.9404538888848473, 0.05, +16.67020416292721, 3.950033978949599, 0.05, +16.86816723998604, 3.9592615411766086, 0.05, +17.066574186246193, 3.968138925203073, 0.05, +17.265407611846612, 3.9766685120083825, 0.05, +17.464650248871134, 3.984852740490453, 0.05, +17.66428494296235, 3.992693881824322, 0.05, +17.864294660186093, 4.000194344474856, 0.05, +18.064662487608143, 4.007356548440981, 0.05, +18.265371625757115, 4.014182762979443, 0.05, +18.466405395469163, 4.020675394240977, 0.05, +18.667747232131937, 4.0268367332555055, 0.05, +18.869380688401744, 4.032669125396138, 0.05, +19.071289431848367, 4.03817486893248, 0.05, +19.273457246404515, 4.043356291122959, 0.05, +19.475868027103957, 4.0482156139888, 0.05, +19.67850578578298, 4.0527551735804845, 0.05, +19.881354643127118, 4.056977146882719, 0.05, +20.084398834360893, 4.060883824675545, 0.05, +20.287622703704017, 4.064477386862482, 0.05, +20.491010704019768, 4.067760006315026, 0.05, +20.694547397542976, 4.070733870464174, 0.05, +20.89821745425528, 4.073401134246095, 0.05, +21.10200565010947, 4.075763917083713, 0.05, +21.305896864951677, 4.07782429684415, 0.05, +21.509876083075437, 4.0795843624751775, 0.05, +21.713928391841733, 4.081046175325915, 0.05, +21.918038980281043, 4.0822117687862045, 0.05, +22.122193134956486, 4.083083093508845, 0.05, +22.32637624394561, 4.083662179782486, 0.05, +22.530573790805644, 4.083950937200638, 0.05, +22.734771357463682, 4.083951333160748, 0.05, +22.938954615425942, 4.083665159245211, 0.05, +23.143109335098586, 4.083094393452877, 0.05, +23.347221376197318, 4.082240821974615, 0.05, +23.55127668863149, 4.081106248683417, 0.05, +23.75526131133346, 4.079692454039416, 0.05, +23.959161370550284, 4.078001184336483, 0.05, +24.16296307825078, 4.076034154009948, 0.05, +24.366652732405896, 4.073793083102357, 0.05, +24.57021671324446, 4.071279616771243, 0.05, +24.773641482689772, 4.068495388906268, 0.05, +24.976913582910512, 4.065442004414795, 0.05, +25.18001963488001, 4.062121039390009, 0.05, +25.382946335686828, 4.058534016136319, 0.05, +25.585680458938654, 4.054682465036492, 0.05, +25.788208854780606, 4.050567916839021, 0.05, +25.990518442352265, 4.046191751433186, 0.05, +26.192596215431504, 4.041555461584754, 0.05, +26.394429235408744, 4.0366603995447665, 0.05, +26.59600463515493, 4.031507994923758, 0.05, +26.797316797233325, 4.026243241567903, 0.05, +26.998367308289158, 4.0210102211166445, 0.05, +27.199157747888865, 4.015808791994162, 0.05, +27.399689683618025, 4.010638714583183, 0.05, +27.599964675198, 4.005499831599483, 0.05, +27.799984272370047, 4.000391943440924, 0.05, +27.99975001300133, 3.995314812625652, 0.05, +28.199263425116502, 3.9902682423034546, 0.05, +28.398526026671263, 3.985252031095208, 0.05, +28.59753932544979, 3.9802659755705587, 0.05, +28.79630481672564, 3.975309825517029, 0.05, +28.994823984503668, 3.9703833555605526, 0.05, +29.193098303644998, 3.9654863828265783, 0.05, +29.39112923521869, 3.960618631473828, 0.05, +29.588918230715436, 3.955779909934919, 0.05, +29.786466729863857, 3.950969982968429, 0.05, +29.983776159521327, 3.946188593149387, 0.05, +30.18084793405034, 3.941435490580286, 0.05, +30.377683458284093, 3.9367104846750034, 0.05, +30.57428412383712, 3.9320133110605546, 0.05, +30.77065130756507, 3.9273436745590193, 0.05, +30.96678637848784, 3.9227014184553477, 0.05, +31.162690690985677, 3.918086249956763, 0.05, +31.35836558727083, 3.913497925703014, 0.05, +31.5538123973094, 3.9089362007714654, 0.05, +31.74903243740881, 3.904400801988183, 0.05, +31.9440270126228, 3.8998915042798212, 0.05, +32.13879741661815, 3.8954080799069595, 0.05, +32.33334492608635, 3.890950189363999, 0.05, +32.5276708108672, 3.886517695617101, 0.05, +32.72177632166722, 3.8821102160004872, 0.05, +32.91566270190467, 3.8777276047490403, 0.05, +33.10933117975115, 3.873369556929597, 0.05, +33.30278297050161, 3.86903581500915, 0.05, +33.49601927679148, 3.8647261257973984, 0.05, +33.689041288569875, 3.86044023556793, 0.05, +33.881850183076644, 3.856177890135347, 0.05, +34.074447124822605, 3.851938834919216, 0.05, +34.26683326447876, 3.8477227931231406, 0.05, +34.459009740066776, 3.8435295117602046, 0.05, +34.65097767902642, 3.8393587791928656, 0.05, +34.842738191243924, 3.8352102443500593, 0.05, +35.034292378959044, 3.8310837543023415, 0.05, +35.225641328645175, 3.826978993722641, 0.05, +35.416786112770296, 3.822895682502408, 0.05, +35.60772779416409, 3.818833627875931, 0.05, +35.79846742105072, 3.81479253773246, 0.05, +35.98900602897835, 3.8107721585526537, 0.05, +36.179344640829385, 3.8067722370207235, 0.05, +36.36948426683244, 3.8027925200610624, 0.05, +36.559425904242765, 3.798832748206496, 0.05, +36.74917053669147, 3.7948926489742156, 0.05, +36.93871913778608, 3.790972021892202, 0.05, +37.12807266644252, 3.7870705731288155, 0.05, +37.317232068368945, 3.7831880385284604, 0.05, +37.50619827905656, 3.779324213752325, 0.05, +37.69497221910412, 3.7754788009511646, 0.05, +37.8835547974627, 3.7716515671715554, 0.05, +38.07194691146169, 3.767842279979697, 0.05, +38.260149444838035, 3.7640506675269014, 0.05, +38.44816326872668, 3.7602764777729027, 0.05, +38.6359892424, 3.7565194734664242, 0.05, +38.82362821314258, 3.7527794148515374, 0.05, +39.01108101551137, 3.7490560473758836, 0.05, +39.198348471381216, 3.745349117396847, 0.05, +39.38543139082775, 3.741658388930694, 0.05, +39.57233057212355, 3.737983625915958, 0.05, +39.759046801189356, 3.7343245813161308, 0.05, +39.945580851124674, 3.7306809987063585, 0.05, +40.13193348301245, 3.7270526377555133, 0.05, +40.318105447868575, 3.7234392971223707, 0.05, +40.50409748084177, 3.7198406594639493, 0.05, +40.689910309930596, 3.7162565817765114, 0.05, +40.87554464671441, 3.7126867356762063, 0.05, +41.06100119423212, 3.7091309503542047, 0.05, +41.24628064248539, 3.7055889650653118, 0.05, +41.43138366856216, 3.7020605215354316, 0.05, +41.61631093948682, 3.698545418493196, 0.05, +41.80106311015477, 3.695043413358961, 0.05, +41.98564082352377, 3.691554267379893, 0.05, +42.170044710975, 3.6880777490246834, 0.05, +42.35427539234991, 3.6846136274982952, 0.05, +42.538333475987116, 3.681161672744118, 0.05, +42.72221955875933, 3.677721655444286, 0.05, +42.905934226110176, 3.6742933470169348, 0.05, +43.089478052090946, 3.6708765196154007, 0.05, +43.27285159924367, 3.6674709430545898, 0.05, +43.456055418205395, 3.6640763792344875, 0.05, +43.639090049842736, 3.6606926327468745, 0.05, +43.82195602301353, 3.657319463415901, 0.05, +44.0046538541939, 3.653956623607355, 0.05, +44.18718405067069, 3.650603929535842, 0.05, +44.369547107434194, 3.6472611352701123, 0.05, +44.55174350823155, 3.643928015947253, 0.05, +44.73377372666329, 3.6406043686346825, 0.05, +44.915638224215925, 3.637289951052791, 0.05, +45.09733745218191, 3.633984559319696, 0.05, +45.278871850879945, 3.630687973960668, 0.05, +45.46024184855255, 3.6273999534521026, 0.05, +45.64144786437932, 3.6241203165354863, 0.05, +45.82249030562634, 3.6208488249402473, 0.05, +46.00336956801474, 3.6175852477680546, 0.05, +46.184086038084445, 3.614329401394029, 0.05, +46.36464009076842, 3.6110810536794458, 0.05, +46.545032090274375, 3.607839990119127, 0.05, +46.72526239011875, 3.604605996887471, 0.05, +46.905331332892615, 3.601378855477307, 0.05, +47.08523925111553, 3.5981583644583583, 0.05, +47.26498646641899, 3.5949443060691215, 0.05, +47.44457328981211, 3.59173646786244, 0.05, +47.62400002174216, 3.5885346386010046, 0.05, +47.80326695211913, 3.585338607539393, 0.05, +47.982374360338724, 3.5821481643918327, 0.05, +48.16132251530488, 3.578963099323156, 0.05, +48.340111675451894, 3.575783202940265, 0.05, +48.51874208876525, 3.5726082662671264, 0.05, +48.697213992802396, 3.5694380807428785, 0.05, +48.87552761457677, 3.566272435487443, 0.05, +49.05368317092166, 3.563111126897837, 0.05, +49.23168086828489, 3.5599539472646122, 0.05, +49.409520902705516, 3.5568006884124745, 0.05, +49.58720345988516, 3.553651143592879, 0.05, +49.764728715203695, 3.5505051063707316, 0.05, +49.942096833639816, 3.547362368722374, 0.05, +50.11930796994182, 3.5442227260400863, 0.05, +50.2963622687626, 3.5410859764154945, 0.05, +50.47325986434153, 3.5379519115785873, 0.05, +50.65000088066329, 3.5348203264352462, 0.05, +50.82658543128649, 3.5316910124640013, 0.05, +51.00301361992657, 3.5285637728015806, 0.05, +51.17928553987792, 3.525438399026991, 0.05, +51.355401274193504, 3.5223146863117987, 0.05, +51.53136089564662, 3.519192429062366, 0.05, +51.70716446704221, 3.516071427911767, 0.05, +51.88281204084437, 3.512951476043136, 0.05, +52.05830365929322, 3.5098323689770017, 0.05, +52.233639354514885, 3.5067139044332345, 0.05, +52.40881914844862, 3.503595878674753, 0.05, +52.583843052815084, 3.500478087329232, 0.05, +52.75871106918504, 3.4973603273990883, 0.05, +52.933423188931044, 3.4942423949200543, 0.05, +53.1079793932312, 3.4911240860030555, 0.05, +53.2823796531421, 3.488005198218075, 0.05, +53.45662392948609, 3.484885526879854, 0.05, +53.63071217285831, 3.4817648674444124, 0.05, +53.8046443236948, 3.478643016729875, 0.05, +53.97842031239469, 3.4755197739977053, 0.05, +54.15204005885751, 3.4723949292564003, 0.05, +54.32550347290386, 3.4692682809271234, 0.05, +54.49881045416385, 3.4661396251997636, 0.05, +54.67196089218854, 3.4630087604936226, 0.05, +54.844954665945245, 3.459875475134158, 0.05, +55.01779164432666, 3.4567395676282198, 0.05, +55.19047168596773, 3.453600832821518, 0.05, +55.362994639361354, 3.450459067872556, 0.05, +55.53536034258061, 3.447314064385106, 0.05, +55.70756862329898, 3.4441656143674195, 0.05, +55.87961929898431, 3.44101351370653, 0.05, +56.051512176775816, 3.4378575558301554, 0.05, +56.223247053467055, 3.4346975338248056, 0.05, +56.39482371548826, 3.431533240424053, 0.05, +56.5662419389532, 3.4283644692987836, 0.05, +56.73750148950273, 3.42519101099076, 0.05, +56.90860212227338, 3.4220126554128427, 0.05, +57.07954358203939, 3.4188291953203245, 0.05, +57.250325603108934, 3.415640421390854, 0.05, +57.42094790930065, 3.4124461238343726, 0.05, +57.591410213919474, 3.4092460923764865, 0.05, +57.761712219731876, 3.406040116248071, 0.05, +57.931853618974344, 3.402827984849307, 0.05, +58.10183409345688, 3.399609489650684, 0.05, +58.27165331401795, 3.3963844112213217, 0.05, +58.44131094101004, 3.3931525398418017, 0.05, +58.610806624109706, 3.3899136619934036, 0.05, +58.780140002287254, 3.3866675635509655, 0.05, +58.94931070397106, 3.383414033676101, 0.05, +59.11831834702657, 3.380152861110366, 0.05, +59.28716253764817, 3.3768838124319593, 0.05, +59.45584287167318, 3.373606680500139, 0.05, +59.62435893515331, 3.3703212696026874, 0.05, +59.79271030127096, 3.36702732235299, 0.05, +59.96089653371394, 3.36372464885967, 0.05, +60.12891718499538, 3.3604130256286915, 0.05, +60.29677179602161, 3.3570922205245157, 0.05, +60.46445989770201, 3.353762033607979, 0.05, +60.631981008877204, 3.3504222235039784, 0.05, +60.79933463775846, 3.347072577625135, 0.05, +60.966520281987805, 3.343712884586796, 0.05, +61.133537426644644, 3.340342893136777, 0.05, +61.30038554671965, 3.3369624015001955, 0.05, +61.46706410631818, 3.3335711919705546, 0.05, +61.633572556888105, 3.330169011398456, 0.05, +61.799910339373625, 3.326755649710369, 0.05, +61.966076883347384, 3.3233308794752072, 0.05, +62.13207160696744, 3.319894472401131, 0.05, +62.29789391693395, 3.316446199330129, 0.05, +62.463543208445294, 3.312985830226897, 0.05, +62.629018865153675, 3.3095131341676325, 0.05, +62.794320259120816, 3.3060278793427758, 0.05, +62.95944675077279, 3.3025298330394803, 0.05, +63.124397688854835, 3.2990187616408653, 0.05, +63.28917241082675, 3.2954944394383383, 0.05, +63.453770242512626, 3.291956633717548, 0.05, +63.618190496595524, 3.2884050816579866, 0.05, +63.78243247561905, 3.2848395804705266, 0.05, +63.94649546957257, 3.281259879070236, 0.05, +64.11037875617541, 3.277665732056698, 0.05, +64.27408160199998, 3.2740569164916127, 0.05, +64.43760326128225, 3.2704331856452207, 0.05, +64.60094297548015, 3.266794283957987, 0.05, +64.76409997566017, 3.263140003600525, 0.05, +64.92707347963655, 3.2594700795276057, 0.05, +65.08986269287976, 3.2557842648641633, 0.05, +65.25246680919369, 3.252082326278714, 0.05, +65.41488501011125, 3.2483640183512805, 0.05, +65.57711646484947, 3.2446290947644987, 0.05, +65.7391603302654, 3.240877308318867, 0.05, +65.90101575081208, 3.2371084109335366, 0.05, +66.06268185849537, 3.2333221536657577, 0.05, +66.22415777420049, 3.229518314102584, 0.05, +66.3854426041572, 3.225696599134381, 0.05, +66.54653544267721, 3.2218567704002243, 0.05, +66.70743537409605, 3.217998628376657, 0.05, +66.86814146568268, 3.214121831732785, 0.05, +67.02865277686006, 3.2102262235474237, 0.05, +67.1889683506772, 3.2063114763428393, 0.05, +67.34908721907502, 3.202377367956451, 0.05, +67.50900840193033, 3.1984236571062197, 0.05, +67.66873090588868, 3.1944500791669217, 0.05, +67.8282537241956, 3.19045636613854, 0.05, +67.98757583792941, 3.1864422746762537, 0.05, +68.14669621530099, 3.182407547431564, 0.05, +68.30561381244144, 3.1783519428088383, 0.05, +68.46432757172158, 3.1742751856029074, 0.05, +68.62283642229352, 3.1701770114388106, 0.05, +68.78113928149456, 3.166057184020886, 0.05, +68.93923505424456, 3.161915454999994, 0.05, +69.09712263050756, 3.1577515252600006, 0.05, +69.25480088960171, 3.1535651818831982, 0.05, +69.41226869710762, 3.1493561501183307, 0.05, +69.56952490492252, 3.145124156297955, 0.05, +69.726568353111, 3.1408689637698353, 0.05, +69.88339786874812, 3.136590312742327, 0.05, +70.04001226591842, 3.1322879434059816, 0.05, +70.19641034571883, 3.1279615960083507, 0.05, +70.35259089626499, 3.1236110109230246, 0.05, +70.50855269270116, 3.119235928723425, 0.05, +70.66429449870553, 3.1148361200874835, 0.05, +70.81981506367497, 3.1104112993886166, 0.05, +70.97511312448317, 3.1059612161642436, 0.05, +71.13018740578651, 3.101485626066899, 0.05, +71.28503662007397, 3.0969842857489884, 0.05, +71.43965946540689, 3.092456906658454, 0.05, +71.59405462868202, 3.0879032655025576, 0.05, +71.7482207841056, 3.0833231084716473, 0.05, +71.90215659324377, 3.078716182763646, 0.05, +72.05586070507744, 3.0740822366731084, 0.05, +72.20933175606359, 3.0694210197231286, 0.05, +72.36256837128808, 3.0647323044896013, 0.05, +72.51556916337631, 3.060015841764688, 0.05, +72.66833273125843, 3.05527135764228, 0.05, +72.82085766454325, 3.0504986656966073, 0.05, +72.97314253906522, 3.04569749043938, 0.05, +73.12518591885821, 3.04086759585982, 0.05, +73.27698635710543, 3.036008764944337, 0.05, +73.42854239523199, 3.0311207625311303, 0.05, +73.57985256302723, 3.0262033559049155, 0.05, +73.73091537877545, 3.0212563149645, 0.05, +73.88172934939544, 3.0162794123999164, 0.05, +74.03229297317246, 3.011272475540482, 0.05, +74.18260473336318, 3.0062352038142204, 0.05, +74.3326631068541, 3.0011674698183755, 0.05, +74.48246655634026, 2.9960689897231734, 0.05, +74.6320135366053, 2.990939605300736, 0.05, +74.78130249246772, 2.985779117248224, 0.05, +74.93033185744368, 2.980587299519258, 0.05, +75.07910005666184, 2.9753639843633466, 0.05, +75.2276055050438, 2.970108967639068, 0.05, +75.37584660792052, 2.9648220575346285, 0.05, +75.52382176263272, 2.9595030942439524, 0.05, +75.67152935863831, 2.954151920111843, 0.05, +75.81896777509797, 2.94876832919339, 0.05, +75.96613538386865, 2.943352175413431, 0.05, +76.11303054987776, 2.937903320182198, 0.05, +76.25965163041424, 2.932421610729603, 0.05, +76.40599697500075, 2.9269068917302388, 0.05, +76.55206492694691, 2.9213590389231783, 0.05, +76.69785382236294, 2.91577790832078, 0.05, +76.84336199131663, 2.910163379073699, 0.05, +76.98858776178527, 2.9045154093728818, 0.05, +77.13352945077308, 2.8988337797561674, 0.05, +77.27818537481755, 2.893118480889523, 0.05, +77.4225538456092, 2.8873694158328376, 0.05, +77.56663316925894, 2.8815864729947247, 0.05, +77.71042164962067, 2.875769607234772, 0.05, +77.85391758806654, 2.869918768917381, 0.05, +77.99711928376655, 2.864033914000356, 0.05, +78.14002503188222, 2.8581149623132838, 0.05, +78.28263312979169, 2.8521619581894164, 0.05, +78.42494187058722, 2.8461748159104236, 0.05, +78.56694955124586, 2.840153613172603, 0.05, +78.70865446608131, 2.8340982967090347, 0.05, +78.8500549116226, 2.828008910825919, 0.05, +78.99114918635428, 2.8218854946333294, 0.05, +79.13193559172352, 2.8157281073848095, 0.05, +79.27241243258004, 2.8095368171303257, 0.05, +79.41257801527573, 2.8033116539137772, 0.05, +79.55243065536129, 2.797052801711293, 0.05, +79.69196866911582, 2.790760275090715, 0.05, +79.83119038210391, 2.784434259761658, 0.05, +79.97009412677679, 2.778074893457488, 0.05, +80.10867824305492, 2.7716823255628955, 0.05, +80.24694107974956, 2.7652567338928304, 0.05, +80.38488099492822, 2.758798303573217, 0.05, +80.52249635711945, 2.7523072438245397, 0.05, +80.65978554942319, 2.7457838460747577, 0.05, +80.79674696288316, 2.7392282691994265, 0.05, +80.93337900637584, 2.7326408698536033, 0.05, +81.06968010135809, 2.7260218996448047, 0.05, +81.20564868490445, 2.719371670927284, 0.05, +81.34128321138071, 2.7126905295251915, 0.05, +81.47658215354882, 2.705978843362009, 0.05, +81.61154400313458, 2.6992369917152006, 0.05, +81.74616727013345, 2.692465339977393, 0.05, +81.88045049001367, 2.6856643976043197, 0.05, +82.01439221651788, 2.678834530083962, 0.05, +82.14799103013793, 2.6719762724011646, 0.05, +82.28124553648277, 2.6650901268969545, 0.05, +82.41415436691653, 2.658176608675303, 0.05, +82.54671618130926, 2.651236287854474, 0.05, +82.67892966804054, 2.6442697346254884, 0.05, +82.81079354611614, 2.637277561511991, 0.05, +82.94230656892381, 2.6302604561534557, 0.05, +83.0734675199063, 2.6232190196497784, 0.05, +83.20427522179065, 2.616154037687089, 0.05, +83.33472853030139, 2.6090661702146245, 0.05, +83.46482634094426, 2.6019562128573486, 0.05, +83.59456758890893, 2.594824959293387, 0.05, +83.72395125053745, 2.5876732325703546, 0.05, +83.85297634592902, 2.580501907831308, 0.05, +83.98164193911897, 2.5733118637990895, 0.05, +84.10994713965884, 2.566104010797421, 0.05, +84.23789110752503, 2.5588793573238346, 0.05, +84.36547305022343, 2.5516388539679404, 0.05, +84.49269222751252, 2.544383545781914, 0.05, +84.61954795283171, 2.537114506383673, 0.05, +84.74603959452593, 2.5298328338842206, 0.05, +84.8721665776768, 2.5225396630173256, 0.05, +84.99792838595314, 2.5152361655271687, 0.05, +85.12332456425419, 2.5079235660209425, 0.05, +85.24835471983619, 2.500603111640023, 0.05, +85.37301852325331, 2.493276068342317, 0.05, +85.49731571254821, 2.4859437858982147, 0.05, +85.62124609384324, 2.478607625900397, 0.05, +85.74480954225486, 2.4712689682322555, 0.05, +85.86800600572562, 2.4639292694153534, 0.05, +85.99083550596666, 2.4565900048206872, 0.05, +86.1132981404058, 2.449252688783008, 0.05, +86.23539408413806, 2.441918874645352, 0.05, +86.35712359317343, 2.434590180707259, 0.05, +86.4784870029298, 2.4272681951274135, 0.05, +86.59948473405719, 2.4199546225477033, 0.05, +86.72011729201837, 2.412651159223764, 0.05, +86.84038527037745, 2.4053595671816486, 0.05, +86.96028935073865, 2.398081607223932, 0.05, +87.07983030678432, 2.390819120913471, 0.05, +87.19900900511195, 2.3835739665525018, 0.05, +87.31782640708639, 2.3763480394888448, 0.05, +87.43628357066673, 2.369143271606974, 0.05, +87.55438165220542, 2.361961630773671, 0.05, +87.67212190821523, 2.3548051201960827, 0.05, +87.78950569710247, 2.3476757777447865, 0.05, +87.9065344817472, 2.3405756928946615, 0.05, +88.02320982883305, 2.3335069417168577, 0.05, +88.13953341287417, 2.3264716808225483, 0.05, +88.25550701642635, 2.3194720710436267, 0.05, +88.37113253224362, 2.312510316345394, 0.05, +88.4864119637096, 2.3055886293196592, 0.05, +88.60134742781969, 2.298709282201817, 0.05, +88.71594115516677, 2.2918745469415867, 0.05, +88.83019549139524, 2.285086724569418, 0.05, +88.94411289891801, 2.278348150455188, 0.05, +89.05769595770202, 2.2716611756802143, 0.05, +89.17094736630678, 2.2650281720950485, 0.05, +89.28386994284077, 2.25845153067983, 0.05, +89.39646662583233, 2.251933659831217, 0.05, +89.5087404750103, 2.245476983559311, 0.05, +89.6206946719922, 2.2390839396378404, 0.05, +89.73233252087557, 2.232756977667625, 0.05, +89.84365744875778, 2.226498557644021, 0.05, +89.95467300619595, 2.2203111487633107, 0.05, +90.06538286706125, 2.214197217305982, 0.05, +90.17579082921971, 2.2081592431691255, 0.05, +90.28590081440984, 2.2021997038028145, 0.05, +90.39571686827767, 2.196321077356692, 0.05, +90.50524315982642, 2.1905258309749254, 0.05, +90.6144839815628, 2.184816434727444, 0.05, +90.72344374890665, 2.179195346876942, 0.05, +90.83212699957737, 2.173665013414311, 0.05, +90.9405383930295, 2.168227869042616, 0.05, +91.0486827095809, 2.162886331028056, 0.05, +91.15656484942848, 2.1576427969514897, 0.05, +91.26418983179367, 2.1524996473039946, 0.05, +91.37156279350728, 2.147459234272285, 0.05, +91.47868898760785, 2.142523882011475, 0.05, +91.58557378208097, 2.1376958894622144, 0.05, +91.69222265825542, 2.1329775234889983, 0.05, +91.79864120885375, 2.1283710119666854, 0.05, +91.90483513619287, 2.1238785467823873, 0.05, +92.01081025016161, 2.119502279374677, 0.05, +92.11657246606283, 2.115244318024351, 0.05, +92.22212780232189, 2.1111067251812523, 0.05, +92.32748237806237, 2.107091514809591, 0.05, +92.43264241055113, 2.10320064977521, 0.05, +92.53761421251448, 2.099436039267155, 0.05, +92.64240418932826, 2.095799536275589, 0.05, +92.74701883608317, 2.092292935098226, 0.05, +92.85146473372657, 2.0889179528680852, 0.05, +92.95574854781012, 2.0856762816708616, 0.05, +93.05987702324332, 2.0825695086639953, 0.05, +93.16385698163164, 2.079599167766507, 0.05, +93.26769531771804, 2.0767667217278585, 0.05, +93.37139899627908, 2.0740735712208727, 0.05, +93.47497504720445, 2.071521018507353, 0.05, +93.5784305622618, 2.0691103011469756, 0.05, +93.68177269164626, 2.066842587689155, 0.05, +93.78500863911844, 2.0647189494438214, 0.05, +93.88814565884122, 2.062740394455521, 0.05, +93.99119105081688, 2.0609078395130296, 0.05, +94.0941521558638, 2.059222100938322, 0.05, +94.1970363522484, 2.0576839276922474, 0.05, +94.29985105113218, 2.0562939776754927, 0.05, +94.402603692648, 2.055052830316411, 0.05, +94.50530174017692, 2.05396095057849, 0.05, +94.60795267686159, 2.0530187336933405, 0.05, +94.71056400116782, 2.052226486124766, 0.05, +94.813143222431, 2.05158442526347, 0.05, +94.91569785347986, 2.0510926209772715, 0.05, +95.01823541270618, 2.0507511845264683, 0.05, +95.12076341198951, 2.0505599856666383, 0.05, +95.22328935628, 2.050518885809954, 0.05, +95.32582073899313, 2.050627654262386, 0.05, +95.4283650358455, 2.0508859370474353, 0.05, +95.53092970327081, 2.051293348506302, 0.05, +95.63352216891366, 2.051849312856885, 0.05, +95.73614983329313, 2.052553287589407, 0.05, +95.83882006039634, 2.053404542064402, 0.05, +95.94154017607084, 2.0544023134899425, 0.05, +96.04431746390827, 2.055545756748573, 0.05, +96.14715915823355, 2.056833886505531, 0.05, +96.25007244486508, 2.0582657326305385, 0.05, +96.35306445138635, 2.0598401304252465, 0.05, +96.45614224689784, 2.0615559102298557, 0.05, +96.55931283831914, 2.063411828425978, 0.05, +96.66258316613553, 2.065406556327803, 0.05, +96.76596009644409, 2.0675386061711003, 0.05, +96.86945042494428, 2.069806570003608, 0.05, +96.97306086876326, 2.072208876379608, 0.05, +97.0767980607179, 2.0747438390930255, 0.05, +97.1806685560558, 2.077409906758093, 0.05, +97.28467881494169, 2.0802051777176667, 0.05, +97.38883521285618, 2.083127958289842, 0.05, +97.4931440277136, 2.0861762971483078, 0.05, +97.59761144627898, 2.0893483713076852, 0.05, +97.70224355149001, 2.092642104220665, 0.05, +97.8070463291345, 2.0960555528895966, 0.05, +97.91202566021984, 2.099586621706827, 0.05, +98.01718731659577, 2.1032331275186693, 0.05, +98.12253696915064, 2.1069930510974606, 0.05, +98.22808017328293, 2.110864082645867, 0.05, +98.33382237504468, 2.1148440352349205, 0.05, +98.43976890870644, 2.1189306732353366, 0.05, +98.54592498941223, 2.123121614115869, 0.05, +98.65229572060123, 2.127414623780112, 0.05, +98.75888608480655, 2.1318072841062996, 0.05, +98.86570095005885, 2.1362973050462055, 0.05, +98.97274506021084, 2.1408822030398063, 0.05, +99.08002304277342, 2.145559651251559, 0.05, +99.18753940039974, 2.1503271525265903, 0.05, +99.29529851727357, 2.155182337476397, 0.05, +99.40330465183263, 2.160122691181177, 0.05, +99.51156194311743, 2.1651458256961043, 0.05, +99.6200744038385, 2.170249214421498, 0.05, +99.7288459282306, 2.175430487841798, 0.05, +99.83788028371143, 2.1806871096165428, 0.05, +99.94718111708201, 2.186016667411578, 0.05, +100.05675194815916, 2.191416621543122, 0.05, +100.16659618052648, 2.1968846473465633, 0.05, +100.276717092013, 2.2024182297304065, 0.05, +100.38711783929297, 2.2080149455994755, 0.05, +100.49780145945579, 2.213672403256241, 0.05, +100.608770865942, 2.2193881297243383, 0.05, +100.72002885734967, 2.2251598281532585, 0.05, +100.8315781128854, 2.2309851107145064, 0.05, +100.94342119217497, 2.236861585791397, 0.05, +101.05556053988784, 2.2427869542573373, 0.05, +101.16799848511849, 2.2487589046131866, 0.05, +101.28073724281079, 2.254775153845917, 0.05, +101.39377891370789, 2.260833417942092, 0.05, +101.50712549235031, 2.266931572848545, 0.05, +101.62077885266957, 2.273067206385259, 0.05, +101.73474077207956, 2.2792383881998637, 0.05, +101.84901290915381, 2.2854427414851783, 0.05, +101.96359682894368, 2.291678395797215, 0.05, +102.07849398157157, 2.2979430525577214, 0.05, +102.193705720477, 2.304234778108658, 0.05, +102.30923329704547, 2.310551531369423, 0.05, +102.42507786302896, 2.316891319669923, 0.05, +102.54124047324532, 2.323252204327389, 0.05, +102.65772208651605, 2.3296322654144794, 0.05, +102.77452356829235, 2.3360296355262475, 0.05, +102.89164569053908, 2.3424424449344676, 0.05, +103.00908913980871, 2.348868985392519, 0.05, +103.12685450651321, 2.355307334090183, 0.05, +103.24494229841056, 2.3617558379469044, 0.05, +103.3633529409665, 2.3682128511187037, 0.05, +103.4820867750635, 2.37467668194002, 0.05, +103.60114406059694, 2.3811457106688088, 0.05, +103.720524979041, 2.387618368881368, 0.05, +103.84022963105494, 2.3940930402786167, 0.05, +103.96025804788368, 2.4005683365748856, 0.05, +104.08061018022612, 2.407042646848652, 0.05, +104.20128591978379, 2.4135147911534807, 0.05, +104.32228507398506, 2.419983084025487, 0.05, +104.44360739004128, 2.4264463211243923, 0.05, +104.5652525539834, 2.432903278842407, 0.05, +104.68722017718456, 2.4393524640232327, 0.05, +104.80950981349719, 2.4457927262526606, 0.05, +104.93212096445689, 2.45222301919401, 0.05, +105.05505305670165, 2.4586418448953697, 0.05, +105.17830547391081, 2.465048344183268, 0.05, +105.30187753815042, 2.4714412847920975, 0.05, +105.4257685224559, 2.477819686109384, 0.05, +105.54997764584131, 2.4841824677081865, 0.05, +105.67450407742369, 2.490528631647584, 0.05, +105.79934693814859, 2.4968572144978105, 0.05, +105.92450530115057, 2.50316726003979, 0.05, +106.04997819490593, 2.5094578751072008, 0.05, +106.17576461352031, 2.515728372287637, 0.05, +106.301863495847, 2.52197764653384, 0.05, +106.42827374758284, 2.528205034716701, 0.05, +106.55499423905289, 2.5344098294011506, 0.05, +106.68202379580424, 2.5405911350269927, 0.05, +106.80936121014074, 2.5467482867298283, 0.05, +106.93700524905807, 2.5528807783468364, 0.05, +107.06495462998085, 2.5589876184555296, 0.05, +107.19320805690332, 2.565068538449305, 0.05, +107.32176418560151, 2.571122573963989, 0.05, +107.45062166395998, 2.577149567169317, 0.05, +107.57977909511679, 2.5831486231361778, 0.05, +107.70923506503536, 2.589119398371401, 0.05, +107.83898813125273, 2.5950613243475837, 0.05, +107.96903683010066, 2.600973976958461, 0.05, +108.0993796738593, 2.6068568751726904, 0.05, +108.23001515516466, 2.6127096261072396, 0.05, +108.3609417451097, 2.6185317989007193, 0.05, +108.49215789239948, 2.6243229457955897, 0.05, +108.62366203694934, 2.6300828909973486, 0.05, +108.75545259376284, 2.6358111362698944, 0.05, +108.88752796679336, 2.6415074606103652, 0.05, +109.01988654495155, 2.6471715631637065, 0.05, +109.152526693376, 2.6528029684892527, 0.05, +109.28544678079501, 2.658401748380176, 0.05, +109.41864515345048, 2.663967453109553, 0.05, +109.5521201488431, 2.669499907852433, 0.05, +109.68587009469965, 2.6749989171309116, 0.05, +109.8198933043785, 2.6804641935768823, 0.05, +109.9541880874843, 2.685895662115916, 0.05, +110.08875275500814, 2.691293350477064, 0.05, +110.22358559256492, 2.6966567511354045, 0.05, +110.35868488621145, 2.701985872930528, 0.05, +110.49404892569314, 2.707280789633751, 0.05, +110.62967598532975, 2.712541192732376, 0.05, +110.76556434071875, 2.717767107780099, 0.05, +110.9017122640546, 2.722958466716677, 0.05, +111.0381180130475, 2.7281149798580953, 0.05, +111.17477986278982, 2.7332369948464534, 0.05, +111.31169607319045, 2.738324208012571, 0.05, +111.44886491122229, 2.7433767606367465, 0.05, +111.58628462641153, 2.748394303784788, 0.05, +111.72395349184214, 2.753377308612125, 0.05, +111.86186977046961, 2.7583255725493974, 0.05, +112.00003171336158, 2.7632388578393594, 0.05, +112.1384375995161, 2.768117723090371, 0.05, +112.27708568897458, 2.772961789169697, 0.05, +112.41597425311424, 2.7777712827931187, 0.05, +112.55510156297463, 2.782546197207654, 0.05, +112.69446589568362, 2.7872866541797525, 0.05, +112.83406552543654, 2.791992595058418, 0.05, +112.97389873932383, 2.796664277745683, 0.05, +113.1139638248853, 2.801301711229352, 0.05, +113.25425907381111, 2.8059049785161707, 0.05, +113.39478277998167, 2.8104741234111774, 0.05, +113.53553325146076, 2.8150094295820005, 0.05, +113.67650879027713, 2.8195107763272396, 0.05, +113.81770382704484, 2.823900735354189, 0.05, +113.95910771226836, 2.8280777044706182, 0.05, +114.1007085926765, 2.8320176081626904, 0.05, +114.24249454576601, 2.8357190617900883, 0.05, +114.38445361532686, 2.8391813912169765, 0.05, +114.5265737828897, 2.842403351256814, 0.05, +114.66884297794637, 2.8453839011333995, 0.05, +114.81124908950991, 2.848122231270947, 0.05, +114.95377995586082, 2.8506173270182016, 0.05, +115.09642336342445, 2.852868151272581, 0.05, +115.23916706493473, 2.8548740302057354, 0.05, +115.38199875483674, 2.856633798040276, 0.05, +115.5249060994823, 2.8581468929108893, 0.05, +115.66787672212749, 2.8594124529038893, 0.05, +115.81089820143795, 2.8604295862093614, 0.05, +115.95395808473661, 2.8611976659732807, 0.05, +116.09704386946531, 2.861715694573917, 0.05, +116.24014303596694, 2.8619833300325515, 0.05, +116.38324301906401, 2.86199966194149, 0.05, +116.5263312196164, 2.8617640110477174, 0.05, +116.6693950094082, 2.86127579583632, 0.05, +116.8124217253417, 2.8605343186698167, 0.05, +116.9553986879038, 2.8595392512420013, 0.05, +117.09831317560298, 2.8582897539837813, 0.05, +117.24115244330729, 2.8567853540860413, 0.05, +117.38390371903134, 2.855025514481098, 0.05, +117.52655420491884, 2.853009717750068, 0.05, +117.66909108388185, 2.850737579260333, 0.05, +117.81150150878184, 2.848208497999866, 0.05, +117.95377262092516, 2.845422242866461, 0.05, +118.09589151846882, 2.842377950873172, 0.05, +118.23784530165702, 2.8390756637639902, 0.05, +118.37962104669288, 2.8355149007172997, 0.05, +118.52120580328443, 2.8316951318311525, 0.05, +118.66258660229583, 2.8276159802281153, 0.05, +118.80375047626576, 2.823277479398468, 0.05, +118.94468442764266, 2.8186790275379825, 0.05, +119.0853754360222, 2.8138201675908383, 0.05, +119.22581048868938, 2.8087010533435386, 0.05, +119.3659765365521, 2.8033209572545075, 0.05, +119.50586053805112, 2.7976800299804996, 0.05, +119.64544943397513, 2.7917779184801974, 0.05, +119.7847301391053, 2.7856141026035175, 0.05, +119.92368957179589, 2.7791886538117994, 0.05, +120.06231465155872, 2.7725015952566343, 0.05, +120.20059226372643, 2.7655522433543505, 0.05, +120.33850931109195, 2.7583409473102507, 0.05, +120.47605266391683, 2.7508670564976128, 0.05, +120.6132092112655, 2.7431309469733502, 0.05, +120.7499658143294, 2.7351320612779944, 0.05, +120.88630933247084, 2.7268703628290045, 0.05, +121.02222663997152, 2.718346150013416, 0.05, +121.1577045909887, 2.709559020343695, 0.05, +121.29273002864464, 2.7005087531189056, 0.05, +121.42728979860065, 2.6911953991202267, 0.05, +121.56137076111636, 2.681619250314199, 0.05, +121.69495975533152, 2.6717798843032035, 0.05, +121.82804361982733, 2.6616772899160726, 0.05, +121.96060920705854, 2.6513117446241132, 0.05, +122.09264334320197, 2.6406827228685446, 0.05, +122.22413287841651, 2.6297907042908206, 0.05, +122.35506465981096, 2.6186356278889193, 0.05, +122.48542551780557, 2.607217159892065, 0.05, +122.61520231109162, 2.59553586572121, 0.05, +122.74438187831836, 2.5835913445347316, 0.05, +122.87295107084574, 2.571383850547722, 0.05, +123.00089674514224, 2.55891348592991, 0.05, +123.12820574531187, 2.5461800033926956, 0.05, +123.2548649394987, 2.533183883736503, 0.05, +123.38086118808391, 2.5199249717041017, 0.05, +123.50618135147802, 2.506403267882035, 0.05, +123.63081231253373, 2.492619221114247, 0.05, +123.75474095076927, 2.4785727647107954, 0.05, +123.87795413449669, 2.4642636745484037, 0.05, +124.00043875527616, 2.4496924155894386, 0.05, +124.12218171935895, 2.434859281655589, 0.05, +124.24316991996172, 2.4197640120553254, 0.05, +124.36339026743154, 2.4044069493965496, 0.05, +124.48282967960563, 2.388788243481723, 0.05, +124.60147507407528, 2.3729078893929447, 0.05, +124.71931338771455, 2.3567662727853884, 0.05, +124.83633155787186, 2.340363403146045, 0.05, +124.95251653035399, 2.3236994496426124, 0.05, +125.06785526745767, 2.3067747420738183, 0.05, +125.18233472696836, 2.2895891902138668, 0.05, +125.29594188896253, 2.2721432398833703, 0.05, +125.40866374160652, 2.2544370528796143, 0.05, +125.52048726547787, 2.2364704774270727, 0.05, +125.63139948546286, 2.2182443997000125, 0.05, +125.74138740169411, 2.199758324624927, 0.05, +125.85043803995967, 2.181012765311138, 0.05, +125.95853844821828, 2.162008165172118, 0.05, +126.06567567465687, 2.1427445287717792, 0.05, +126.17183676465797, 2.123221800021863, 0.05, +126.27700880655325, 2.103440837905697, 0.05, +126.38117886833874, 2.0834012357096907, 0.05, +126.48433405866501, 2.0631038065255574, 0.05, +126.58646148666477, 2.042548559995293, 0.05, +126.68754825909916, 2.021735448687751, 0.05, +126.78758152734623, 2.0006653649414585, 0.05, +126.88655269440738, 1.9794233412230702, 0.05, +126.98445876914133, 1.9581214946788634, 0.05, +127.08129804947357, 1.9367856066448412, 0.05, +127.1770688469624, 1.915415949776417, 0.05, +127.27176954403353, 1.8940139414225903, 0.05, +127.36539851185317, 1.8725793563928224, 0.05, +127.45795419417489, 1.8511136464343583, 0.05, +127.54943504064546, 1.8296169294115197, 0.05, +127.63983953282668, 1.8080898436244497, 0.05, +127.72916617394223, 1.7865328223109171, 0.05, +127.81741352957803, 1.7649471127160345, 0.05, +127.90458014753116, 1.743332359062672, 0.05, +127.99066463703194, 1.721689790015565, 0.05, +128.07566562742198, 1.7000198078011222, 0.05, +128.1595817743405, 1.67832293836997, 0.05, +128.24241174751455, 1.6565994634810421, 0.05, +128.32415425684403, 1.6348501865896206, 0.05, +128.4048080406325, 1.6130756757694598, 0.05, +128.4843718531263, 1.591276249875941, 0.05, +128.5628444680047, 1.5694522975680627, 0.05, +128.64022470847735, 1.5476048094528652, 0.05, +128.716511404327, 1.5257339169930288, 0.05, +128.79170340459763, 1.5038400054121994, 0.05, +128.8657995811059, 1.4819235301657887, 0.05, +128.9387988571695, 1.459985521271699, 0.05, +129.01070014070586, 1.4380256707271801, 0.05, +129.08150239628756, 1.4160451116339603, 0.05, +129.15120457683733, 1.3940436109952037, 0.05, +129.21980568787015, 1.3720222206564088, 0.05, +129.2873047396402, 1.349981035401317, 0.05, +129.35370076208886, 1.3279204489728804, 0.05, +129.41899282200018, 1.3058411982265523, 0.05, +129.48317999402366, 1.2837434404694843, 0.05, +129.54626137111728, 1.261627541872438, 0.05, +129.60823608369355, 1.2394942515252052, 0.05, +129.6691032506647, 1.2173433394232336, 0.05, +129.7288620470605, 1.1951759279155014, 0.05, +129.78751164175935, 1.1729918939774864, 0.05, +129.84505123848538, 1.1507919345206898, 0.05, +129.9014800419279, 1.1285760688502593, 0.05, +129.95680163161907, 1.1064317938234731, 0.05, +130.01102519850397, 1.0844713376982817, 0.05, +130.0641612784026, 1.0627215979724436, 0.05, +130.11622041720884, 1.0411827761249808, 0.05, +130.16721318476797, 1.0198553511829407, 0.05, +130.21715019118466, 0.998740128333522, 0.05, +130.26604205353456, 0.977837246998291, 0.05, +130.31389941333123, 0.9571471959334228, 0.05, +130.3607329613526, 0.9366709604271607, 0.05, +130.406553378893, 0.9164083508077253, 0.05, +130.45137138974152, 0.8963602169705356, 0.05, +130.49519772840048, 0.8765267731792914, 0.05, +130.53804315452922, 0.8569085225746067, 0.05, +130.57991844566203, 0.8375058226562979, 0.05, +130.62083440656608, 0.8183192180811545, 0.05, +130.66080184377458, 0.7993487441701436, 0.05, +130.69983159796485, 0.7805950838055127, 0.05, +130.73793452574705, 0.7620585556442646, 0.05, +130.7751215035021, 0.7437395551012203, 0.05, +130.81140340250062, 0.7256379799701692, 0.05, +130.84679114599908, 0.7077548699689584, 0.05, +130.88129564098531, 0.6900898997245287, 0.05, +130.9149278336711, 0.6726438537154639, 0.05, +130.9476986725506, 0.6554167775898162, 0.05, +130.97961912017294, 0.6384089524472616, 0.05, +131.0107001613172, 0.6216208228853035, 0.05, +131.04095279271195, 0.6050526278950326, 0.05, +131.07038801416445, 0.5887044290497684, 0.05, +131.09901684107692, 0.5725765382494774, 0.05, +131.12685031936553, 0.5566695657721601, 0.05, +131.1538994861449, 0.5409833355870036, 0.05, +131.1801754035917, 0.5255183489362409, 0.05, +131.20568912853184, 0.5102744988026375, 0.05, +131.23045175046457, 0.49525243865441426, 0.05, +131.2544743603497, 0.4804521977025941, 0.05, +131.27776804214886, 0.4658736359836192, 0.05, +131.3003439211359, 0.4515175797402874, 0.05, +131.3222131181202, 0.437383939686408, 0.05, +131.34338674140437, 0.42347246568319163, 0.05, +131.36387594908032, 0.4097841535192966, 0.05, +131.38369188165547, 0.39631865150256884, 0.05, +131.4028456925997, 0.3830762188845255, 0.05, +131.4213485476682, 0.3700571013701448, 0.05, +131.43921160544645, 0.3572611555647387, 0.05, +131.4564460486634, 0.3446888643387118, 0.05, +131.47306307629447, 0.33234055262164863, 0.05, +131.48907386636546, 0.3202158014198883, 0.05, +131.50448961267026, 0.30831492609613415, 0.05, +131.51932152962638, 0.29663833912227255, 0.05, +131.53358082949694, 0.2851859974112482, 0.05, +131.54727872613498, 0.27395793276075625, 0.05, +131.56042643920685, 0.26295426143731504, 0.05, +131.57303520587882, 0.2521753334393832, 0.05, +131.5851162433976, 0.2416207503756957, 0.05, +131.59668080418805, 0.23129121580891754, 0.05, +131.60774012600774, 0.22118643639364016, 0.05, +131.618305461374, 0.21130670732523532, 0.05, +131.6283880479904, 0.20165173232764277, 0.05, +131.63799915882817, 0.19222221675512743, 0.05, +131.64715004346485, 0.18301769273373, 0.05, +131.6558519638724, 0.1740384081511798, 0.05, +131.66411619354471, 0.16528459344635835, 0.05, +131.67195400367407, 0.15675620258720874, 0.05, +131.67937666498506, 0.14845322621937457, 0.05, +131.68639544898886, 0.14037568007604567, 0.05, +131.69302164459006, 0.13252391202417657, 0.05, +131.69926652691754, 0.12489764654963682, 0.05, +131.70514138039192, 0.11749706948789643, 0.05, +131.71065750461761, 0.11032248451395085, 0.05, +131.71582617407452, 0.10337338913805734, 0.05, +131.72065868481096, 0.0966502147287653, 0.05, +131.72516633440964, 0.09015299197337541, 0.05, +131.72936041850818, 0.083881681970952, 0.05, +131.73325222758353, 0.07783618150696632, 0.05, +131.7368530609887, 0.07201666810312297, 0.05, +131.7401742309577, 0.06642339938002745, 0.05, +131.7432270219987, 0.06105582082005784, 0.05, +131.74602274567724, 0.055914473570653676, 0.05, +131.74857270779924, 0.050999242440067864, 0.05, +131.75088821065685, 0.04631005715239648, 0.05, +131.75298055977592, 0.041846982381362446, 0.05, +131.75486106348387, 0.03761007415914561, 0.05, +131.75654103249894, 0.03359938030148589, 0.05, +131.75803176346622, 0.02981461934527851, 0.05, +131.75934457422554, 0.026256215186442368, 0.05, +131.76049077761158, 0.022924067720895443, 0.05, +131.76148167305797, 0.01981790892805778, 0.05, +131.762328578419, 0.016938107220255693, 0.05, +131.76304281014504, 0.014284634520771647, 0.05, +131.7636356599389, 0.011856995877165375, 0.05, +131.7641184537255, 0.00965587573220707, 0.05, +131.7645025028736, 0.00768098296213167, 0.05, +131.76479911762613, 0.005932295050602752, 0.05, +131.76501960886685, 0.004409824814265077, 0.05, +131.76517528796637, 0.003113581990254391, 0.05, +131.765277466649, 0.0020435736526281225, 0.05, +131.7653374568817, 0.0011998046540885588, 0.05, +131.76536657078356, 5.822780373383524E-4, 0.05, +131.76537612055697, 1.9099546827747914E-4, 0.05, +131.76537741844032, 2.595766690575156E-5, 0.05, +131.76537741844032, 0.0, 0.05, diff --git a/src/main/resources/map.cfg b/src/main/resources/map.cfg index 8055d787..760a8067 100644 --- a/src/main/resources/map.cfg +++ b/src/main/resources/map.cfg @@ -51,8 +51,8 @@ drive { kP0: 0.0003 kI0: 0.1 kD0: 3.0 - kP1: 0.125 - kI1: 0.0000005 + kP1: 0.2 + kI1: 0.000000 kD1: 0 max_speed: 12.0127 fwd_lim_norm_open: true @@ -78,8 +78,8 @@ drive { kP0: 0.0003 kI0: 0.1 kD0: 3.0 - kP1: 0.125 - kI1: 0.0000005 + kP1: 0.2 + kI1: 0.000000 kD1: 0 max_speed: 12.0127 fwd_lim_norm_open: true diff --git a/src/main/resources/rightProfile.csv b/src/main/resources/rightProfile.csv index e787add6..1a3e15f8 100644 --- a/src/main/resources/rightProfile.csv +++ b/src/main/resources/rightProfile.csv @@ -1,978 +1,1077 @@ +1076 6.2499999999999995E-6, 2.4999999999999995E-4, 0.05, -2.2386850691897895E-5, 3.227370138379579E-4, 0.05, -5.8694738625745044E-5, 7.26157758676943E-4, 0.05, -1.2324200564308514E-4, 0.0012909453403468021, 0.05, -2.2409688149547963E-4, 0.0020170975170478896, 0.05, -3.693274123767641E-4, 0.0029046106176256895, 0.05, -5.670013715651596E-4, 0.00395347918376791, 0.05, -5.879601311338825E-4, 4.191751913744573E-4, 0.05, -7.674468699291542E-4, 0.0035897347759054326, 0.05, -9.890383267014823E-4, 0.00443182913544656, 0.05, -0.0012571681090572718, 0.005362595647115792, 0.05, -0.0015762710723104003, 0.006382059265062567, 0.05, -0.0019507823166314878, 0.007490224886421749, 0.05, -0.002385138289477448, 0.008687119456919197, 0.05, -0.0028837765816741305, 0.009972765843933654, 0.05, -0.0034511356213411436, 0.011347180793340265, 0.05, -0.004091656636276145, 0.01281042029870003, 0.05, -0.004809781328551768, 0.014362493845512449, 0.05, -0.0056099539787781505, 0.01600345300452764, 0.05, -0.006496621385322449, 0.01773334813088595, 0.05, -0.007474232137958061, 0.019552215052712246, 0.05, -0.008547238457065504, 0.021460126382148854, 0.05, -0.009720094858455819, 0.023457128027806286, 0.05, -0.010997259997402687, 0.025543302778937356, 0.05, -0.012383195310439597, 0.02771870626073821, 0.05, -0.01388236711734329, 0.029983436138073825, 0.05, -0.01549924571395102, 0.03233757193215462, 0.05, -0.017238306472238764, 0.03478121516575486, 0.05, -0.019104029695226395, 0.037314464459752644, 0.05, -0.021100901325876616, 0.03993743261300438, 0.05, -0.02323341404275885, 0.04265025433764468, 0.05, -0.02550606602303955, 0.04545303960561405, 0.05, -0.027923363558116455, 0.04834595070153814, 0.05, -0.030489819634182173, 0.05132912152131438, 0.05, -0.0332099558708069, 0.0544027247324945, 0.05, -0.036088302798121835, 0.05756693854629871, 0.05, -0.03912939969898002, 0.06082193801716375, 0.05, -0.04233779663068847, 0.0641679386341689, 0.05, -0.045718053512141144, 0.06760513762905344, 0.05, -0.0492747423194455, 0.0711337761460871, 0.05, -0.053012446820943866, 0.07475409002996734, 0.05, -0.0569357637583642, 0.07846633874840668, 0.05, -0.06104930407065019, 0.08227080624571984, 0.05, -0.06535769266623548, 0.08616777191170573, 0.05, -0.06986557090640186, 0.09015756480332746, 0.05, -0.07457759591418688, 0.09424050015570042, 0.05, -0.07949844308569051, 0.09841694343007268, 0.05, -0.08463280591449138, 0.10268725657601716, 0.05, -0.08998539834118595, 0.1070518485338915, 0.05, -0.09556095472025564, 0.11151112758139362, 0.05, -0.10136423213178712, 0.1160655482306296, 0.05, -0.1074000110505515, 0.12071557837528746, 0.05, -0.11367309703546931, 0.12546171969835632, 0.05, -0.1201883219502646, 0.13030449829590585, 0.05, -0.12695054594338442, 0.1352444798623966, 0.05, -0.13396465833035268, 0.14028224773936496, 0.05, -0.14123557985284538, 0.14541843044985397, 0.05, -0.14876826479315167, 0.1506536988061257, 0.05, -0.1565677014968564, 0.15598873407409447, 0.05, -0.16463891555501675, 0.16142428116320712, 0.05, -0.1729869719435974, 0.16696112777161315, 0.05, -0.18161697567942606, 0.17260007471657277, 0.05, -0.19053407579650314, 0.1783420023415414, 0.05, -0.1997434666854864, 0.1841878177796654, 0.05, -0.2092503908166945, 0.19013848262416194, 0.05, -0.21906014144649927, 0.19619501259609515, 0.05, -0.22917806502593008, 0.20235847158861633, 0.05, -0.2396095640153038, 0.20862997978747455, 0.05, -0.25036010009014587, 0.21501072149684056, 0.05, -0.26143519718004826, 0.22150194179804802, 0.05, -0.2728404438469759, 0.22810493333855356, 0.05, -0.2845814982425423, 0.234821087911328, 0.05, -0.2966640896615713, 0.24165182838057997, 0.05, -0.30909402350129805, 0.24859867679453437, 0.05, -0.3218771845249579, 0.25566322047319723, 0.05, -0.33501954075662566, 0.2628471246333558, 0.05, -0.3485271475446089, 0.27015213575966507, 0.05, -0.3624061517772686, 0.27758008465319434, 0.05, -0.37666279640195977, 0.28513289249382384, 0.05, -0.39130342465812834, 0.2928125651233712, 0.05, -0.40633448477319667, 0.3006212023013664, 0.05, -0.42176253518635065, 0.30856100826307975, 0.05, -0.4375942493567018, 0.3166342834070236, 0.05, -0.4538364206057059, 0.3248434249800809, 0.05, -0.47049596807195077, 0.3331909493248978, 0.05, -0.48757994208447175, 0.34167948025042, 0.05, -0.5050955294231096, 0.3503117467727569, 0.05, -0.5230500597619031, 0.35909060677587024, 0.05, -0.541451011508659, 0.3680190349351181, 0.05, -0.56030601803295, 0.3771001304858197, 0.05, -0.5796228740678055, 0.3863371206971107, 0.05, -0.5994095422844102, 0.39573336433209466, 0.05, -0.619674160063842, 0.4052923555886354, 0.05, -0.6404250465262562, 0.4150177292482847, 0.05, -0.6616707092054055, 0.42491325358298676, 0.05, -0.6834198517660498, 0.4349828512128859, 0.05, -0.7056813811511604, 0.4452305877022121, 0.05, -0.728464415072274, 0.4556606784222708, 0.05, -0.7517782897756624, 0.4662774940677686, 0.05, -0.7756325677937412, 0.47708556036157745, 0.05, -0.8000346501196931, 0.48804164651903664, 0.05, -0.8249897476277894, 0.4991019501619254, 0.05, -0.8505032600050757, 0.5102702475457249, 0.05, -0.8765807789317628, 0.5215503785337421, 0.05, -0.9032280912298709, 0.5329462459621628, 0.05, -0.9304511817649072, 0.5444618107007259, 0.05, -0.9582562363847296, 0.5561010923964479, 0.05, -0.9866496444834754, 0.567868161974916, 0.05, -1.0156380015273658, 0.5797671408778103, 0.05, -1.0452281114547957, 0.5918021985485953, 0.05, -1.0754269886289334, 0.6039775434827521, 0.05, -1.1062418598092, 0.6162974236053361, 0.05, -1.137680165916327, 0.6287661221425376, 0.05, -1.1697495635329367, 0.6413879523321964, 0.05, -1.2024579257304968, 0.6541672439512026, 0.05, -1.2358133437009207, 0.6671083594084759, 0.05, -1.2698241268956332, 0.6802156638942493, 0.05, -1.3044988037709118, 0.6934935375055726, 0.05, -1.3398461217256503, 0.7069463590947707, 0.05, -1.3758750473217107, 0.7205785119212079, 0.05, -1.4125947653345237, 0.7343943602562588, 0.05, -1.450014678699714, 0.7483982673038051, 0.05, -1.4881444069534204, 0.7625945650741306, 0.05, -1.5269937846149861, 0.7769875532313153, 0.05, -1.566572860875002, 0.7915815252003191, 0.05, -1.6068918953839773, 0.8063806901795049, 0.05, -1.6479613581566135, 0.8213892554527253, 0.05, -1.6897919254096463, 0.8366113450606556, 0.05, -1.732394476948864, 0.8520510307843524, 0.05, -1.7757800926747445, 0.8677123145176124, 0.05, -1.8199600496675454, 0.8835991398560192, 0.05, -1.8649458168219815, 0.8997153430887201, 0.05, -1.91074905113206, 0.9160646862015688, 0.05, -1.957381593395964, 0.9326508452780804, 0.05, -2.004855461984542, 0.9494773717715578, 0.05, -2.0531828489845387, 0.9665477399999365, 0.05, -2.102376113035355, 0.9838652810163188, 0.05, -2.1524477739753998, 1.0014332188009014, 0.05, -2.2034105059348112, 1.0192546391882327, 0.05, -2.2552771318888882, 1.037332519081536, 0.05, -2.308057705811828, 1.0556114784587907, 0.05, -2.3617594100623718, 1.0740340850108734, 0.05, -2.416389395306889, 1.0925997048903484, 0.05, -2.4719547687006416, 1.1113074678750479, 0.05, -2.528462578028992, 1.13015618656701, 0.05, -2.5859197988023173, 1.149144415466501, 0.05, -2.6443333219112493, 1.1682704621786426, 0.05, -2.703709937555784, 1.187532312890693, 0.05, -2.7640563246110323, 1.206927741104965, 0.05, -2.8253790345626553, 1.22645419903246, 0.05, -2.887684480756759, 1.2461089238820733, 0.05, -2.9509789228590493, 1.2658888420458096, 0.05, -3.0152684571759405, 1.2857906863378283, 0.05, -3.080559000542985, 1.305810867340886, 0.05, -3.1468562808641627, 1.3259456064235566, 0.05, -3.21416582440286, 1.3461908707739485, 0.05, -3.2824929436396464, 1.3665423847357239, 0.05, -3.3518427263128157, 1.3869956534633812, 0.05, -3.4222200239553646, 1.4075459528509793, 0.05, -3.493629444242399, 1.428188405740692, 0.05, -3.566075336438915, 1.4489178439303176, 0.05, -3.6395617854114204, 1.4697289794501047, 0.05, -3.714092600659388, 1.4906163049593537, 0.05, -3.789671309852293, 1.511574183858098, 0.05, -3.866301147521345, 1.532596753381035, 0.05, -3.943985050305787, 1.5536780556888488, 0.05, -4.022725648447117, 1.5748119628265973, 0.05, -4.102525257612094, 1.595992183299545, 0.05, -4.183385877672733, 1.6172124012127775, 0.05, -4.265309182238019, 1.638466091305712, 0.05, -4.348296515476363, 1.6597466647668986, 0.05, -4.432348888577501, 1.68104746202275, 0.05, -4.517466972997357, 1.7023616883971353, 0.05, -4.603651102162829, 1.7236825833094231, 0.05, -4.690901263069808, 1.7450032181395798, 0.05, -4.779217095820471, 1.7663166550132625, 0.05, -4.868597894188802, 1.7876159673666383, 0.05, -4.959042599416428, 1.8088941045525135, 0.05, -5.050549805211194, 1.8301441158953198, 0.05, -5.1431177510965265, 1.8513589177066576, 0.05, -5.236744328519916, 1.8725315484677942, 0.05, -5.331427075530848, 1.8936549402186398, 0.05, -5.427163183705254, 1.9147221634881197, 0.05, -5.523949492683836, 1.9357261795716496, 0.05, -5.62178249847868, 1.9566601158968868, 0.05, -5.720658352350185, 1.977517077430101, 0.05, -5.820572863596932, 1.9982902249349461, 0.05, -5.9215215005976125, 2.0189727400136084, 0.05, -6.023499399347384, 2.039557974995426, 0.05, -6.126501362110918, 2.060039255270698, 0.05, -6.23052186053252, 2.080409968432043, 0.05, -6.335555046065482, 2.1006637106592336, 0.05, -6.441594747315021, 2.1207940249907637, 0.05, -6.548634478773086, 2.1407946291613094, 0.05, -6.65666744366913, 2.1606592979208985, 0.05, -6.76568654128356, 2.1803819522885868, 0.05, -6.87568436710076, 2.199956516344014, 0.05, -6.986653227386243, 2.219377205709649, 0.05, -7.098585134263258, 2.238638137540311, 0.05, -7.2114718176122325, 2.2577336669794867, 0.05, -7.325304730699811, 2.276658261751573, 0.05, -7.4400750549457255, 2.295406484918293, 0.05, -7.555773703485182, 2.313972970789137, 0.05, -7.672391332080349, 2.3323525719033342, 0.05, -7.789918342654135, 2.3505402114757294, 0.05, -7.90834488938721, 2.368530934661481, 0.05, -8.027660883857571, 2.3863198894072335, 0.05, -8.147856005140373, 2.4039024256560366, 0.05, -8.26891970313836, 2.4212739599597546, 0.05, -8.390841203669348, 2.4384300106197445, 0.05, -8.513609517893444, 2.455366284481925, 0.05, -8.637213447680283, 2.4720785957367855, 0.05, -8.761641589957819, 2.4885628455507063, 0.05, -8.886882344251603, 2.504815085875678, 0.05, -9.012923918256776, 2.520831480103474, 0.05, -9.13975433584769, 2.536608351818274, 0.05, -9.26736144059416, 2.5521420949294016, 0.05, -9.395732902634553, 2.5674292408078494, 0.05, -9.524856224505468, 2.5824664374183253, 0.05, -9.654718746898578, 2.597250447862202, 0.05, -9.785307654339082, 2.611778148810099, 0.05, -9.91660998078101, 2.626046528838551, 0.05, -10.048612615114765, 2.6400526866751033, 0.05, -10.181302306582758, 2.6537938293598473, 0.05, -10.314665669980855, 2.667267267961937, 0.05, -10.448689188212661, 2.680470364636126, 0.05, -10.5833592253342, 2.6934007424307764, 0.05, -10.718662021456018, 2.7060559224363376, 0.05, -10.854583704804899, 2.7184336669776337, 0.05, -10.991110291002903, 2.7305317239600915, 0.05, -11.12822769414896, 2.742348062921137, 0.05, -11.265921725358307, 2.7538806241869573, 0.05, -11.40417809988236, 2.7651274904810497, 0.05, -11.542982441468519, 2.7760868317231644, 0.05, -11.682320284054367, 2.786756851716942, 0.05, -11.822177080589691, 2.797135930706504, 0.05, -11.962538200769211, 2.807222403590393, 0.05, -12.103388941087413, 2.8170148063640434, 0.05, -12.244714523782747, 2.8265116539066746, 0.05, -12.386500102331862, 2.8357115709822933, 0.05, -12.528735850687585, 2.844714967114455, 0.05, -12.671417051070398, 2.8536240076562462, 0.05, -12.814539048206312, 2.8624399427182916, 0.05, -12.958097252171688, 2.871164079307548, 0.05, -13.102087138868981, 2.87979773394584, 0.05, -13.246504246172687, 2.888342146074119, 0.05, -13.391344179958118, 2.896798675708616, 0.05, -13.536602606546838, 2.905168531774399, 0.05, -13.682275256845744, 2.913453005978115, 0.05, -13.828357925936336, 2.921653381811863, 0.05, -13.97484647264002, 2.929770934073701, 0.05, -14.12173681333548, 2.937806813909172, 0.05, -14.269024932458287, 2.9457623824561354, 0.05, -14.416706872605584, 2.9536388029459606, 0.05, -14.564778738346257, 2.9614373148134825, 0.05, -14.71323669458652, 2.9691591248052442, 0.05, -14.862076965671024, 2.976805421690094, 0.05, -15.011295837628428, 2.984377439148066, 0.05, -15.16088965443765, 2.9918763361844594, 0.05, -15.310854818391226, 2.999303279071533, 0.05, -15.461187790642, 3.006659445015504, 0.05, -15.611885090590498, 3.0139459989699344, 0.05, -15.762943290821587, 3.021164004621778, 0.05, -15.914359026662304, 3.028314716814328, 0.05, -16.066128985130145, 3.035399169356817, 0.05, -16.218249909317905, 3.042418483755188, 0.05, -16.37071859783929, 3.049373770427679, 0.05, -16.523531904235515, 3.056266127924542, 0.05, -16.676686735065665, 3.0630966166030165, 0.05, -16.83018004960467, 3.0698662907800855, 0.05, -16.984008860748357, 3.0765762228737175, 0.05, -17.138170233879226, 3.083227462617343, 0.05, -17.292661285207277, 3.0898210265610326, 0.05, -17.44747918249988, 3.0963579458520805, 0.05, -17.602621143905008, 3.1028392281025994, 0.05, -17.758084436202633, 3.109265845952525, 0.05, -17.91386637920555, 3.115638860058379, 0.05, -18.069964338065066, 3.1219591771902846, 0.05, -18.22637572757052, 3.1282277901090647, 0.05, -18.383098011332574, 3.1344456752410945, 0.05, -18.540128699536904, 3.140613764086627, 0.05, -18.69746534865286, 3.146732982319098, 0.05, -18.855105561948694, 3.152804265916712, 0.05, -19.01304699045094, 3.1588285700448884, 0.05, -19.171287325845764, 3.164806707896487, 0.05, -19.329824310076415, 3.1707396846130047, 0.05, -19.488655726310558, 3.1766283246828846, 0.05, -19.647779401911112, 3.1824735120110903, 0.05, -19.80719320793387, 3.1882761204551695, 0.05, -19.9668950586322, 3.1940370139665624, 0.05, -20.126882910969357, 3.199757046743158, 0.05, -20.287154764017394, 3.2054370609607443, 0.05, -20.447708655948237, 3.2110778386168164, 0.05, -20.608542670755522, 3.216680296145741, 0.05, -20.76965492865889, 3.2222451580673983, 0.05, -20.931043592786683, 3.227773282555826, 0.05, -21.09270686569566, 3.2332654581795564, 0.05, -21.254642988992927, 3.238722465945339, 0.05, -21.41685024352911, 3.2441450907236655, 0.05, -21.579326948982274, 3.249534109063229, 0.05, -21.742071463450564, 3.254890289365825, 0.05, -21.90508218153006, 3.2602143615898647, 0.05, -22.068357537801933, 3.2655071254374954, 0.05, -22.231896002462697, 3.270769293215264, 0.05, -22.39569608272405, 3.276001605227085, 0.05, -22.559756322142714, 3.281204788373262, 0.05, -22.72407530138418, 3.286379584829319, 0.05, -22.888651635904363, 3.2915266904036664, 0.05, -23.053483976576622, 3.296646813445155, 0.05, -23.218571009932962, 3.3017406671267815, 0.05, -23.38391145747166, 3.3068089507739327, 0.05, -23.54950407458562, 3.311852342279257, 0.05, -23.715347651485107, 3.3168715379897384, 0.05, -23.88144101240958, 3.321867218489478, 0.05, -24.047783015237613, 3.326840056560655, 0.05, -24.214372550429903, 3.331790703845817, 0.05, -24.38120854250225, 3.3367198414469392, 0.05, -24.548289948952615, 3.3416281290072924, 0.05, -24.715615758887694, 3.3465161987015803, 0.05, -24.883184995021818, 3.3513847226824587, 0.05, -25.050996711825235, 3.356234336068372, 0.05, -25.2190499946747, 3.3610656569893096, 0.05, -25.387343962453265, 3.3658793555712476, 0.05, -25.555877764529615, 3.3706760415270165, 0.05, -25.724650581613165, 3.375456341670969, 0.05, -25.893661625549484, 3.3802208787263623, 0.05, -26.06291013898022, 3.384970268614747, 0.05, -26.23239539569843, 3.3897051343641236, 0.05, -26.402116699803265, 3.3944260820967043, 0.05, -26.572073385718724, 3.3991337183091743, 0.05, -26.742264818056796, 3.403828646761414, 0.05, -26.91269039172813, 3.4085114734267146, 0.05, -27.08334953146862, 3.4131827948097992, 0.05, -27.25424169179679, 3.417843206563372, 0.05, -27.42536635687897, 3.422493301643651, 0.05, -27.59672304019823, 3.427133666385221, 0.05, -27.76831128479086, 3.431764891852611, 0.05, -27.940130663316957, 3.4363875705218785, 0.05, -28.112180777301077, 3.441002279682378, 0.05, -28.284461257036508, 3.4456095947086016, 0.05, -28.456971762651055, 3.4502101122909243, 0.05, -28.629711982567247, 3.4548043983238905, 0.05, -28.80268163413257, 3.4593930313064334, 0.05, -28.97588046383942, 3.4639765941370104, 0.05, -29.149308246293725, 3.4685556490860745, 0.05, -29.322964785408125, 3.4731307822879818, 0.05, -29.496849913236534, 3.4777025565682, 0.05, -29.67096349065959, 3.4822715484611075, 0.05, -29.84530540700005, 3.48683832680919, 0.05, -30.019875580105193, 3.491403462102825, 0.05, -30.19467395634927, 3.49596752488157, 0.05, -30.369700510552654, 3.5005310840676716, 0.05, -30.544955246015714, 3.5050947092612033, 0.05, -30.720438194570484, 3.509658971095422, 0.05, -30.896149416384784, 3.5142244362859847, 0.05, -31.072089000398346, 3.518791680271215, 0.05, -31.248257063686715, 3.523361265767392, 0.05, -31.424653752300163, 3.5279337722689297, 0.05, -31.601279240478586, 3.5325097635684513, 0.05, -31.778133731357205, 3.5370898175723706, 0.05, -31.95521745670256, 3.5416745069071256, 0.05, -32.132530676728564, 3.5462644005201254, 0.05, -32.31007368113757, 3.5508600881801233, 0.05, -32.48784678764131, 3.5554621300748, 0.05, -32.66585034327786, 3.5600711127309834, 0.05, -32.844084724627265, 3.564687626988101, 0.05, -33.02255033642108, 3.5693122358762164, 0.05, -33.20124761309364, 3.5739455334512997, 0.05, -33.380177018547386, 3.5785881090748455, 0.05, -33.55933904616574, 3.583240552367116, 0.05, -33.73873421838753, 3.5879034444358218, 0.05, -33.91836308765757, 3.5925773854007605, 0.05, -34.09822623623821, 3.597262971612867, 0.05, -34.27832427634753, 3.601960802186462, 0.05, -34.45865785030392, 3.60667147912772, 0.05, -34.63922763067764, 3.611395607474325, 0.05, -34.82003432044877, 3.6161337954225585, 0.05, -35.001078653171746, 3.62088665445954, 0.05, -35.182361393146955, 3.625654799504203, 0.05, -35.3638833355984, 3.630438849028915, 0.05, -35.54564530719391, 3.635239431910139, 0.05, -35.72764816603295, 3.640057176780894, 0.05, -35.90989280071907, 3.644892693722418, 0.05, -36.09238013271624, 3.649746639943358, 0.05, -36.275111115510306, 3.6546196558814517, 0.05, -36.45808673360897, 3.659512361973343, 0.05, -36.64130800571892, 3.6644254421989033, 0.05, -36.82477598173349, 3.6693595202914033, 0.05, -37.00849174476116, 3.674315260553459, 0.05, -37.19245641252554, 3.6792933552875633, 0.05, -37.37667113448633, 3.6842944392157975, 0.05, -37.561137094395136, 3.689319198176144, 0.05, -37.745855510236055, 3.694368316818323, 0.05, -37.930827634248345, 3.6994424802457413, 0.05, -38.116054753207564, 3.7045423791843746, 0.05, -38.30153818871333, 3.7096687101152725, 0.05, -38.48727929829751, 3.7148221916835493, 0.05, -38.67327947448775, 3.7200035238047793, 0.05, -38.859540144503136, 3.7252134003076725, 0.05, -39.046062774859614, 3.7304526071295383, 0.05, -39.23284886454194, 3.7357217936466167, 0.05, -39.41989995411412, 3.7410217914435817, 0.05, -39.60721761720264, 3.7463532617704236, 0.05, -39.794803467045526, 3.7517169968576796, 0.05, -39.982659154891344, 3.7571137569163304, 0.05, -40.170786370229806, 3.7625443067692923, 0.05, -40.359186841153296, 3.7680094184698443, 0.05, -40.5478623347241, 3.77350987141616, 0.05, -40.73681465742051, 3.7790464539281907, 0.05, -40.926045658373546, 3.7846200190607173, 0.05, -41.11555722161028, 3.79023126473463, 0.05, -41.305351278544414, 3.7958811386826916, 0.05, -41.495429796124604, 3.8015703516037633, 0.05, -41.68579478603388, 3.8072997981854697, 0.05, -41.876448301879684, 3.8130703169161055, 0.05, -42.06739243961, 3.818882754606434, 0.05, -42.25862933793527, 3.824737966505299, 0.05, -42.45016117875449, 3.8306368163844384, 0.05, -42.64199018885709, 3.8365802020519824, 0.05, -42.834118639894754, 3.8425690207531793, 0.05, -43.026548846790284, 3.848604137910603, 0.05, -43.2192831706429, 3.8546864770524256, 0.05, -43.412324019460954, 3.8608169763610167, 0.05, -43.60567384734667, 3.866996557714336, 0.05, -43.79933515495522, 3.8732261521710285, 0.05, -43.993310489957395, 3.879506700043429, 0.05, -44.18760244750455, 3.8858391509431915, 0.05, -44.38221367555005, 3.8922245609098693, 0.05, -44.57714686466243, 3.898663782247609, 0.05, -44.77240475945179, 3.905157895787149, 0.05, -44.96799015417052, 3.9117078943746835, 0.05, -45.16390589319186, 3.9183147804267184, 0.05, -45.36015487148823, 3.924979565927287, 0.05, -45.55674003511032, 3.9317032724419643, 0.05, -45.75366438527122, 3.938487003218032, 0.05, -45.95093097237299, 3.9453317420353353, 0.05, -46.14854290456228, 3.952238643785734, 0.05, -46.34650334017809, 3.959208712316276, 0.05, -46.54481549367515, 3.9662430699412137, 0.05, -46.743482635223444, 3.973342830965818, 0.05, -46.942508087035556, 3.9805090362423043, 0.05, -47.1418952333407, 3.9877429261028783, 0.05, -47.34164750922041, 3.995045517594172, 0.05, -47.54176841057267, 4.002418027045309, 0.05, -47.74226149013378, 4.0098615912221565, 0.05, -47.94313035791629, 4.017377355650203, 0.05, -48.14437868449767, 4.0249665316276175, 0.05, -48.34601019784538, 4.032630266954253, 0.05, -48.548028688380434, 4.040369810701082, 0.05, -48.75043800324053, 4.0481862972020215, 0.05, -48.95324205206613, 4.056080976511962, 0.05, -49.15644480814438, 4.0640551215649285, 0.05, -49.36005030115788, 4.07210986027002, 0.05, -49.56406262834169, 4.080246543676293, 0.05, -49.7684859450871, 4.088466334908201, 0.05, -49.973324472070445, 4.096770539666844, 0.05, -50.17858249188952, 4.105160396381471, 0.05, -50.38426435492811, 4.113637260771786, 0.05, -50.59037446794101, 4.122202260257987, 0.05, -50.79691730862697, 4.130856813719313, 0.05, -51.003897417779996, 4.139602183060503, 0.05, -51.21131939941802, 4.148439632760343, 0.05, -51.41918792087797, 4.1573704291989495, 0.05, -51.62750772106167, 4.166396003674054, 0.05, -51.83628359723347, 4.175517523436016, 0.05, -52.04552041579557, 4.184736371242123, 0.05, -52.255223106800386, 4.194053820096326, 0.05, -52.46539667077409, 4.203471279474139, 0.05, -52.67604616504341, 4.212989885386338, 0.05, -52.88717671908114, 4.2226110807546196, 0.05, -53.09879352556177, 4.232336129612533, 0.05, -53.31090184001542, 4.242166289073004, 0.05, -53.523506987077, 4.2521029412315965, 0.05, -53.736614350556685, 4.262147269593674, 0.05, -53.950229381949804, 4.27230062786234, 0.05, -54.164357593876986, 4.28256423854364, 0.05, -54.37900456315175, 4.29293938549533, 0.05, -54.594175926831966, 4.303427273604269, 0.05, -54.809877386923276, 4.314029201826246, 0.05, -55.026114703502124, 4.324746331576938, 0.05, -55.24289369362877, 4.335579802533027, 0.05, -55.46022023729407, 4.346530873305913, 0.05, -55.67810026873056, 4.357600628729934, 0.05, -55.896539779694, 4.368790219268825, 0.05, -56.115544814767205, 4.380100701463977, 0.05, -56.33512147634607, 4.391533231577214, 0.05, -56.555275911444376, 4.403088701966176, 0.05, -56.77601431935472, 4.414768158206974, 0.05, -56.997342949568875, 4.42657260428312, 0.05, -57.21926809076259, 4.438502823874355, 0.05, -57.441796082353626, 4.450559831820659, 0.05, -57.66493329789265, 4.462744310780586, 0.05, -57.888686152698234, 4.47505709611168, 0.05, -58.11306109252296, 4.487498796494506, 0.05, -58.33806460014889, 4.500070152518522, 0.05, -58.5637031854838, 4.512771706698209, 0.05, -58.78998338043341, 4.525603898992223, 0.05, -59.01691174528482, 4.53856729702824, 0.05, -59.244494850400265, 4.55166210230881, 0.05, -59.47273928296029, 4.5648886512004445, 0.05, -59.701651642703325, 4.578247194860683, 0.05, -59.93123852605189, 4.591737666971335, 0.05, -60.16150653567908, 4.605360192543816, 0.05, -60.39246226504235, 4.619114587265288, 0.05, -60.62411229615768, 4.633000622306656, 0.05, -60.85646319558333, 4.64701798851289, 0.05, -61.08952150777126, 4.661166243758546, 0.05, -61.323293744063456, 4.675444725843868, 0.05, -61.55778638040157, 4.689852726762368, 0.05, -61.79300585115852, 4.704389415138914, 0.05, -62.02895853962599, 4.719053769349451, 0.05, -62.26565076700719, 4.733844547623907, 0.05, -62.50308879505401, 4.748760560936511, 0.05, -62.741278802248914, 4.763800143898074, 0.05, -62.98022688651468, 4.778961685315347, 0.05, -63.21993905790643, 4.794243427835032, 0.05, -63.460421213292356, 4.809643107718566, 0.05, -63.70167914434865, 4.825158621125894, 0.05, -63.94371851618504, 4.840787436727685, 0.05, -64.18654486463174, 4.856526968933983, 0.05, -64.43016357403349, 4.872374188034774, 0.05, -64.67457987652331, 4.888326049796532, 0.05, -64.91979883295417, 4.904379128617105, 0.05, -65.1658253293705, 4.920529928326746, 0.05, -65.41266404988941, 4.9367744103782245, 0.05, -65.66031947576421, 4.953108517496016, 0.05, -65.90879587196568, 4.969527924029275, 0.05, -66.15809726094575, 4.986027779601356, 0.05, -66.40822742448334, 5.002603270751731, 0.05, -66.65918987852126, 5.019249080758474, 0.05, -66.9109878584662, 5.035959598898654, 0.05, -67.16362431438327, 5.052729118341369, 0.05, -67.41710187920728, 5.069551296480149, 0.05, -67.6714228653064, 5.086419721982327, 0.05, -67.92658924868883, 5.103327667648572, 0.05, -68.18260263966843, 5.120267819592173, 0.05, -68.4394642829381, 5.137232865393504, 0.05, -68.69717503097576, 5.154214960753108, 0.05, -68.95573532752464, 5.171205930977649, 0.05, -69.21514519677416, 5.188197384990477, 0.05, -69.4754042184139, 5.205180432794936, 0.05, -69.73651151757862, 5.222145983294397, 0.05, -69.99846574331778, 5.239084514783204, 0.05, -70.2612650547916, 5.255986229476222, 0.05, -70.52490710199775, 5.272840944123336, 0.05, -70.78938901319148, 5.289638223874614, 0.05, -71.05470737238042, 5.306367183778706, 0.05, -71.32085821126155, 5.323016777622511, 0.05, -71.58783698573468, 5.3395754894626455, 0.05, -71.85563856746221, 5.3560316345503995, 0.05, -72.12425722543153, 5.372373159386581, 0.05, -72.39368661484498, 5.388587788268985, 0.05, -72.66391976161094, 5.404662935319192, 0.05, -72.93494905012533, 5.4205857702877775, 0.05, -73.20676621187333, 5.436343234960163, 0.05, -73.47936231892693, 5.451922141072047, 0.05, -73.75272776451156, 5.467308911692513, 0.05, -74.0268522641307, 5.482489992382625, 0.05, -74.30172484385884, 5.497451594562719, 0.05, -74.57733383319278, 5.512179786679014, 0.05, -74.8536668620101, 5.526660576346296, 0.05, -75.1307108556176, 5.5408798721497226, 0.05, -75.40845203303144, 5.55482354827695, 0.05, -75.68687590652819, 5.5684774699349875, 0.05, -75.96596728359701, 5.581827541376399, 0.05, -76.24571026613738, 5.594859650807442, 0.05, -76.52608825853733, 5.607559847998896, 0.05, -76.80708397088088, 5.619914246871008, 0.05, -77.08867942838846, 5.631909150151513, 0.05, -77.37085597967548, 5.643531025740513, 0.05, -77.65359430904596, 5.654766587409488, 0.05, -77.93687444926863, 5.665602804453496, 0.05, -78.22067579652342, 5.676026945095949, 0.05, -78.50497712794454, 5.6860266284223, 0.05, -78.78975661955319, 5.695589832172987, 0.05, -79.07499186805565, 5.70470497004913, 0.05, -79.36065991128916, 5.713360864670228, 0.05, -79.6467372556029, 5.721546886274827, 0.05, -79.93319989879105, 5.729252863762788, 0.05, -80.22002335854154, 5.736469195009751, 0.05, -80.50718270266145, 5.743186882398368, 0.05, -80.79465257868839, 5.74939752053879, 0.05, -81.08240724674572, 5.755093361146537, 0.05, -81.37042061399765, 5.76026734503861, 0.05, -81.65866626578219, 5.76491303569074, 0.05, -81.94711750684726, 5.769024821301532, 0.05, -82.23574739197987, 5.7725977026522255, 0.05, -82.52452876914352, 5.775627543272967, 0.05, -82.81343431520575, 5.7781109212448385, 0.05, -83.10243657920742, 5.780045280033265, 0.05, -83.39150801196523, 5.781428655156235, 0.05, -83.68062101909038, 5.7822601425031, 0.05, -83.96974799186607, 5.782539455513731, 0.05, -84.25886134795861, 5.782267121850897, 0.05, -84.54793357911173, 5.781444623062318, 0.05, -84.83693727859853, 5.780073989736053, 0.05, -85.12584519129784, 5.778158253986285, 0.05, -85.41463025213667, 5.77570121677673, 0.05, -85.70326561231292, 5.772707203524847, 0.05, -85.99172468795553, 5.7691815128521, 0.05, -86.27998120058649, 5.765130252619344, 0.05, -86.56800919253051, 5.760559838880328, 0.05, -86.85578308087925, 5.755477766974783, 0.05, -87.14327768688898, 5.749892120194679, 0.05, -87.430468252609, 5.743811314400474, 0.05, -87.7173304867267, 5.7372446823537775, 0.05, -88.00384059370245, 5.730202139515019, 0.05, -88.28997528589403, 5.722693843831728, 0.05, -88.57571182007652, 5.714730683649811, 0.05, -88.86102801723125, 5.70632394309449, 0.05, -89.14590228926016, 5.697485440578203, 0.05, -89.43031364143685, 5.6882270435336775, 0.05, -89.71424171017443, 5.678561374751674, 0.05, -89.99766677936768, 5.668501383864869, 0.05, -90.28056977418105, 5.658059896267288, 0.05, -90.56293228881607, 5.647250292700514, 0.05, -90.84473659844775, 5.6360861926335915, 0.05, -91.12596565163966, 5.624581063838156, 0.05, -91.40660310548363, 5.612749076879438, 0.05, -91.68663329171824, 5.600603724692333, 0.05, -91.96604126462569, 5.588159458148912, 0.05, -92.24481276502564, 5.575430007999099, 0.05, -92.52293423706146, 5.562429440716346, 0.05, -92.80039283607772, 5.549171980325092, 0.05, -93.07717639908975, 5.535671260240697, 0.05, -93.35327347066917, 5.521941431588382, 0.05, -93.62867327924725, 5.507996171561747, 0.05, -93.90336572331266, 5.4938488813081126, 0.05, -94.17734138181459, 5.479513170038399, 0.05, -94.45059150943433, 5.465002552394953, 0.05, -94.72310799832293, 5.450329777771899, 0.05, -94.99488338878514, 5.435507809244273, 0.05, -95.265910854358, 5.420549311457264, 0.05, -95.53618418365922, 5.405466586024416, 0.05, -95.80569777084338, 5.3902717436833, 0.05, -96.07444660663279, 5.374976715788285, 0.05, -96.34242624466403, 5.359592760624802, 0.05, -96.60963281336203, 5.344131373959888, 0.05, -96.8760629861119, 5.328603454997472, 0.05, -97.14171394999366, 5.313019277635005, 0.05, -97.40658343109934, 5.297389622113676, 0.05, -97.67066963578137, 5.281724093640588, 0.05, -97.93397125093259, 5.26603230302449, 0.05, -98.19648744290635, 5.250323839475275, 0.05, -98.45821780940521, 5.234607329977455, 0.05, -98.7191623895566, 5.218891603027768, 0.05, -98.9793216304361, 5.203184817589939, 0.05, -99.23869638753672, 5.187495142012373, 0.05, -99.49728787865182, 5.171829822301904, 0.05, -99.75509769709049, 5.156196368773328, 0.05, -100.01212779935828, 5.140602045355769, 0.05, -100.26838045150225, 5.125053042879386, 0.05, -100.52385825418156, 5.109556053586234, 0.05, -100.77856409386354, 5.094116793639635, 0.05, -101.03250115852032, 5.0787412931355895, 0.05, -101.285672898395, 5.063434797493641, 0.05, -101.53808303138203, 5.0482026597404515, 0.05, -101.78973549893874, 5.033049351134234, 0.05, -102.04063449651198, 5.017979951464901, 0.05, -102.29078440984206, 5.002998266601543, 0.05, -102.54018985469894, 4.98810889713762, 0.05, -102.78885561589512, 4.97331522392371, 0.05, -103.0367866644474, 4.958620971045767, 0.05, -103.2839881298126, 4.944029307303958, 0.05, -103.53046530893684, 4.929543582484829, 0.05, -103.77622362891721, 4.915166399607232, 0.05, -104.0212686560784, 4.900900543223867, 0.05, -104.26560607218148, 4.886748322061657, 0.05, -104.50924168565166, 4.872712269403385, 0.05, -104.75218137825726, 4.858793852112185, 0.05, -104.99443114438986, 4.844995322651918, 0.05, -105.23599707306515, 4.831318573505786, 0.05, -105.47688531195847, 4.81776477786651, 0.05, -105.71710206947766, 4.804335150383954, 0.05, -105.9566536387039, 4.791031384524775, 0.05, -106.19554632809556, 4.777853787833266, 0.05, -106.43378653313931, 4.764804100875175, 0.05, -106.6713806471656, 4.751882280525989, 0.05, -106.90833513243767, 4.739089705441432, 0.05, -107.14465643760057, 4.726426103257975, 0.05, -107.38035106963538, 4.713892640696144, 0.05, -107.61542551863593, 4.701488980011132, 0.05, -107.8498863004491, 4.689215636263371, 0.05, -108.08373993309901, 4.677072652998337, 0.05, -108.31699291644628, 4.665059666945541, 0.05, -108.54965176708114, 4.653177012697171, 0.05, -108.7817229818957, 4.641424296291105, 0.05, -109.0132130349996, 4.629801062077817, 0.05, -109.24412840378983, 4.6183073758046955, 0.05, -109.47447553130131, 4.606942550229607, 0.05, -109.70426082686733, 4.595705911320429, 0.05, -109.93349069377766, 4.584597338206495, 0.05, -110.16217148790918, 4.573615882630359, 0.05, -110.39030952672869, 4.5627607763902995, 0.05, -110.61791112287682, 4.5520319229625645, 0.05, -110.84498251193567, 4.541427781176941, 0.05, -111.0715299214859, 4.530948191004671, 0.05, -111.2975595094813, 4.520591759908054, 0.05, -111.52307741451146, 4.510358100603176, 0.05, -111.74808970220607, 4.50024575389215, 0.05, -111.97260242093583, 4.490254374595196, 0.05, -112.19662153967238, 4.480382374731035, 0.05, -112.42015298592477, 4.470628925048012, 0.05, -112.6432026574935, 4.460993431374631, 0.05, -112.86577638133612, 4.45147447685229, 0.05, -113.08787991141158, 4.442070601509016, 0.05, -113.30951898205171, 4.432781412802722, 0.05, -113.5306992517238, 4.423605393441805, 0.05, -113.75142632674549, 4.414541500433729, 0.05, -113.97170574932053, 4.4055884515008445, 0.05, -114.19154302395789, 4.396745492747165, 0.05, -114.41094357911943, 4.388011103230925, 0.05, -114.62991279026555, 4.379384222922399, 0.05, -114.84845596307764, 4.370863456241741, 0.05, -115.06657837566537, 4.362448251754746, 0.05, -115.28428520601959, 4.354136607084409, 0.05, -115.5015816054976, 4.345927989560308, 0.05, -115.71847264801455, 4.3378208503390985, 0.05, -115.93496336008101, 4.329814241329191, 0.05, -116.15105869170263, 4.321906632432243, 0.05, -116.3667635555754, 4.314097277455323, 0.05, -116.58208277415135, 4.306384371518987, 0.05, -116.79702115289389, 4.2987675748508885, 0.05, -117.01158341141155, 4.29124517035307, 0.05, -117.22577420195998, 4.283815810968617, 0.05, -117.43959814534638, 4.2764788677280885, 0.05, -117.65305978826957, 4.2692328584639, 0.05, -117.86616361964808, 4.2620766275701065, 0.05, -118.07891406128843, 4.25500883280713, 0.05, -118.29131551090933, 4.248028992418106, 0.05, -118.50337227555173, 4.241135292848056, 0.05, -118.71508862147195, 4.234326918404525, 0.05, -118.9264687621842, 4.227602814245129, 0.05, -119.13751684517337, 4.220961659783203, 0.05, -119.34823695628866, 4.214402222305962, 0.05, -119.55863316356755, 4.207924145577806, 0.05, -119.76870943922077, 4.201525513064513, 0.05, -119.97846507926226, 4.195112800829907, 0.05, -120.18789185037146, 4.1885354221837785, 0.05, -120.39697874786397, 4.181737949850302, 0.05, -120.605714756026, 4.174720163240689, 0.05, -120.81408893868904, 4.167483653260838, 0.05, -121.02209036112052, 4.160028448629596, 0.05, -121.22970810384012, 4.152354854392121, 0.05, -121.4369313026185, 4.14446397556766, 0.05, -121.64374909858945, 4.136355919418886, 0.05, -121.85015065288216, 4.128031085854125, 0.05, -122.05612513685412, 4.119489679439015, 0.05, -122.26166177731834, 4.110732809284218, 0.05, -122.46674977661354, 4.101759985904034, 0.05, -122.67137835869393, 4.092571641607763, 0.05, -122.87553679140089, 4.083168654139256, 0.05, -123.07921431935131, 4.073550559008338, 0.05, -123.28240021505654, 4.063717914104537, 0.05, -123.4850837501474, 4.053670701817068, 0.05, -123.68725422094012, 4.043409415854388, 0.05, -123.88890090043324, 4.032933589862333, 0.05, -124.09001309070842, 4.022243805503578, 0.05, -124.29058010466203, 4.0113402790721375, 0.05, -124.49059122609857, 4.000222428730901, 0.05, -124.69003578435876, 3.9888911652037, 0.05, -124.88890306001325, 3.9773455130897664, 0.05, -125.08718237315458, 3.965586262826671, 0.05, -125.28486303019605, 3.953613140829604, 0.05, -125.4819343326028, 3.9414260481351446, 0.05, -125.67838558162414, 3.929024980426649, 0.05, -125.87420606453074, 3.916409658131839, 0.05, -126.0693850900715, 3.903580510815348, 0.05, -126.26391193569586, 3.8905369124871307, 0.05, -126.4577758876932, 3.8772790399467563, 0.05, -126.65096621763435, 3.8638065988228947, 0.05, -126.8434721993935, 3.850119635183108, 0.05, -127.03528308333638, 3.836217678857535, 0.05, -127.22638813865869, 3.8221011064461377, 0.05, -127.41677658394063, 3.807768905638763, 0.05, -127.60643766067112, 3.793221534609644, 0.05, -127.79536060253106, 3.7784588371989463, 0.05, -127.9835346149789, 3.7634802489565153, 0.05, -128.1709488972187, 3.748285644795826, 0.05, -128.35759264105192, 3.7328748766646345, 0.05, -128.54345502279907, 3.717247634942976, 0.05, -128.72852520821374, 3.701403708293714, 0.05, -128.91279234971975, 3.6853428301204616, 0.05, -129.09624558392866, 3.669064684178265, 0.05, -129.27887403963427, 3.6525691141123517, 0.05, -129.46066683149675, 3.6358558372493834, 0.05, -129.64161304927558, 3.6189243555762465, 0.05, -129.82170177322257, 3.601774478940135, 0.05, -130.00092208242333, 3.584406184015052, 0.05, -130.1792630305796, 3.5668189631253244, 0.05, -130.35671364286088, 3.5490122456259985, 0.05, -130.53326294331623, 3.5309860091068703, 0.05, -130.7088999479789, 3.5127400932533446, 0.05, -130.88361364103451, 3.4942738611126516, 0.05, -131.05739299479848, 3.47558707527913, 0.05, -131.2302269784299, 3.4566796726284297, 0.05, -131.40210451149935, 3.437550661388821, 0.05, -131.573014527649, 3.4182003229933646, 0.05, -131.74294594509823, 3.3986283489844897, 0.05, -131.9118876300858, 3.3788336997514716, 0.05, -132.07982848315828, 3.3588170614496593, 0.05, -132.2467573321259, 3.3385769793523177, 0.05, -132.4126630398575, 3.318114154632065, 0.05, -132.57753440608687, 3.2974273245872676, 0.05, -132.7413602346942, 3.276516572147146, 0.05, -132.90412932287006, 3.2553817635168962, 0.05, -133.06583043040408, 3.234022150680358, 0.05, -133.22645230394966, 3.2124374709114236, 0.05, -133.38598366738918, 3.19062726879048, 0.05, -133.54441324382918, 3.168591528800127, 0.05, -133.70172972250384, 3.146329573493232, 0.05, -133.85792177403493, 3.1238410306220734, 0.05, -134.01297805975418, 3.1011257143850295, 0.05, -134.1668872175733, 3.0781831563825244, 0.05, -134.31963786066152, 3.055012861764034, 0.05, -134.47121859574347, 3.0316147016392607, 0.05, -134.6216179989431, 3.007988063992366, 0.05, -134.7708246449668, 2.9841329204741895, 0.05, -134.91882705790593, 2.960048258782316, 0.05, -135.0656137822446, 2.9357344867734825, 0.05, -135.21117330368088, 2.911190428725503, 0.05, -135.35549413053764, 2.886416537135331, 0.05, -135.49856472232085, 2.861411835664456, 0.05, -135.64037352964266, 2.83617614643593, 0.05, -135.7809089705234, 2.810708817614867, 0.05, -135.92015947791674, 2.7850101478667324, 0.05, -136.05811342193272, 2.7590788803193886, 0.05, -136.1947591898472, 2.732915358289344, 0.05, -136.3300851251141, 2.7065187053383166, 0.05, -136.46407956897005, 2.679888877118946, 0.05, -136.59673082946944, 2.6530252099875415, 0.05, -136.72802720484603, 2.625927507531959, 0.05, -136.85795695834716, 2.598595070022842, 0.05, -136.9865083644809, 2.571028122674895, 0.05, -137.11366965935792, 2.5432258975408204, 0.05, -137.2394290370197, 2.515187553235628, 0.05, -137.3637747182213, 2.486913624031804, 0.05, -137.48669913912624, 2.458488418099065, 0.05, -137.60820160542136, 2.430049325902406, 0.05, -137.72828396805582, 2.401647252689501, 0.05, -137.84694806069328, 2.3732818527490593, 0.05, -137.96419565311123, 2.34495184835899, 0.05, -138.08002850073083, 2.3166569523919347, 0.05, -138.19444830018438, 2.2883959890705983, 0.05, -138.30745673797762, 2.2601687558649175, 0.05, -138.41905542606722, 2.231973761792146, 0.05, -138.5292459898018, 2.2038112746915437, 0.05, -138.6380299740321, 2.1756796846056896, 0.05, -138.74540893027003, 2.1475791247587357, 0.05, -138.8513843551864, 2.119508498327754, 0.05, -138.95595770586624, 2.0914670135966253, 0.05, -139.0591304348298, 2.063454579271319, 0.05, -139.16090392879028, 2.0354698792097383, 0.05, -139.2612795793502, 2.007513011198326, 0.05, -139.36025873181197, 1.9795830492350757, 0.05, -139.45784269216213, 1.9516792070035016, 0.05, -139.55403274268818, 1.9238010105207417, 0.05, -139.64883016270227, 1.8959484002819431, 0.05, -139.74223617042472, 1.8681201544489638, 0.05, -139.8342519777603, 1.8403161467113323, 0.05, -139.92487875484483, 1.8125355416905071, 0.05, -140.0141176694226, 1.7847782915557047, 0.05, -140.10196982399663, 1.7570430914805881, 0.05, -140.1884363254543, 1.7293300291534963, 0.05, -140.27351826281014, 1.701638747117013, 0.05, -140.35721668924114, 1.6739685286199069, 0.05, -140.43953260968877, 1.6463184089525496, 0.05, -140.52046704936117, 1.618688793448301, 0.05, -140.6000209780654, 1.5910785740847528, 0.05, -140.67819535680505, 1.5634875747929018, 0.05, -140.75499111884915, 1.5359152408820846, 0.05, -140.83040918742844, 1.5083613715856996, 0.05, -140.90445043028225, 1.4808248570762879, 0.05, -140.97711574429283, 1.4533062802113996, 0.05, -141.04840596740044, 1.4258044621521078, 0.05, -141.1183219255127, 1.398319162245451, 0.05, -141.18686442983312, 1.3708500864081234, 0.05, -141.25403849147241, 1.3434812327856738, 0.05, -141.319855905727, 1.3163482850916286, 0.05, -141.38433100798352, 1.289502045130222, 0.05, -141.44747809895793, 1.2629418194882527, 0.05, -141.50931147503465, 1.2366675215342913, 0.05, -141.56984539394819, 1.2106783782708892, 0.05, -141.6290940674768, 1.1849734705727772, 0.05, -141.68707170867924, 1.159552824048573, 0.05, -141.74379250515645, 1.1344159295439618, 0.05, -141.7992706115128, 1.1095621271271712, 0.05, -141.8535201595034, 1.0849909598116083, 0.05, -141.90655525580942, 1.060701926120446, 0.05, -141.95839000309562, 1.0366949457237844, 0.05, -142.0090384691084, 1.0129693202554382, 0.05, -142.0585146944783, 0.9895245073982126, 0.05, -142.10683272038045, 0.9663605180429979, 0.05, -142.1540065496774, 0.9434765859391367, 0.05, -142.20005017777984, 0.9208725620485405, 0.05, -142.24497758467848, 0.8985481379730174, 0.05, -142.28880271311598, 0.8765025687502437, 0.05, -142.33153952308984, 0.8547361994774059, 0.05, -142.37320190956132, 0.833247729429249, 0.05, -142.41380380810594, 0.8120379708921702, 0.05, -142.45335909675893, 0.7911057730597582, 0.05, -142.49188166179732, 0.7704513007677908, 0.05, -142.5293853510317, 0.7500737846873643, 0.05, -142.56588403852356, 0.7299737498376165, 0.05, -142.60139153310263, 0.7101498915813139, 0.05, -142.6359216602677, 0.6906025433018067, 0.05, -142.66948825455913, 0.6713318858281081, 0.05, -142.70210508324132, 0.6523365736441434, 0.05, -142.73378593669702, 0.6336170691139705, 0.05, -142.7645446081668, 0.6151734293955764, 0.05, -142.79439484100024, 0.5970046566685361, 0.05, -142.8233503939673, 0.579111059341344, 0.05, -142.85142500634194, 0.5614922474929097, 0.05, -142.87863241093316, 0.5441480918241923, 0.05, -142.9049863336701, 0.5270784547387005, 0.05, -142.93050047011627, 0.5102827289231147, 0.05, -142.9551885393027, 0.4937613837284089, 0.05, -142.979064233606, 0.4775138860660475, 0.05, -143.00214122899015, 0.4615399076829449, 0.05, -143.02443321456624, 0.44583971152194934, 0.05, -143.04595384895447, 0.4304126877643373, 0.05, -143.06671680583295, 0.41525913756985366, 0.05, -143.08673572803067, 0.40037844395437017, 0.05, -143.10602427381025, 0.385770915591697, 0.05, -143.12459608168365, 0.371436157468073, 0.05, -143.14246478855068, 0.3573741373408181, 0.05, -143.1596440172106, 0.3435845731983563, 0.05, -143.17614739103396, 0.33006747646689133, 0.05, -143.19198853050938, 0.3168227895084616, 0.05, -143.20718103781067, 0.3038501460258568, 0.05, -143.22173853698087, 0.29114998340397563, 0.05, -143.23567461925998, 0.27872164558209467, 0.05, -143.2490028764031, 0.26656514286208144, 0.05, -143.261736909444, 0.2546806608182111, 0.05, -143.27389030260852, 0.2430678632901094, 0.05, -143.28547664536512, 0.2317268551321998, 0.05, -143.29650950474814, 0.22065718766026512, 0.05, -143.30700245575628, 0.2098590201628206, 0.05, -143.31696908060465, 0.19933249696741337, 0.05, -143.32642295425248, 0.1890774729567394, 0.05, -143.3353776289626, 0.17909349420199047, 0.05, -143.34384666783822, 0.16938077751246708, 0.05, -143.35184364007043, 0.1599394446441798, 0.05, -143.35938209227714, 0.1507690441342433, 0.05, -143.36647557998768, 0.14186975421083942, 0.05, -143.37313766976288, 0.1332417955043453, 0.05, -143.37938189593334, 0.12488452340904771, 0.05, -143.38522180601518, 0.11679820163667387, 0.05, -143.3906709544816, 0.10898296932870002, 0.05, -143.39574288567292, 0.10143862382641451, 0.05, -143.40045112704985, 0.09416482753891783, 0.05, -143.40480923089555, 0.08716207691406068, 0.05, -143.40883074169412, 0.08043021597154174, 0.05, -143.41252918518683, 0.07396886985391847, 0.05, -143.41591809797555, 0.06777825577456333, 0.05, -143.4190110237939, 0.06185851636710295, 0.05, -143.42182149303468, 0.05620938481592598, 0.05, -143.42436303824266, 0.05083090415944893, 0.05, -143.42664919374027, 0.04572310995256245, 0.05, -143.42869349527183, 0.0408860306309546, 0.05, -143.4305094526698, 0.036319147959808326, 0.05, -143.43211061821012, 0.032023310806075005, 0.05, -143.43351051694495, 0.027997974696901344, 0.05, -143.43472267184092, 0.024243097919404783, 0.05, -143.4357606141797, 0.02075884677605587, 0.05, -143.4366378842135, 0.017545400675574314, 0.05, -143.43736798565212, 0.014602028772326305, 0.05, -143.43796446110196, 0.01192950899695005, 0.05, -143.4384408407635, 0.009527593230470328, 0.05, -143.43881064999908, 0.007396184711927327, 0.05, -143.43908741474402, 0.005535294898963022, 0.05, -143.43928466137103, 0.003944932540148693, 0.05, -143.43941591657327, 0.002625104044824868, 0.05, -143.4394947072657, 0.0015758138485837913, 0.05, -143.4395345605049, 7.970647838127902E-4, 0.05, -143.43954900342703, 2.8885844266147954E-4, 0.05, -143.43955156320422, 5.119554346018511E-5, 0.05, -143.43955156320422, 0.0, 0.05, +1.5696511274196726E-5, 1.8893022548393452E-4, 0.05, +3.695114096406378E-5, 4.2509259379734096E-4, 0.05, +7.473707861046543E-5, 7.557187529280328E-4, 0.05, +1.3377742503573547E-4, 0.0011808069285054008, 0.05, +2.187951357872895E-4, 0.0017003542150310805, 0.05, +3.345129504380503E-4, 0.002314356293015216, 0.05, +4.6690455171962113E-4, 0.002647832025631417, 0.05, +7.818696111086161E-4, 0.0062993011877799, 0.05, +0.0011707185723767947, 0.00777697922536357, 0.05, +0.001641230542458514, 0.009410239401634381, 0.05, +0.0022011854293732206, 0.011199097738294134, 0.05, +0.0028583640690915835, 0.013143572794367253, 0.05, +0.00362054840754573, 0.015243686769082932, 0.05, +0.004495521685641359, 0.017499465561912588, 0.05, +0.005491068638940994, 0.019910939065992693, 0.05, +0.00661497571171687, 0.022478141455517513, 0.05, +0.007875031268444103, 0.02520111113454466, 0.05, +0.009279025866689475, 0.028079891964907445, 0.05, +0.010834752484466897, 0.031114532355548417, 0.05, +0.012550006807545267, 0.03430508646156743, 0.05, +0.014432587517517413, 0.03765161419944289, 0.05, +0.016490296571787105, 0.041154181085393815, 0.05, +0.01873093955522308, 0.04481285966871951, 0.05, +0.021162325976930414, 0.04862772843414668, 0.05, +0.02379226963898597, 0.05259887324111109, 0.05, +0.026628588974355084, 0.05672638670738226, 0.05, +0.029679107459611984, 0.06101036970513799, 0.05, +0.03295165397128549, 0.06545093023347003, 0.05, +0.03645406322192141, 0.07004818501271844, 0.05, +0.040194176144717764, 0.07480225845592711, 0.05, +0.04417984039599529, 0.07971328502555056, 0.05, +0.0484189107435538, 0.08478140695117019, 0.05, +0.052919249608179765, 0.09000677729251931, 0.05, +0.05768872747508014, 0.09538955733800744, 0.05, +0.06273522347263835, 0.10092991995116417, 0.05, +0.06806662586333782, 0.10662804781398931, 0.05, +0.07369083258180761, 0.11248413436939585, 0.05, +0.07961575180626601, 0.11849838448916801, 0.05, +0.0858493025201856, 0.12467101427839183, 0.05, +0.0923994151187437, 0.1310022519711617, 0.05, +0.099274032050904, 0.13749233864320612, 0.05, +0.10648110838631326, 0.14414152670818517, 0.05, +0.1140286125455571, 0.15095008318487688, 0.05, +0.1219245268820752, 0.15791828673036193, 0.05, +0.1301768484723602, 0.1650464318056997, 0.05, +0.1387935897712452, 0.17233482597770017, 0.05, +0.14778277935773437, 0.17978379172978348, 0.05, +0.15715246267856917, 0.18739366641669578, 0.05, +0.1669107028276517, 0.19516480298165023, 0.05, +0.17706558140762108, 0.20309757159938757, 0.05, +0.18762519927396268, 0.21119235732683192, 0.05, +0.198597677342977, 0.21944956138028676, 0.05, +0.20999115757839934, 0.22786960470844678, 0.05, +0.2218138038638146, 0.2364529257083051, 0.05, +0.23407380284566087, 0.24519997963692505, 0.05, +0.24677936483515966, 0.25411123978997585, 0.05, +0.259938725009102, 0.26318720347884655, 0.05, +0.2735601440589845, 0.27242838099765054, 0.05, +0.2876519095937185, 0.2818353106946805, 0.05, +0.30222233683865524, 0.2914085448987343, 0.05, +0.31727976995373613, 0.30114866230161785, 0.05, +0.3328325829488703, 0.3110562599026832, 0.05, +0.34888918106385935, 0.3211319622997805, 0.05, +0.36545800157041747, 0.33137641013116265, 0.05, +0.38254751525288955, 0.3417902736494416, 0.05, +0.40016622769845966, 0.35237424891140273, 0.05, +0.41832268009695606, 0.363129047969928, 0.05, +0.4370254509485883, 0.37405541703264517, 0.05, +0.4562831574062428, 0.38515412915308994, 0.05, +0.4761044561122115, 0.39642597411937486, 0.05, +0.4964980451841592, 0.40787178143895325, 0.05, +0.5174726652180439, 0.4194924006776935, 0.05, +0.539037101003995, 0.4312887157190235, 0.05, +0.5612001827456841, 0.44326163483378067, 0.05, +0.5839707877529954, 0.45541210014622663, 0.05, +0.6073578419312026, 0.46774108356414396, 0.05, +0.6313703213402224, 0.48024958818039687, 0.05, +0.6560172537955797, 0.4929386491071473, 0.05, +0.6813077206757492, 0.5058093376033886, 0.05, +0.707250858303531, 0.5188627525556352, 0.05, +0.7338558602498951, 0.5321000389272843, 0.05, +0.7611319780585741, 0.5455223561735807, 0.05, +0.7890885243010416, 0.5591309248493502, 0.05, +0.8177348735051685, 0.5729269840825383, 0.05, +0.8470804643773875, 0.5869118174443808, 0.05, +0.8771348013544192, 0.6010867395406359, 0.05, +0.9079074573985779, 0.6154531208831739, 0.05, +0.939408074813692, 0.6300123483022827, 0.05, +0.9716463683249905, 0.6447658702259687, 0.05, +1.0046321263323965, 0.6597151601481211, 0.05, +1.038375213311379, 0.6748617395796528, 0.05, +1.0728855720522454, 0.6902071748173277, 0.05, +1.1081732255729864, 0.7057530704148177, 0.05, +1.1442482794834985, 0.7215010782102412, 0.05, +1.181120924144434, 0.73745289321871, 0.05, +1.2188014368914764, 0.753610254940846, 0.05, +1.257300184315125, 0.7699749484729734, 0.05, +1.2966276241242989, 0.7865487961834763, 0.05, +1.336794308713131, 0.8033336917766452, 0.05, +1.3778068634492688, 0.8202510947227546, 0.05, +1.4196679672802557, 0.837222076619738, 0.05, +1.4623803652022782, 0.8542479584404528, 0.05, +1.5059468673232508, 0.8713300424194527, 0.05, +1.5503703492601724, 0.8884696387384294, 0.05, +1.595653753975743, 0.9056680943114104, 0.05, +1.6418000900968823, 0.9229267224227862, 0.05, +1.6888124339130774, 0.9402468763239028, 0.05, +1.7366939288460175, 0.9576298986588003, 0.05, +1.7854477855702582, 0.9750771344848149, 0.05, +1.8350772833139977, 0.9925899548747891, 0.05, +1.8855857683055943, 1.010169699831934, 0.05, +1.9369766562012893, 1.027817757913902, 0.05, +1.989253429756872, 1.0455354711116556, 0.05, +2.0424196413556515, 1.0633242319755911, 0.05, +2.0964789110459328, 1.081185393805626, 0.05, +2.1514349278857123, 1.0991203367955915, 0.05, +2.207291449760348, 1.1171304374927131, 0.05, +2.2640523019701124, 1.1352170441952874, 0.05, +2.3217213798712972, 1.1533815580237, 0.05, +2.3803026462054406, 1.171625326682866, 0.05, +2.439800131451074, 1.1899497049126637, 0.05, +2.500217935268027, 1.2083560763390613, 0.05, +2.561560224337781, 1.2268457813950775, 0.05, +2.6238312326284587, 1.245420165813559, 0.05, +2.6870352609932926, 1.2640805672966773, 0.05, +2.7511766776910287, 1.2828283339547213, 0.05, +2.8162599167413633, 1.30166478100669, 0.05, +2.88228947788956, 1.3205912229639363, 0.05, +2.9492699260659667, 1.3396089635281319, 0.05, +3.0172058907958705, 1.3587192945980737, 0.05, +3.086102065559233, 1.3779234952672532, 0.05, +3.1559632071000716, 1.39722283081677, 0.05, +3.226794134685101, 1.416618551700585, 0.05, +3.2985997293116505, 1.4361118925309904, 0.05, +3.37138493286465, 1.45570407105999, 0.05, +3.4451547469891426, 1.4753962824898526, 0.05, +3.519914232133794, 1.4951897028930232, 0.05, +3.5956685077938606, 1.5150855132013297, 0.05, +3.6724227499420397, 1.5350848429635793, 0.05, +3.7501779122384677, 1.5551032459285625, 0.05, +3.828930686596525, 1.5750554871611482, 0.05, +3.9086777459024264, 1.5949411861180265, 0.05, +3.9894157460487625, 1.6147600029267206, 0.05, +4.071141317962708, 1.634511438278902, 0.05, +4.153851068027735, 1.6541950013005462, 0.05, +4.237541573072282, 1.6738101008909403, 0.05, +4.322209377167954, 1.6933560819134368, 0.05, +4.407850988675178, 1.7128322301444847, 0.05, +4.494462875751962, 1.7322377415356784, 0.05, +4.582041467017577, 1.7515718253123005, 0.05, +4.6705831420817185, 1.770833501282842, 0.05, +4.760084234715366, 1.7900218526729461, 0.05, +4.8505410258385675, 1.8091358224640177, 0.05, +4.94194974067817, 1.8281742967920438, 0.05, +5.034306548225118, 1.8471361509389688, 0.05, +5.127607554642635, 1.866020128350348, 0.05, +5.221848803835593, 1.8848249838591598, 0.05, +5.317026271695857, 1.9035493572052857, 0.05, +5.413135864713959, 1.9221918603620218, 0.05, +5.510173417093255, 1.9407510475859182, 0.05, +5.608134688103495, 1.9592254202048027, 0.05, +5.707015357568357, 1.9776133892972427, 0.05, +5.806811027125188, 1.9959133911366103, 0.05, +5.907517213327545, 2.0141237240471486, 0.05, +6.009129348930034, 2.0322427120497655, 0.05, +6.1116427766359305, 2.050268554117937, 0.05, +6.215052751643043, 2.0681995001422417, 0.05, +6.319354433596626, 2.086033639071657, 0.05, +6.424542891018934, 2.103769148446156, 0.05, +6.530613094210747, 2.121404063836269, 0.05, +6.637559913094706, 2.1389363776791694, 0.05, +6.745378120765277, 2.1563641534114244, 0.05, +6.854062384582945, 2.1736852763533574, 0.05, +6.963607271097109, 2.19089773028327, 0.05, +7.074007238740643, 2.207999352870693, 0.05, +7.18525664052697, 2.224988035726532, 0.05, +7.297349720701802, 2.241861603496642, 0.05, +7.410280612316398, 2.2586178322919106, 0.05, +7.524043338305112, 2.275254519774276, 0.05, +7.6386318105843705, 2.2917694455851776, 0.05, +7.754039826869252, 2.308160325697624, 0.05, +7.87026106877159, 2.324424838046765, 0.05, +7.987289105333283, 2.3405607312338526, 0.05, +8.105117389724427, 2.356565687822889, 0.05, +8.223739256148141, 2.372437328474285, 0.05, +8.343147925160876, 2.3881733802546936, 0.05, +8.463336495907365, 2.4037714149297704, 0.05, +8.58429795145707, 2.41922911099413, 0.05, +8.7060251575761, 2.434544122380579, 0.05, +8.828510859336369, 2.449714035205362, 0.05, +8.951747684185905, 2.4647364969907395, 0.05, +9.075728139828884, 2.479609112859594, 0.05, +9.200444615201565, 2.494329507453635, 0.05, +9.325889382437822, 2.5088953447251336, 0.05, +9.452054591859865, 2.52330418844087, 0.05, +9.578932276667379, 2.5375536961502685, 0.05, +9.70651435383684, 2.551641543389194, 0.05, +9.834792619954813, 2.5655653223594808, 0.05, +9.963758756305754, 2.5793227270188384, 0.05, +10.093404326045276, 2.592911394790438, 0.05, +10.223720776891152, 2.606329016917548, 0.05, +10.354699440667844, 2.619573275533819, 0.05, +10.486331535407427, 2.6326418947916563, 0.05, +10.618608163182689, 2.6455325555052553, 0.05, +10.751520315171204, 2.6582430397703107, 0.05, +10.885058867895367, 2.670771054483257, 0.05, +11.019214588474902, 2.6831144115906924, 0.05, +11.153978132591764, 2.6952708823372133, 0.05, +11.289340045926913, 2.707238266703005, 0.05, +11.425290766401304, 2.7190144094878175, 0.05, +11.56182062493092, 2.7305971705923375, 0.05, +11.698919846136821, 2.7419844241180216, 0.05, +11.836578548902411, 2.7531740553117787, 0.05, +11.974786748760541, 2.76416399716262, 0.05, +12.113534359041912, 2.774952205627399, 0.05, +12.252811192058104, 2.7855366603238196, 0.05, +12.392606958449761, 2.795915327833136, 0.05, +12.532911272124013, 2.8060862734850387, 0.05, +12.673713648387919, 2.8160475252781385, 0.05, +12.815003508235238, 2.8257971969463767, 0.05, +12.956770174601441, 2.835333327324073, 0.05, +13.0990028811807, 2.844654131585166, 0.05, +13.241690768177703, 2.8537577399400376, 0.05, +13.3848228853242, 2.862642342929918, 0.05, +13.52838819349817, 2.8713061634793955, 0.05, +13.672375565981756, 2.879747449671724, 0.05, +13.816773789809867, 2.887964476562207, 0.05, +13.961571568460108, 2.895955573004838, 0.05, +14.106757521698635, 2.9037190647705082, 0.05, +14.25232018767803, 2.911253319587924, 0.05, +14.39824802441212, 2.9185567346817742, 0.05, +14.544529411256269, 2.925627736882989, 0.05, +14.691152649480756, 2.9324647644897466, 0.05, +14.838105965067186, 2.9390663117286024, 0.05, +14.985377511242023, 2.945430923496727, 0.05, +15.132955365496011, 2.9515570850797657, 0.05, +15.280827536172096, 2.9574434135216836, 0.05, +15.428981959822464, 2.963088473007346, 0.05, +15.57740650650672, 2.9684909336851293, 0.05, +15.726094292193377, 2.973755713733104, 0.05, +15.875043728471645, 2.978988725565364, 0.05, +16.024253237928775, 2.9841901891425917, 0.05, +16.173721250932953, 2.9893602600835725, 0.05, +16.323446209085954, 2.994499163060004, 0.05, +16.473426564035062, 2.9996070989821186, 0.05, +16.623660776407778, 3.004684247454355, 0.05, +16.774147317671623, 3.0097308252768804, 0.05, +16.9248846702953, 3.014747052473539, 0.05, +17.075871327986672, 3.0197331538274623, 0.05, +17.227105794210967, 3.024689324485906, 0.05, +17.378586583400864, 3.0296157837979507, 0.05, +17.530312222846643, 3.03451278891561, 0.05, +17.682281249395515, 3.0393805309774358, 0.05, +17.83449221290746, 3.0442192702388504, 0.05, +17.986943674809634, 3.0490292380434716, 0.05, +18.1396342074432, 3.0538106526713698, 0.05, +18.29256239453875, 3.0585637419109335, 0.05, +18.44572683370295, 3.0632887832839986, 0.05, +18.599126133732504, 3.067986000591079, 0.05, +18.75275891355416, 3.072655596433153, 0.05, +18.90662380778326, 3.0772978845819403, 0.05, +19.060719461548302, 3.0819130753008697, 0.05, +19.215044532544667, 3.0865014199273064, 0.05, +19.369597691091574, 3.0910631709381255, 0.05, +19.52437761911952, 3.0955985605588765, 0.05, +19.67938301216999, 3.100107861009387, 0.05, +19.834612579390956, 3.1045913444193194, 0.05, +19.990065039158143, 3.1090491953437027, 0.05, +20.145739127222203, 3.113481761281174, 0.05, +20.301633586955415, 3.1178891946642096, 0.05, +20.457747178891296, 3.122271838717603, 0.05, +20.614078674396055, 3.126629910095185, 0.05, +20.770626857604906, 3.130963664177047, 0.05, +20.927390525631726, 3.1352733605363667, 0.05, +21.08436848857631, 3.1395592588916914, 0.05, +21.24155956952842, 3.1438216190421695, 0.05, +21.398962604568037, 3.148060700792333, 0.05, +21.556576441864795, 3.152276745935141, 0.05, +21.714399942650886, 3.1564700157217964, 0.05, +21.872431982925526, 3.160640805492816, 0.05, +22.030671447711075, 3.164789295710951, 0.05, +22.189117239199653, 3.16891582977156, 0.05, +22.347768270047798, 3.1730206169629205, 0.05, +22.506623464792472, 3.1771038948934907, 0.05, +22.665681763456924, 3.1811659732890023, 0.05, +22.824942117400617, 3.1852070788738978, 0.05, +22.984403490885818, 3.1892274697040195, 0.05, +23.144064861050882, 3.1932274033012953, 0.05, +23.30392521788169, 3.1972071366161567, 0.05, +23.46398356390001, 3.201166920366352, 0.05, +23.62423891356474, 3.2051069932945735, 0.05, +23.784690296265474, 3.20902765401473, 0.05, +23.945336752331222, 3.2129291213150037, 0.05, +24.106177334219765, 3.216811637770848, 0.05, +24.267211109006997, 3.220675495744625, 0.05, +24.428437154352515, 3.224520906910392, 0.05, +24.589854561197004, 3.2283481368898084, 0.05, +24.751462433729646, 3.2321574506528017, 0.05, +24.91325988763505, 3.235949078108099, 0.05, +25.075246050870277, 3.239723264704554, 0.05, +25.237420064233795, 3.243480267270389, 0.05, +25.399781081192174, 3.2472203391676038, 0.05, +25.562328267170034, 3.250943719557241, 0.05, +25.725060799513372, 3.2546506468667604, 0.05, +25.887977868181835, 3.258341373369298, 0.05, +26.05107867567495, 3.2620161498623466, 0.05, +26.21436243647984, 3.265675216097721, 0.05, +26.377828376581245, 3.2693188020281374, 0.05, +26.541475734085694, 3.272947150088977, 0.05, +26.705303760861568, 3.2765605355174743, 0.05, +26.869311717359313, 3.280159129954885, 0.05, +27.03349888020788, 3.2837432569713076, 0.05, +27.197864533964193, 3.2873130751262356, 0.05, +27.362407977990536, 3.290868880526852, 0.05, +27.527128522403498, 3.2944108882592347, 0.05, +27.692025488093794, 3.2979393138059385, 0.05, +27.857098209183548, 3.301454421795054, 0.05, +28.022346031112736, 3.3049564385837837, 0.05, +28.187768310727872, 3.3084455923027054, 0.05, +28.353364416525064, 3.3119221159438204, 0.05, +28.51913372860479, 3.315386241594468, 0.05, +28.685075638627232, 3.318838200448845, 0.05, +28.851189549767863, 3.322278222812625, 0.05, +29.017474876673507, 3.325706538112914, 0.05, +29.183931045418895, 3.329123374907777, 0.05, +29.350557493324057, 3.332528958103227, 0.05, +29.51735366851649, 3.3359235038485995, 0.05, +29.684319031800015, 3.33930726567054, 0.05, +29.851453054546038, 3.3426804549204405, 0.05, +30.018755218271256, 3.3460432745043565, 0.05, +30.18622501748644, 3.3493959843036385, 0.05, +30.35386195678267, 3.352738785924574, 0.05, +30.521665551721302, 3.356071898772644, 0.05, +30.689635329775243, 3.359395561078795, 0.05, +30.85777082844735, 3.3627099734421755, 0.05, +31.026071596972656, 3.366015370506107, 0.05, +31.194537195534103, 3.369311971228918, 0.05, +31.363167194170487, 3.3725999727276506, 0.05, +31.53196117551098, 3.3758796268098425, 0.05, +31.700918732064586, 3.379151131072183, 0.05, +31.870039466493385, 3.382414688575998, 0.05, +32.03932299376117, 3.3856705453556737, 0.05, +32.208768938808916, 3.388918900955016, 0.05, +32.37837693731855, 3.392159970192604, 0.05, +32.54814663568747, 3.3953939673784617, 0.05, +32.71807769075153, 3.398621101281035, 0.05, +32.88816977053624, 3.4018415956942443, 0.05, +33.05842255343421, 3.405055657959526, 0.05, +33.228835728403325, 3.4082634993822274, 0.05, +33.399408994973705, 3.4114653314076313, 0.05, +33.57014206322195, 3.4146613649649193, 0.05, +33.741034653745885, 3.41785181047869, 0.05, +33.91208649763998, 3.4210368778819227, 0.05, +34.0832973364721, 3.424216776642398, 0.05, +34.25466692226064, 3.427391715770736, 0.05, +34.42619501745306, 3.430561903848391, 0.05, +34.597881394774355, 3.43372754642586, 0.05, +34.76972583753896, 3.436888855292076, 0.05, +34.94172813941734, 3.440046037567693, 0.05, +35.11388810437832, 3.4431992992195672, 0.05, +35.28620554672453, 3.44634884692426, 0.05, +35.458680291075844, 3.4494948870262276, 0.05, +35.63131217226209, 3.4526376237249776, 0.05, +35.80410103546035, 3.4557772639651656, 0.05, +35.977046736301006, 3.458914016813078, 0.05, +36.150149140532626, 3.462048084632394, 0.05, +36.323408124153325, 3.4651796724138975, 0.05, +36.496823573220716, 3.4683089813478767, 0.05, +36.670395384404486, 3.471436223675435, 0.05, +36.84412346440179, 3.4745615999461057, 0.05, +37.018007730096535, 3.477685313894972, 0.05, +37.192048108506846, 3.480807568206148, 0.05, +37.36624453708028, 3.4839285714686112, 0.05, +37.540596963314954, 3.487048524693536, 0.05, +37.715105344865165, 3.490167631004213, 0.05, +37.889769649643355, 3.493286095563869, 0.05, +38.064589855742284, 3.496404121978598, 0.05, +38.23956595139941, 3.4995219131425315, 0.05, +38.4146979350633, 3.5026396732777902, 0.05, +38.58998581534515, 3.5057576056370032, 0.05, +38.76542961102392, 3.508875913575391, 0.05, +38.941029351123014, 3.511994801981855, 0.05, +39.11678507480228, 3.5151144735852844, 0.05, +39.29269683137151, 3.5182351313845643, 0.05, +39.46876468036795, 3.521356979928748, 0.05, +39.64498869169114, 3.5244802264638753, 0.05, +39.82136894514647, 3.527605069106502, 0.05, +39.997905530884985, 3.5307317147702997, 0.05, +40.17459854930691, 3.533860368438425, 0.05, +40.35144811119368, 3.5369912377354753, 0.05, +40.52845433721208, 3.540124520367994, 0.05, +40.70561735845472, 3.5432604248527455, 0.05, +40.882937316276895, 3.546399156443514, 0.05, +41.06041436244056, 3.549540923273378, 0.05, +41.23804865885605, 3.5526859283098693, 0.05, +41.41584037763025, 3.5558343754840527, 0.05, +41.593789701296906, 3.5589864733330256, 0.05, +41.77189682272233, 3.5621424285086043, 0.05, +41.950161945121614, 3.565302447985591, 0.05, +42.12858528207603, 3.5684667390883185, 0.05, +42.3071670576194, 3.5716355108673867, 0.05, +42.48590750611456, 3.5748089699031738, 0.05, +42.664806872260634, 3.577987322921534, 0.05, +42.84386541128413, 3.5811707804699293, 0.05, +43.02308338887486, 3.5843595518146003, 0.05, +43.20246108120744, 3.587553846651633, 0.05, +43.38199877496368, 3.590753875124759, 0.05, +43.56169676735571, 3.5939598478407047, 0.05, +43.74155536618612, 3.5971719766081804, 0.05, +43.92157489001087, 3.6003904764949306, 0.05, +44.10175566761613, 3.6036155521052757, 0.05, +44.28209803858763, 3.6068474194299514, 0.05, +44.46260235316716, 3.6100862915907097, 0.05, +44.6432689722793, 3.6133323822428234, 0.05, +44.824098267767816, 3.6165859097702877, 0.05, +45.00509062243725, 3.6198470933886675, 0.05, +45.18624642892852, 3.6231161298253602, 0.05, +45.367566091189055, 3.6263932452107333, 0.05, +45.549050025160085, 3.6296786794205995, 0.05, +45.730698655525146, 3.632972607301182, 0.05, +45.91251241941097, 3.6362752777166, 0.05, +46.09449176465136, 3.639586904807719, 0.05, +46.27663714938789, 3.6429076947305683, 0.05, +46.45894904388877, 3.646237890017746, 0.05, +46.64142792837521, 3.6495776897286705, 0.05, +46.824074294659425, 3.6529273256842796, 0.05, +47.0068886462922, 3.6562870326553596, 0.05, +47.18987149646136, 3.659657003383273, 0.05, +47.37302337077432, 3.663037486259309, 0.05, +47.556344806473774, 3.666428713989128, 0.05, +47.7398363505679, 3.669830881882509, 0.05, +47.92349856227873, 3.6732442342166647, 0.05, +48.10733201217309, 3.6766689978872336, 0.05, +48.291337282198924, 3.680105400516707, 0.05, +48.47551496572218, 3.683553670465135, 0.05, +48.659865667563395, 3.6870140368242876, 0.05, +48.84439000403446, 3.690486729421239, 0.05, +49.029088602975904, 3.693971978828919, 0.05, +49.21396210379358, 3.697470016353446, 0.05, +49.399011157495735, 3.7009810740431646, 0.05, +49.58423642722618, 3.704505394608846, 0.05, +49.76963858796282, 3.7080432147327484, 0.05, +49.95521832490718, 3.711594738887206, 0.05, +50.140976336956236, 3.7151602409810867, 0.05, +50.32691333407181, 3.7187399423115117, 0.05, +50.51303003768502, 3.722334072264135, 0.05, +50.69932718206082, 3.7259428875160414, 0.05, +50.88580551303863, 3.7295666195562576, 0.05, +51.07246578761215, 3.7332054914704043, 0.05, +51.25930877674465, 3.736859782650073, 0.05, +51.446335262191, 3.7405297089268577, 0.05, +51.63354603761716, 3.7442155085232103, 0.05, +51.820941909466015, 3.7479174369771884, 0.05, +52.00852369635085, 3.751635737696617, 0.05, +52.196292229088144, 3.7553706547458385, 0.05, +52.384248350729656, 3.7591224328302597, 0.05, +52.572392916593344, 3.762891317273761, 0.05, +52.76072679429392, 3.766677554011575, 0.05, +52.94925086537238, 3.770481421569093, 0.05, +53.13796602125042, 3.7743031175608146, 0.05, +53.32687316649238, 3.77814290483922, 0.05, +53.51597322117197, 3.782001093591754, 0.05, +53.70526711261709, 3.7858778289024295, 0.05, +53.89475578631812, 3.789773474020593, 0.05, +54.0844401959569, 3.79368819277554, 0.05, +54.27432130967363, 3.797622274334566, 0.05, +54.464400109011926, 3.801575986765836, 0.05, +54.65467758759455, 3.8055495716523877, 0.05, +54.84515475097044, 3.809543267517773, 0.05, +55.035832618135046, 3.8135573432921412, 0.05, +55.22671222074621, 3.8175920522231643, 0.05, +55.41779460411592, 3.8216476673942084, 0.05, +55.60908082523342, 3.8257244223500817, 0.05, +55.800571953442926, 3.829822564190158, 0.05, +55.992269072171894, 3.8339423745792827, 0.05, +56.1841732782398, 3.838084121358013, 0.05, +56.376285678793955, 3.8422480110831607, 0.05, +56.56860739655804, 3.8464343552817337, 0.05, +56.761139566090115, 3.850643390641486, 0.05, +56.95388333384078, 3.8548753550131964, 0.05, +57.14683986041525, 3.8591305314894613, 0.05, +57.34001031915333, 3.863409174761571, 0.05, +57.533395896110406, 3.86771153914147, 0.05, +57.72699779003553, 3.8720378785025336, 0.05, +57.92081721234585, 3.8763884462063247, 0.05, +58.11485538709741, 3.880763495031149, 0.05, +58.30911355281459, 3.8851633143436097, 0.05, +58.503592958929495, 3.889588122298117, 0.05, +58.69829486789896, 3.8940381793892724, 0.05, +58.89322055551665, 3.898513752353825, 0.05, +59.0883713108983, 3.903015107633128, 0.05, +59.28374843353358, 3.90754245270564, 0.05, +59.47935323728761, 3.912096075080546, 0.05, +59.67518704836457, 3.916676221539151, 0.05, +59.871251205237755, 3.9212831374636252, 0.05, +60.06754705857271, 3.9259170666991055, 0.05, +60.26407597114609, 3.930578251467639, 0.05, +60.460839319153386, 3.9352669601459387, 0.05, +60.65783849063583, 3.9399834296488816, 0.05, +60.85507488367895, 3.9447278608623453, 0.05, +61.05254991184014, 3.949500563223731, 0.05, +61.25026499817634, 3.9543017267240415, 0.05, +61.44822157753624, 3.9591315871979242, 0.05, +61.646421097537434, 3.9639904000238655, 0.05, +61.84486501710941, 3.9688783914395502, 0.05, +62.04355480634988, 3.9737957848093908, 0.05, +62.24249194637294, 3.9787428004611214, 0.05, +62.44167792914957, 3.983719655532695, 0.05, +62.64111426076652, 3.988726632339037, 0.05, +62.84080245258169, 3.9937638363033803, 0.05, +63.04074403229142, 3.998831594194596, 0.05, +63.24094053311972, 4.003930016566013, 0.05, +63.44139350172349, 4.0090593720753676, 0.05, +63.64210449499899, 4.014219865510023, 0.05, +63.843075077777236, 4.019411655564926, 0.05, +64.04430682621579, 4.024634968771157, 0.05, +64.24580132479741, 4.029889971632478, 0.05, +64.44756016657077, 4.035176835466964, 0.05, +64.64958495471757, 4.040495762936038, 0.05, +64.85187730207751, 4.045846947199003, 0.05, +65.05443882716925, 4.051230501834725, 0.05, +65.25727115757536, 4.056646608122289, 0.05, +65.46037592973894, 4.062095443271789, 0.05, +65.66375478722478, 4.067577149716608, 0.05, +65.86740937972927, 4.073091850089852, 0.05, +66.0713413643939, 4.078639693292658, 0.05, +66.27555240355265, 4.084220783174941, 0.05, +66.48004416542204, 4.089835237387721, 0.05, +66.68481832872283, 4.095483266015638, 0.05, +66.8898765691753, 4.101164809049603, 0.05, +67.09522057325985, 4.106880081690926, 0.05, +67.30085203098486, 4.112629154499973, 0.05, +67.50677263369658, 4.118412054234535, 0.05, +67.71298407763514, 4.12422887877115, 0.05, +67.91948806241633, 4.130079695623994, 0.05, +68.12628629017644, 4.135964555202052, 0.05, +68.33338046163465, 4.141883429164093, 0.05, +68.54077228373662, 4.147836442039271, 0.05, +68.74846345881494, 4.1538235015664515, 0.05, +68.95645569500934, 4.159844723887978, 0.05, +69.16475069519855, 4.165900003784192, 0.05, +69.37335016254033, 4.171989346835703, 0.05, +69.58225579847092, 4.1781127186118034, 0.05, +69.79146930250567, 4.1842700806950335, 0.05, +70.00099237114715, 4.190461372829563, 0.05, +70.21082669321686, 4.196686441394074, 0.05, +70.42097395948751, 4.202945325413004, 0.05, +70.63143584806006, 4.209237771451078, 0.05, +70.84221403519282, 4.215563742655243, 0.05, +71.05331018965259, 4.221923089195417, 0.05, +71.26472597144854, 4.228315635918884, 0.05, +71.47646303177932, 4.234741206615566, 0.05, +71.6885230113071, 4.24119959055571, 0.05, +71.9009075396436, 4.247690566730071, 0.05, +72.11361823928843, 4.254213992896488, 0.05, +72.32665671287944, 4.260769471820189, 0.05, +72.540024555937, 4.26735686115107, 0.05, +72.75372334608045, 4.273975802868957, 0.05, +72.96775464501307, 4.280625978652597, 0.05, +73.18211999834936, 4.287307066725868, 0.05, +73.3968209344869, 4.294018722750539, 0.05, +73.61185896254659, 4.300760561193799, 0.05, +73.82723556819292, 4.307532112926651, 0.05, +74.0429522220177, 4.31433307649576, 0.05, +74.25901036480694, 4.321162855784765, 0.05, +74.47541141783552, 4.328021060571452, 0.05, +74.69215677690055, 4.334907181300598, 0.05, +74.90924780987675, 4.341820659523943, 0.05, +75.1266858576389, 4.3487609552432565, 0.05, +75.34447223043041, 4.355727455830034, 0.05, +75.56260820760038, 4.362719543399207, 0.05, +75.78109504002224, 4.369736648437296, 0.05, +75.99993393902066, 4.3767779799684225, 0.05, +76.21912608773843, 4.3838429743552245, 0.05, +76.43867262659339, 4.390930777099003, 0.05, +76.65857466046101, 4.398040677352439, 0.05, +76.87883325430509, 4.40517187688164, 0.05, +77.09944943133803, 4.412323540658628, 0.05, +77.32042417305357, 4.419494834310777, 0.05, +77.54175841505116, 4.426684839951955, 0.05, +77.76345304515105, 4.4338926019978615, 0.05, +77.98550890722694, 4.441117241517747, 0.05, +78.20792679148737, 4.448357685208421, 0.05, +78.43070743784965, 4.455612927245527, 0.05, +78.6538515335841, 4.462881914689225, 0.05, +78.87735971052403, 4.47016353879861, 0.05, +79.1012325432731, 4.477456654981263, 0.05, +79.32547054739602, 4.484760082458584, 0.05, +79.5500741789853, 4.492072631785414, 0.05, +79.77504383148757, 4.4993930500453665, 0.05, +80.00037983211608, 4.50672001257026, 0.05, +80.22608244409535, 4.514052239585491, 0.05, +80.45215186240655, 4.521388366223829, 0.05, +80.67858821003512, 4.5287269525713, 0.05, +80.90539153952855, 4.536066589868688, 0.05, +81.13256182927844, 4.543405794997932, 0.05, +81.36009898161443, 4.550743046719565, 0.05, +81.58800282089844, 4.558076785680301, 0.05, +81.81627309405955, 4.5654054632222305, 0.05, +82.04490946222755, 4.572727363359926, 0.05, +82.27391150610897, 4.580040877628372, 0.05, +82.50327871969147, 4.58734427164974, 0.05, +82.73301051095392, 4.594635825248958, 0.05, +82.96310619624522, 4.601913705825955, 0.05, +83.19356500252596, 4.609176125614655, 0.05, +83.42438606356615, 4.616421220803676, 0.05, +83.65556841813199, 4.623647091316931, 0.05, +83.88711100819651, 4.630851801290349, 0.05, +84.11901267717887, 4.638033379647151, 0.05, +84.35127216821284, 4.645189820679387, 0.05, +84.58388812245127, 4.65231908476865, 0.05, +84.81685907917388, 4.65941913445219, 0.05, +85.05018346955224, 4.666487807567062, 0.05, +85.28385961988064, 4.673523006568012, 0.05, +85.5178857473666, 4.680522549719173, 0.05, +85.752259959958, 4.687484251827847, 0.05, +85.98698025285331, 4.6944058579064665, 0.05, +86.22204451036552, 4.701285150244098, 0.05, +86.4574505018952, 4.708119830593557, 0.05, +86.69319588107176, 4.714907583531353, 0.05, +86.92927818566702, 4.721646091905039, 0.05, +87.16569483582299, 4.728333003119471, 0.05, +87.40244313303273, 4.734965944194947, 0.05, +87.63952025920119, 4.7415425233690796, 0.05, +87.87692327579013, 4.748060331778983, 0.05, +88.11464912305006, 4.754516945198336, 0.05, +88.35269461934327, 4.760909925864169, 0.05, +88.59105646056229, 4.767236824380412, 0.05, +88.82973121970718, 4.773495182898118, 0.05, +89.06871534666075, 4.779682539071366, 0.05, +89.30800516699136, 4.7857964066121355, 0.05, +89.54759688287898, 4.791834317752206, 0.05, +89.78748657267231, 4.797793795866705, 0.05, +90.02767019115016, 4.803672369557049, 0.05, +90.26814356887878, 4.809467554572388, 0.05, +90.50890241347693, 4.815176891962971, 0.05, +90.74994230966774, 4.820797923816336, 0.05, +90.99125871967716, 4.826328200188284, 0.05, +91.23284698415235, 4.8317652895036804, 0.05, +91.47470232281819, 4.837106773316951, 0.05, +91.71681983530631, 4.842350249762295, 0.05, +91.9591945027082, 4.847493348037678, 0.05, +92.20182118830874, 4.85253371201076, 0.05, +92.44469463878443, 4.857469009513597, 0.05, +92.68780948616696, 4.862296947650445, 0.05, +92.93116024948293, 4.8670152663194655, 0.05, +93.17474133605198, 4.8716217313809445, 0.05, +93.418547043575, 4.876114150460326, 0.05, +93.66257156216362, 4.880490371772252, 0.05, +93.90680897650827, 4.884748286893028, 0.05, +94.15125326818506, 4.88888583353557, 0.05, +94.39589831810066, 4.892900998312003, 0.05, +94.64073790907392, 4.896791819465232, 0.05, +94.88576572855354, 4.900556389592318, 0.05, +95.13097537146977, 4.90419285832473, 0.05, +95.37636034321704, 4.907699434945488, 0.05, +95.62191406087595, 4.91107435317829, 0.05, +95.86762986096306, 4.9143160017422485, 0.05, +96.11350099819174, 4.917422744573516, 0.05, +96.35952065067868, 4.920393049738583, 0.05, +96.60568192341385, 4.923225454703465, 0.05, +96.85197785316598, 4.925918595042572, 0.05, +97.09840140941526, 4.928471124985769, 0.05, +97.34494549960124, 4.930881803719441, 0.05, +97.59160297417903, 4.933149491555684, 0.05, +97.8383666285993, 4.935273088405442, 0.05, +98.08522920961086, 4.937251620230968, 0.05, +98.3321834184768, 4.939084177318926, 0.05, +98.57922191330982, 4.940769896660528, 0.05, +98.82633731558428, 4.942308045489135, 0.05, +99.07352221400325, 4.9436979683793965, 0.05, +99.3207691700457, 4.944939120848855, 0.05, +99.56807071932897, 4.946030985665646, 0.05, +99.81541937847211, 4.946973182862843, 0.05, +100.0628076497736, 4.947765426029653, 0.05, +100.31022802592791, 4.948407523086118, 0.05, +100.55767298774111, 4.948899236264162, 0.05, +100.80513502466376, 4.949240738452699, 0.05, +101.05260662120266, 4.949431930778139, 0.05, +101.30008027143904, 4.9494730047276825, 0.05, +101.54754848340006, 4.949364239220496, 0.05, +101.79500377959877, 4.949105923974091, 0.05, +102.04243870853563, 4.948698578737165, 0.05, +102.28984583697013, 4.948142568690109, 0.05, +102.53721776900305, 4.947438640658457, 0.05, +102.78454713829493, 4.946587385837639, 0.05, +103.03182661891228, 4.945589612346941, 0.05, +103.27904892991322, 4.944446220018866, 0.05, +103.52620683275094, 4.943158056754662, 0.05, +103.77329314711956, 4.941726287372183, 0.05, +104.02030074132273, 4.940151884063459, 0.05, +104.26722254514611, 4.938436076467569, 0.05, +104.51405155411983, 4.936580179474306, 0.05, +104.76078083213142, 4.9345855602317945, 0.05, +105.00740350488977, 4.9324534551670585, 0.05, +105.25391278156533, 4.930185533511489, 0.05, +105.50030194699166, 4.927783308526321, 0.05, +105.7465643593778, 4.9252482477230295, 0.05, +105.9926934772409, 4.922582357262107, 0.05, +106.23868282836594, 4.919787022500572, 0.05, +106.4845260445672, 4.916864324025195, 0.05, +106.73021684087425, 4.913815926140834, 0.05, +106.97574903989697, 4.9106439804544495, 0.05, +107.22111655074738, 4.907350217008209, 0.05, +107.46631339307567, 4.903936846565677, 0.05, +107.71133368700994, 4.90040587868547, 0.05, +107.95617165039037, 4.896759267608665, 0.05, +108.20082162479773, 4.8929994881470344, 0.05, +108.44527804819467, 4.889128467938915, 0.05, +108.68953547526438, 4.88514854139417, 0.05, +108.93358857727017, 4.881062040115915, 0.05, +109.17743213023007, 4.876871059198107, 0.05, +109.42106103664892, 4.872578128376861, 0.05, +109.66447030855046, 4.868185438030931, 0.05, +109.90765508586753, 4.863695546341417, 0.05, +110.15061061764656, 4.8591106355805875, 0.05, +110.39333228275036, 4.854433302075989, 0.05, +110.63581557294563, 4.849665803905313, 0.05, +110.87805610936427, 4.844810728372655, 0.05, +111.12004962768309, 4.839870366376499, 0.05, +111.36179199358315, 4.834847318001314, 0.05, +111.60327918800957, 4.829743888528367, 0.05, +111.84450732509372, 4.824562741683135, 0.05, +112.08547263360747, 4.819306170275096, 0.05, +112.32617147041067, 4.81397673606404, 0.05, +112.566600305736, 4.808576706506582, 0.05, +112.80675574580653, 4.803108801410382, 0.05, +113.04663451054788, 4.797575294826998, 0.05, +113.28623344205234, 4.7919786300891785, 0.05, +113.52554950600332, 4.786321279019478, 0.05, +113.76457978064839, 4.780605492901362, 0.05, +114.00332147329117, 4.774833852855433, 0.05, +114.2417719076275, 4.7690086867265915, 0.05, +114.47992852035851, 4.763132254620293, 0.05, +114.71778886780777, 4.757206948985251, 0.05, +114.95535062107389, 4.751235065322283, 0.05, +115.19261156534019, 4.745218885326012, 0.05, +115.42956959588123, 4.739160610820856, 0.05, +115.66622273070877, 4.733062696550625, 0.05, +115.90256907620251, 4.726926909874815, 0.05, +116.13860687293474, 4.720755934644669, 0.05, +116.37433444464855, 4.7145514342760695, 0.05, +116.60975024595878, 4.708316026204413, 0.05, +116.8448528133121, 4.702051347066403, 0.05, +117.07964079761133, 4.6957596859845845, 0.05, +117.31411294805821, 4.689443008937655, 0.05, +117.54826811195852, 4.683103278006142, 0.05, +117.78210523495453, 4.676742459920119, 0.05, +118.01562335759918, 4.670362452893155, 0.05, +118.24882161525827, 4.663965153181548, 0.05, +118.48169923246196, 4.657552344073876, 0.05, +118.71425553347744, 4.6511260203096, 0.05, +118.9464899155241, 4.644687640933017, 0.05, +119.17840187001752, 4.638239089868514, 0.05, +119.40999097759719, 4.631782151593256, 0.05, +119.64125689804634, 4.625318408982854, 0.05, +119.87219937179094, 4.618849474892117, 0.05, +120.10281821931851, 4.612376950551355, 0.05, +120.33311333103816, 4.605902234393002, 0.05, +120.56308468372058, 4.599427053648108, 0.05, +120.79273231359018, 4.592952597391997, 0.05, +121.02205635201942, 4.586480768584891, 0.05, +121.25105697188675, 4.580012397346658, 0.05, +121.47973442801465, 4.573549122558015, 0.05, +121.70808904973853, 4.567092434477711, 0.05, +121.93612121029412, 4.560643211111836, 0.05, +122.16383135383047, 4.554202870727076, 0.05, +122.39121999968337, 4.547772917057994, 0.05, +122.61828769533031, 4.541353912938882, 0.05, +122.8450350705786, 4.534947504965916, 0.05, +123.07146279794922, 4.52855454741253, 0.05, +123.2975716109139, 4.522176259293535, 0.05, +123.52336228983508, 4.515813578423485, 0.05, +123.74883566472994, 4.509467497897337, 0.05, +123.97399261367543, 4.503138978910012, 0.05, +124.19883405882926, 4.496828903076471, 0.05, +124.42336096755942, 4.490538174602963, 0.05, +124.6475743662721, 4.4842679742536165, 0.05, +124.87147529871545, 4.478018648867112, 0.05, +125.09506486115174, 4.471791248725767, 0.05, +125.31834419400498, 4.465586657064688, 0.05, +125.54131446114138, 4.45940534272796, 0.05, +125.76397686620967, 4.453248101365948, 0.05, +125.98633266239464, 4.447115923699287, 0.05, +126.20838310622221, 4.441008876551363, 0.05, +126.43012951668476, 4.434928209250941, 0.05, +126.65157321114374, 4.428873889179703, 0.05, +126.87271557137223, 4.4228472045697, 0.05, +127.0935579764603, 4.416848101761543, 0.05, +127.314101846799, 4.410877406773988, 0.05, +127.5343486213725, 4.404935491470031, 0.05, +127.75429976677918, 4.399022908133605, 0.05, +127.9739567691724, 4.393140047864373, 0.05, +128.19332113858295, 4.387287388211029, 0.05, +128.41239440266642, 4.381465281669436, 0.05, +128.63117810238742, 4.375673994420181, 0.05, +128.84967381180016, 4.369914188254487, 0.05, +129.06788310834304, 4.3641859308577775, 0.05, +129.28580759318916, 4.358489696922588, 0.05, +129.5034488819181, 4.352825774578813, 0.05, +129.72080858768115, 4.347194115260631, 0.05, +129.93788836360008, 4.341595518378603, 0.05, +130.1546898575267, 4.3360298785327505, 0.05, +130.37121473225181, 4.33049749450207, 0.05, +130.58746466150484, 4.324998585060262, 0.05, +130.80344132035114, 4.319533176925778, 0.05, +131.0191464002147, 4.314101597271488, 0.05, +131.23458161490393, 4.308704293784451, 0.05, +131.44974865574045, 4.303340816730608, 0.05, +131.66464923110377, 4.298011507266244, 0.05, +131.87928506952937, 4.2927167685121725, 0.05, +132.09365788750776, 4.287456359567501, 0.05, +132.3077694142821, 4.282230535486601, 0.05, +132.5216213826878, 4.277039368114486, 0.05, +132.73521551019974, 4.271882550238294, 0.05, +132.94855354731013, 4.26676074220758, 0.05, +133.1616372249401, 4.261673552599637, 0.05, +133.3744682877687, 4.25662125657208, 0.05, +133.58704845477533, 4.251603340132577, 0.05, +133.79937948142356, 4.246620532964516, 0.05, +134.0114631060906, 4.241672493340463, 0.05, +134.22330104636245, 4.236758805437233, 0.05, +134.4348950588989, 4.2318802507288105, 0.05, +134.64624686631518, 4.227036148326128, 0.05, +134.85735820250667, 4.222226723829931, 0.05, +135.068230793714, 4.217451824146605, 0.05, +135.27886636726183, 4.212711470956645, 0.05, +135.48926663693504, 4.208005393464191, 0.05, +135.69943332592624, 4.2033337798241055, 0.05, +135.90936814711623, 4.198696423799785, 0.05, +136.1190728078124, 4.194093213923263, 0.05, +136.32854900601242, 4.189523964000981, 0.05, +136.53779844747328, 4.1849888292168735, 0.05, +136.74682281483908, 4.180487347316115, 0.05, +136.95561805866862, 4.175904876590628, 0.05, +137.1641726913155, 4.171092652938003, 0.05, +137.3724735767538, 4.166017708765752, 0.05, +137.58050761166902, 4.160680698304318, 0.05, +137.78826177409584, 4.155083248536414, 0.05, +137.99572307790203, 4.149226076123605, 0.05, +138.2028785843616, 4.143110129191186, 0.05, +138.40971541550869, 4.136736622941442, 0.05, +138.616220735743, 4.13010640468648, 0.05, +138.8223817469066, 4.123220223271386, 0.05, +139.0281857112227, 4.116079286322575, 0.05, +139.23361991249396, 4.108684025425455, 0.05, +139.43867169640686, 4.101035678258073, 0.05, +139.64332844566206, 4.0931349851043715, 0.05, +139.8475775747505, 4.084982581768498, 0.05, +140.05140654580785, 4.076579421147419, 0.05, +140.2548028391445, 4.067925866732988, 0.05, +140.45775399691016, 4.059023155313156, 0.05, +140.66024757968535, 4.0498716555036225, 0.05, +140.86227118007236, 4.0404720077400045, 0.05, +141.06381242674624, 4.030824933477797, 0.05, +141.2648589734692, 4.020930934459234, 0.05, +141.46539852228895, 4.010790976395369, 0.05, +141.66541878491276, 4.000405252475956, 0.05, +141.86490750585796, 3.9897744189039805, 0.05, +142.06385245533664, 3.978898989573573, 0.05, +142.26224142809272, 3.9677794551215015, 0.05, +142.46006225013008, 3.9564164407469242, 0.05, +142.65730276123722, 3.944810222142847, 0.05, +142.85395083823727, 3.932961540000758, 0.05, +143.04999434896516, 3.9208702145580725, 0.05, +143.2454212124968, 3.908537270633221, 0.05, +143.44021936073986, 3.895962964861052, 0.05, +143.63437673294644, 3.883147444131463, 0.05, +143.827881284139, 3.870091023851224, 0.05, +144.02072101103315, 3.8567945378826654, 0.05, +144.2128839064814, 3.8432579089655095, 0.05, +144.40435796749512, 3.8294812202742787, 0.05, +144.59513123483612, 3.815465346820186, 0.05, +144.78519173113324, 3.8012099259422563, 0.05, +144.97452751867672, 3.7867157508697122, 0.05, +145.16312666335085, 3.7719828934825337, 0.05, +145.35097722166392, 3.7570111662613197, 0.05, +145.53806727897518, 3.741801146224766, 0.05, +145.72438494438754, 3.7263533082472, 0.05, +145.909918301594, 3.710667144128802, 0.05, +146.0946554766587, 3.6947435012941625, 0.05, +146.2785845693525, 3.6785818538757646, 0.05, +146.46169372036573, 3.662183020264885, 0.05, +146.64397104736074, 3.645546539900111, 0.05, +146.8254046783682, 3.6286726201487416, 0.05, +147.00598277254744, 3.611561883585104, 0.05, +147.185693472133, 3.5942139917116225, 0.05, +147.36452491326693, 3.576628822678347, 0.05, +147.54246524268, 3.5588065882617737, 0.05, +147.71950263224716, 3.5407477913429197, 0.05, +147.8956252304977, 3.5224519650106725, 0.05, +148.07082118861945, 3.5039191624351753, 0.05, +148.2450786782034, 3.48514979167941, 0.05, +148.41838583726476, 3.466143181227305, 0.05, +148.59073083517276, 3.4468999581599755, 0.05, +148.76210183595455, 3.427420015636034, 0.05, +148.93248697942846, 3.40770286947838, 0.05, +149.10187443894475, 3.387749190326006, 0.05, +149.2702523571796, 3.3675583646972207, 0.05, +149.43760888792553, 3.3471306149185485, 0.05, +149.60393218513886, 3.326465944266314, 0.05, +149.76921037928975, 3.305563883017949, 0.05, +149.93343162372526, 3.2844248887104133, 0.05, +150.0965840524267, 3.2630485740287827, 0.05, +150.25865578928418, 3.2414347371496066, 0.05, +150.41963497618903, 3.2195837380970493, 0.05, +150.57950973880665, 3.197495252352412, 0.05, +150.73826817567468, 3.175168737360401, 0.05, +150.89589840183146, 3.1526045231356297, 0.05, +151.05238853689173, 3.1298027012051852, 0.05, +151.20772666862837, 3.1067626347326396, 0.05, +151.36190089101913, 3.083484447815277, 0.05, +151.51489929108274, 3.0599680012719945, 0.05, +151.666709938254, 3.03621294342507, 0.05, +151.81732090866973, 3.0122194083147833, 0.05, +151.9667202603873, 2.9879870343513986, 0.05, +152.11489604292763, 2.963515650806554, 0.05, +152.2618363068273, 2.938805277993136, 0.05, +152.40752907621143, 2.9138553876829087, 0.05, +152.55196238229087, 2.8886661215885323, 0.05, +152.69512424461138, 2.863237246410036, 0.05, +152.8370026505536, 2.837568118844046, 0.05, +152.97758562057305, 2.8116594003895106, 0.05, +153.11686111996977, 2.7855099879341374, 0.05, +153.25481712224507, 2.7591200455058362, 0.05, +153.3914416040166, 2.732489635430405, 0.05, +153.52672251667562, 2.7056182531802713, 0.05, +153.66064778205228, 2.6785053075331393, 0.05, +153.7932053495684, 2.6511513503225514, 0.05, +153.9243831158406, 2.6235553254441095, 0.05, +154.054169001005, 2.5957177032878813, 0.05, +154.18255089753066, 2.567637930513197, 0.05, +154.30951666615482, 2.53931537248312, 0.05, +154.43505419436192, 2.510750564142184, 0.05, +154.55915666880122, 2.4820494887858917, 0.05, +154.6818242494885, 2.453351613745486, 0.05, +154.80305864024498, 2.42468781512966, 0.05, +154.92286148878088, 2.396056970717893, 0.05, +155.04123445953707, 2.3674594151239026, 0.05, +155.15817913216773, 2.3388934526131027, 0.05, +155.27369710753086, 2.3103595072625978, 0.05, +155.38778992549933, 2.2818563593695678, 0.05, +155.50045909861785, 2.2533834623701257, 0.05, +155.6117061004282, 2.224940036207023, 0.05, +155.7215324172113, 2.1965263356621385, 0.05, +155.82993944924496, 2.168140640672877, 0.05, +155.93692861045065, 2.139783224113864, 0.05, +156.04250127794825, 2.111453349951744, 0.05, +156.1466588007397, 2.08315045582873, 0.05, +156.2494024855257, 2.0548736957203286, 0.05, +156.35073363001126, 2.0266228897109837, 0.05, +156.45065350918418, 1.9983975834585068, 0.05, +156.54916336076968, 1.970197031710262, 0.05, +156.6462643904493, 1.9420205935921375, 0.05, +156.74195780993537, 1.9138683897215707, 0.05, +156.83624478462932, 1.8857394938789063, 0.05, +156.92912645015852, 1.8576333105838752, 0.05, +157.02060391751164, 1.8295493470622948, 0.05, +157.11067830924526, 1.801487834672722, 0.05, +157.1993506776549, 1.7734473681930496, 0.05, +157.28662209442209, 1.7454283353438518, 0.05, +157.37249356708855, 1.7174294533294634, 0.05, +157.45696611894155, 1.689451037059845, 0.05, +157.54004073071556, 1.661492235480162, 0.05, +157.6217183596876, 1.6335525794407386, 0.05, +157.701999961414, 1.605632034528146, 0.05, +157.78088645470731, 1.5777298658661683, 0.05, +157.85837873511028, 1.5498456080594218, 0.05, +157.93447769900143, 1.5219792778228576, 0.05, +158.00918418405666, 1.4941297011045733, 0.05, +158.08249905283654, 1.466297375597508, 0.05, +158.154423116896, 1.4384812811893224, 0.05, +158.2249571876311, 1.410681414702325, 0.05, +158.29410203525532, 1.3828969524844195, 0.05, +158.3618637457472, 1.3552342098377612, 0.05, +158.4282552250774, 1.3278295866041456, 0.05, +158.4932909665127, 1.3007148287055008, 0.05, +158.5569854163841, 1.273888997427876, 0.05, +158.61935299269703, 1.2473515262587045, 0.05, +158.68040810663433, 1.2211022787462598, 0.05, +158.7401651233717, 1.1951403347475587, 0.05, +158.79863838494018, 1.169465231369423, 0.05, +158.85584224199633, 1.1440771411230348, 0.05, +158.91179098346709, 1.118974829415318, 0.05, +158.9664989014339, 1.094158359336575, 0.05, +159.01998025366785, 1.0696270446791405, 0.05, +159.07224928258628, 1.0453805783687993, 0.05, +159.12332020765288, 1.0214185013319736, 0.05, +159.17320723804715, 0.9977406078852624, 0.05, +159.221924542842, 0.9743460958969575, 0.05, +159.26948629168197, 0.9512349767995056, 0.05, +159.31590663374584, 0.9284068412772908, 0.05, +159.3611997035683, 0.9058613964493406, 0.05, +159.40537959186108, 0.8835977658557113, 0.05, +159.44846041613732, 0.8616164855249775, 0.05, +159.49045623866402, 0.8399164505337676, 0.05, +159.53138113506762, 0.818497928071811, 0.05, +159.57124915038327, 0.7973603063127194, 0.05, +159.61007431438526, 0.7765032800396944, 0.05, +159.64787065250042, 0.7559267623031999, 0.05, +159.68465217425128, 0.7356304350175868, 0.05, +159.72043286340573, 0.715613783089083, 0.05, +159.75522669410714, 0.6958766140278807, 0.05, +159.78904764988542, 0.6764191155658857, 0.05, +159.821909676745, 0.6572405371917645, 0.05, +159.8538267251659, 0.6383409684177835, 0.05, +159.88481271398584, 0.6197197763987579, 0.05, +159.91488157739596, 0.6013772682021653, 0.05, +159.94404722781937, 0.5833130084679038, 0.05, +159.9723235464272, 0.5655263721564905, 0.05, +159.99972444254195, 0.5480179222953332, 0.05, +160.0262637988013, 0.5307871251867183, 0.05, +160.05195546213548, 0.5138332666839693, 0.05, +160.07681332006555, 0.4971571586014973, 0.05, +160.10085121963763, 0.4807579914414675, 0.05, +160.12408300516697, 0.4646357105864367, 0.05, +160.14652251807226, 0.4487902581059458, 0.05, +160.1681835739269, 0.4332211170932063, 0.05, +160.18908000106296, 0.41792854272075664, 0.05, +160.20922563160124, 0.4029126107653304, 0.05, +160.22863425695851, 0.38817250714521473, 0.05, +160.2473196729549, 0.3737083199273103, 0.05, +160.26529568626484, 0.3595202661986731, 0.05, +160.28257608736538, 0.3456080220109989, 0.05, +160.29917465562355, 0.3319713651631544, 0.05, +160.31510516494808, 0.3186101864904265, 0.05, +160.3303813984671, 0.30552467038062253, 0.05, +160.34501710369858, 0.29271410462996267, 0.05, +160.3590260597972, 0.28017912197263417, 0.05, +160.3724220176478, 0.26791915701208996, 0.05, +160.38521873598413, 0.2559343667261746, 0.05, +160.39742994602597, 0.24422420083670285, 0.05, +160.40906941258106, 0.23278933110205824, 0.05, +160.42015086343207, 0.22162901702012558, 0.05, +160.43068803310288, 0.21074339341650083, 0.05, +160.44069466220998, 0.20013258214200072, 0.05, +160.45018448112205, 0.18979637824152928, 0.05, +160.4591712125702, 0.1797346289629337, 0.05, +160.4676685735441, 0.16994721947804964, 0.05, +160.47569029576215, 0.16043444436105794, 0.05, +160.48325008829113, 0.1511958505798522, 0.05, +160.4903616658173, 0.1422315505229871, 0.05, +160.49703875610953, 0.13354180584480146, 0.05, +160.50329505155014, 0.12512590881192254, 0.05, +160.5091442659677, 0.11698428835123088, 0.05, +160.51460011068673, 0.1091168943804566, 0.05, +160.51967629060766, 0.10152359841872899, 0.05, +160.52438650059622, 0.09420419977110625, 0.05, +160.52874444274238, 0.08715884292329162, 0.05, +160.53276383146618, 0.08038777447599497, 0.05, +160.53645834462375, 0.07389026315129639, 0.05, +160.53984169004744, 0.06766690847360937, 0.05, +160.5429275660588, 0.06171752022719729, 0.05, +160.5457296644063, 0.056041966949929724, 0.05, +160.5482616786403, 0.050640284679985825, 0.05, +160.55053730378918, 0.045512502977565567, 0.05, +160.55257023605128, 0.04065864524178122, 0.05, +160.5543741530514, 0.03607834000251902, 0.05, +160.55596275668773, 0.03177207272662038, 0.05, +160.55734974158653, 0.02773969797601684, 0.05, +160.5585487850925, 0.023980870119771843, 0.05, +160.55957358591485, 0.020496016446588654, 0.05, +160.56043784026784, 0.017285087060019577, 0.05, +160.5611552137441, 0.014347469524992452, 0.05, +160.5617394127806, 0.01168398073028549, 0.05, +160.56220412573515, 0.009294259090729236, 0.05, +160.56256303922805, 0.007178269858064441, 0.05, +160.56282984036056, 0.005336022650346313, 0.05, +160.56301821659943, 0.0037675247775087926, 0.05, +160.56314185567678, 0.0024727815470664536, 0.05, +160.56321444550693, 0.0014517966030296661, 0.05, +160.5632496741183, 7.045722278282762E-4, 0.05, +160.56326122960192, 2.3110967202747803E-4, 0.05, +160.56326280007573, 3.1409476276100336E-5, 0.05, +160.56326280007573, 0.0, 0.05, From 5402db58b4dfbecea403f860f1232f66c46deb4e Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Tue, 7 Mar 2017 16:36:12 -0500 Subject: [PATCH 45/66] Stop stripping off the last character of DT. --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- .../robot/drive/talonCluster/util/MotionProfileData.java | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a7301db4..d18f2b8c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Mar 05 16:38:54 EST 2017 +#Tue Mar 07 16:17:41 EST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java index 88a9ed2b..99493369 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java @@ -34,9 +34,7 @@ private void processLine(String line) { data = new double[Integer.parseInt(tokens[0])][3]; } else { // Strip the end of line comma - if (tokens[2].endsWith(",")) { - tokens[2] = tokens[2].substring(0, tokens[2].length() - 2); - } + tokens[2].replace(",",""); data[dPtr] = Arrays.stream(tokens).mapToDouble(Double::parseDouble).toArray(); } From c31f92ba67375772004e9c94a9767e4963f00e4f Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Tue, 7 Mar 2017 17:10:37 -0500 Subject: [PATCH 46/66] Fix balbasaur map. --- .../org/usfirst/frc/team449/robot/Robot.java | 9 +- .../talonCluster/util/MotionProfileData.java | 2 +- src/main/resources/balbasaur_map.cfg | 101 ++++-------------- 3 files changed, 25 insertions(+), 87 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 7858fc28..3756c60f 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -6,6 +6,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import maps.org.usfirst.frc.team449.robot.Robot2017Map; import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ExecuteProfile; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.PIDTest; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; @@ -44,8 +45,8 @@ public class Robot extends IterativeRobot { public void robotInit() { System.out.println("Started robotInit"); try { - //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", - cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", + cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/balbasaur_map.cfg", + //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map.cfg", //cfg = (Robot2017Map.Robot2017) MappedSubsystem.readConfig("/home/lvuser/449_resources/final_map_only_drive.cfg", Robot2017Map.Robot2017.newBuilder()); } catch (IOException e) { @@ -117,13 +118,13 @@ public void teleopPeriodic() { @Override public void autonomousInit() { -// Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); + Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); driveSubsystem.setVBusThrottle(0, 0); driveSubsystem.leftMaster.canTalon.setEncPosition(0); driveSubsystem.rightMaster.canTalon.setEncPosition(0); driveSubsystem.setDefaultThrottle(0, 0); - Scheduler.getInstance().add(new PIDTest(driveSubsystem)); + //Scheduler.getInstance().add(new PIDTest(driveSubsystem)); } @Override diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java index 99493369..f9a41e45 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MotionProfileData.java @@ -34,7 +34,7 @@ private void processLine(String line) { data = new double[Integer.parseInt(tokens[0])][3]; } else { // Strip the end of line comma - tokens[2].replace(",",""); + tokens[2] = tokens[2].replace(",",""); data[dPtr] = Arrays.stream(tokens).mapToDouble(Double::parseDouble).toArray(); } diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index 9923366f..3c0ef9b9 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -1,22 +1,19 @@ -tank_oi { - left_stick: 1 - right_stick: 2 -} arcade_oi { - gamepad: 5 + gamepad: 1 gamepad_left_axis: 0 gamepad_right_axis: 3 - turnaround_button: 8 - turn_to_0_button: 3 - turn_to_30_button: 6 - turn_to_180_button: 7 - turn_to_330_button: 4 + deadband: 0.05 - dpad_shift: 0.15 - override_navX: 10 - invert_fwd: false - invert_rot: false - invert_dpad: false + dpad_shift: 0.1 + + invert_fwd: false + invert_rot: false + invert_dpad: false + + override_navX { + ji: 1 + bi: 12 + } } drive { drive {} @@ -59,7 +56,7 @@ drive { inverted: false } right_master { - port: 2 + port: 5 feedback_device: QuadEncoder reverse_sensor: false reverse_output: true @@ -74,6 +71,7 @@ drive { kI_mp: 0 kD_mp: 0 max_speed_hg: 12.0127 + fwd_lim_norm_open: true rev_lim_norm_open: true fwd_lim_enabled: true rev_lim_enabled: true @@ -85,7 +83,7 @@ drive { encoder_CPR: 512 } left_master{ - port: 7 + port: 6 feedback_device: QuadEncoder reverse_sensor: true reverse_output: false @@ -139,7 +137,7 @@ drive { encoder_CPR: 512 } right_slave{ - port: 3 + port: 4 feedback_device: QuadEncoder reverse_sensor: false reverse_output: true @@ -166,7 +164,7 @@ drive { encoder_CPR: 512 } left_slave{ - port: 8 + port: 2 feedback_device: QuadEncoder reverse_sensor: false reverse_output: true @@ -193,7 +191,7 @@ drive { encoder_CPR: 512 } left_slave{ - port: 6 + port: 3 feedback_device: QuadEncoder reverse_sensor: false reverse_output: true @@ -219,65 +217,4 @@ drive { brake_mode: true encoder_CPR: 512 } -} -climber{ - mechanism{} - winch { - port: 5 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: false - is_inverted: false - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP0: 0.3 - kI0: 0.00 - kD0: 3.0 - kP1: 0.3 - kI1: 0.00 - kD1: 3.0 - max_speed: 13.5 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 512 - } - max_current: 12.0 -} -shooter { - mechanism {} - talon { - port: 8 - feedback_device: CtreMagEncoder_Relative - reverse_sensor: false - reverse_output: false - is_inverted: false - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP0: 0.0 - kI0: 0.0 - kD0: 0.0 - kP1: 0.0 - kI1: 0.0 - kD1: 0.0 - max_speed: 70.0 - fwd_lim_norm_open: false - rev_lim_norm_open: false - fwd_lim_enabled: false - rev_lim_enabled: false - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 1024 - } -} +} \ No newline at end of file From d37c74d2db2c788ce12e91d737dcad2d4ae19dfe Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Tue, 7 Mar 2017 18:28:45 -0500 Subject: [PATCH 47/66] Added lots of print statements. --- .../org/usfirst/frc/team449/robot/Robot.java | 2 +- .../robot/components/UnitlessCANTalonSRX.java | 8 ++- .../drive/talonCluster/TalonClusterDrive.java | 3 +- .../talonCluster/commands/ExecuteProfile.java | 56 ++++++++++++++++--- src/main/resources/balbasaur_map.cfg | 2 + 5 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 3756c60f..5efb0260 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -118,12 +118,12 @@ public void teleopPeriodic() { @Override public void autonomousInit() { - Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); driveSubsystem.setVBusThrottle(0, 0); driveSubsystem.leftMaster.canTalon.setEncPosition(0); driveSubsystem.rightMaster.canTalon.setEncPosition(0); driveSubsystem.setDefaultThrottle(0, 0); + Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); //Scheduler.getInstance().add(new PIDTest(driveSubsystem)); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java b/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java index fa87aeae..101faabc 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java +++ b/src/main/java/org/usfirst/frc/team449/robot/components/UnitlessCANTalonSRX.java @@ -48,7 +48,7 @@ public UnitlessCANTalonSRX(maps.org.usfirst.frc.team449.robot.components.Unitles setPIDF(map.getKPHg(), map.getKIHg(), map.getKDHg(), maxSpeed, 0, 0, 0); if (map.hasKPMp()) { - setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), map.getMaxSpeedHg(), 0, 0, 1); + setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), maxSpeed, 0, 0, 1); } canTalon.setProfile(map.getProfile()); @@ -95,12 +95,18 @@ private void setPIDF(double p, double i, double d, double maxSpeed, int iZone, d public void switchToHighGear(){ maxSpeed = map.getMaxSpeedHg(); setPIDF(map.getKPHg(), map.getKIHg(), map.getKDHg(), maxSpeed, 0, 0, 0); + if (map.hasKPMp()) { + setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), maxSpeed, 0, 0, 1); + } } public void switchToLowGear(){ if (map.hasKPLg()) { maxSpeed = map.getMaxSpeedLg(); setPIDF(map.getKPLg(), map.getKILg(), map.getKDLg(), maxSpeed, 0, 0, 0); + if (map.hasKPMp()) { + setPIDF(map.getKPMp(), map.getKIMp(), map.getKDMp(), maxSpeed, 0, 0, 1); + } } else { System.out.println("You're trying to switch your PIDF constants to low gear, but you don't have low gear constants."); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 8da8ee7d..4ccb997d 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -11,6 +11,7 @@ import org.usfirst.frc.team449.robot.components.UnitlessCANTalonSRX; import org.usfirst.frc.team449.robot.drive.DriveSubsystem; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.DefaultArcadeDrive; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ExecuteProfile; import org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepad; import java.io.FileWriter; @@ -246,7 +247,7 @@ protected void initDefaultCommand() { overrideNavX = false; // setDefaultCommand(new PIDTest(this)); // setDefaultCommand(new OpArcadeDrive(this, oi)); - setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); +// setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); // setDefaultCommand(new ExecuteProfile(this)); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index fd499538..aa1288b1 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -64,8 +64,13 @@ protected void execute() { System.out.println("Active Points' Positions: " + leftStatus.activePoint.position + ", " + rightStatus .activePoint.position); System.out.println("Output Enable: " + leftStatus.outputEnable + ", " + rightStatus.outputEnable); - if (!leftStatus.activePointValid || !rightStatus.activePointValid) { - System.out.println("INVALID! YOU DONE FUCKED UP"); + if (!leftStatus.activePointValid) { + System.out.println("INVALID! YOU DONE FUCKED UP LEFT SIDE"); + System.out.println("Left active point: "+pointToString(leftStatus.activePoint)); + } + if (!rightStatus.activePointValid){ + System.out.println("INVALID! YOU DONE FUCKED UP RIGHT SIDE"); + System.out.println("Right active point: "+pointToString(rightStatus.activePoint)); } if (leftStatus.activePoint.isLastPoint || rightStatus.activePoint.isLastPoint) { System.out.println("LAST POINT"); @@ -76,7 +81,23 @@ protected void execute() { tcd.logData(); } + @Override + protected boolean isFinished(){ + return false; + } + + @Override + protected void end(){ + System.out.println("ExecuteProfile end."); + } + + @Override + protected void interrupted(){ + System.out.println("ExecuteProfile interrupted!"); + } + private void control() { + System.out.println("Starting control()."); tcd.leftMaster.canTalon.getMotionProfileStatus(leftStatus); tcd.rightMaster.canTalon.getMotionProfileStatus(rightStatus); // TODO take this out @@ -85,11 +106,13 @@ private void control() { switch (_state) { case 0: { + System.out.println("State 0."); startFilling(); _state = 1; break; } case 1: { + System.out.println("State 1"); mpProcessNotifier.startPeriodic(UPDATE_RATE); tcd.leftMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); // TODO figure out // what this does @@ -106,6 +129,7 @@ private void control() { break; } case 2: { + System.out.println("State 2"); if (leftStatus.btmBufferCnt < MIN_NUM_LOADED_POINTS || rightStatus.btmBufferCnt < MIN_NUM_LOADED_POINTS) { tcd.leftMaster.canTalon.setEncPosition(0); @@ -120,6 +144,7 @@ private void control() { } } case 3: { + System.out.println("State 3"); // Do nothing } } @@ -147,31 +172,40 @@ private void startFilling() { for (int i = 0; i < leftProfile.data.length; ++i) { // Set all the fields of the profile point point.position = -inchesToNative(leftProfile.data[i][0]); - point.velocity = -inchesToNative(leftProfile.data[i][1]); - point.timeDurMs = (int) leftProfile.data[i][2]; + point.velocity = -tcd.leftMaster.RPStoNative(leftProfile.data[i][1]/60.); + point.timeDurMs = (int) (leftProfile.data[i][2] * 1000.); point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward point.zeroPos = i == 0; // If its the first point, zeroPos = true point.isLastPoint = (i + 1) == leftProfile.data.length; // If its the last point, isLastPoint = true // Send the point to the Talon's buffer - tcd.leftMaster.canTalon.pushMotionProfileTrajectory(point); + if(!tcd.leftMaster.canTalon.pushMotionProfileTrajectory(point)) { + System.out.println("Left buffer full!"); + break; + } + + System.out.println("LEFT POINT "+(i+1)+": "+pointToString(point)); } for (int i = 0; i < rightProfile.data.length; ++i) { // Set all the fields of the profile point point.position = -inchesToNative(rightProfile.data[i][0]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); - point.velocity = -inchesToNative(rightProfile.data[i][1]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); - point.timeDurMs = (int) rightProfile.data[i][2]; + point.velocity = -tcd.leftMaster.RPStoNative(rightProfile.data[i][1]/60.) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); + point.timeDurMs = (int) (rightProfile.data[i][2] * 1000.); point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward point.zeroPos = i == 0; // If its the first point, zeroPos = true point.isLastPoint = (i + 1) == rightProfile.data.length; // If its the last point, isLastPoint = true // Send the point to the Talon's buffer - tcd.rightMaster.canTalon.pushMotionProfileTrajectory(point); + if (!tcd.rightMaster.canTalon.pushMotionProfileTrajectory(point)){ + System.out.println("Right buffer full!"); + break; + } - System.out.println("RIGHT POINT VEL: " + point.velocity); + if (i == 0) + System.out.println("RIGHT POINT "+(i+1)+": "+pointToString(point)); } @@ -191,4 +225,8 @@ private double inchesToNative(double inches){ double rotations = inches / (WHEEL_DIAMETER*Math.PI); return rotations * (tcd.leftMaster.encoderCPR*4); } + + private String pointToString(CANTalon.TrajectoryPoint point){ + return "(pos = " + nativeToInches(point.position) + " in, vel = " + tcd.leftMaster.nativeToRPS(point.velocity) + " rps, dT = " + point.timeDurMs+" ms)"; + } } diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index 3c0ef9b9..5257b60c 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -71,6 +71,7 @@ drive { kI_mp: 0 kD_mp: 0 max_speed_hg: 12.0127 + max_speed_lg: 12.0127 fwd_lim_norm_open: true rev_lim_norm_open: true fwd_lim_enabled: true @@ -98,6 +99,7 @@ drive { kI_mp: 0.1 kD_mp: 3.0 max_speed_hg: 12.0127 + max_speed_lg: 12.0127 fwd_lim_norm_open: true rev_lim_norm_open: true fwd_lim_enabled: true From 262f7ce19a79947d47f6248d1e420a1346ca2912 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Tue, 7 Mar 2017 22:12:30 -0500 Subject: [PATCH 48/66] Add default case to switch statement. --- .../talonCluster/commands/ExecuteProfile.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index aa1288b1..0333c21c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -105,17 +105,15 @@ private void control() { tcd.rightTPointStatus = rightStatus; switch (_state) { - case 0: { + case 0: System.out.println("State 0."); startFilling(); _state = 1; break; - } - case 1: { + case 1: System.out.println("State 1"); mpProcessNotifier.startPeriodic(UPDATE_RATE); - tcd.leftMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); // TODO figure out - // what this does + tcd.leftMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); // TODO figure out what this does tcd.rightMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); System.out.println("LEFT BTM BUFF CNT " + leftStatus.btmBufferCnt); System.out.println("RIGHT BTM BUFF CNT " + rightStatus.btmBufferCnt); @@ -127,8 +125,7 @@ private void control() { System.out.println("NOT FULLY LOADED"); } break; - } - case 2: { + case 2: System.out.println("State 2"); if (leftStatus.btmBufferCnt < MIN_NUM_LOADED_POINTS || rightStatus.btmBufferCnt < MIN_NUM_LOADED_POINTS) { @@ -142,11 +139,13 @@ private void control() { tcd.rightMaster.canTalon.clearMotionProfileHasUnderrun(); _state = 3; } - } - case 3: { + case 3: System.out.println("State 3"); // Do nothing - } + break; + default: + System.out.println("Default state, something went wrong."); + break; } } From 2bd73265c73ffbbdfdf58147ae4f03e7572ce92a Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Wed, 8 Mar 2017 18:20:06 -0500 Subject: [PATCH 49/66] Enable the talons properly. --- .../drive/talonCluster/TalonClusterDrive.java | 4 +- .../talonCluster/commands/ExecuteProfile.java | 72 ++++++++++--------- .../talonCluster/util/MPUpdaterProcess.java | 4 +- src/main/resources/balbasaur_map.cfg | 4 +- 4 files changed, 46 insertions(+), 38 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 4ccb997d..1fdd6d1a 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -245,8 +245,8 @@ public void logData(double sp) { protected void initDefaultCommand() { startTime = System.nanoTime(); overrideNavX = false; - // setDefaultCommand(new PIDTest(this)); - // setDefaultCommand(new OpArcadeDrive(this, oi)); +// setDefaultCommand(new PIDTest(this)); +// setDefaultCommand(new OpArcadeDrive(this, oi)); // setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); // setDefaultCommand(new ExecuteProfile(this)); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index 0333c21c..2f8c7e99 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -48,8 +48,17 @@ public ExecuteProfile(TalonClusterDrive subsystem) { */ @Override protected void initialize() { - } + // Put the masters in motion profile mode + tcd.leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); + tcd.rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); + + // Make sure they are disabled while they have data piped into them + tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); + tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); + tcd.leftMaster.canTalon.clearMotionProfileHasUnderrun(); + tcd.rightMaster.canTalon.clearMotionProfileHasUnderrun(); + } /** * If its the first execute call, start the thread * Other than that, error check every loop call @@ -57,6 +66,7 @@ protected void initialize() { @Override protected void execute() { control(); + /* SmartDashboard.putNumber("Left MP Error", tcd.leftMaster.getSpeed() - tcd.leftMaster.nativeToRPS(leftStatus.activePoint.velocity)); SmartDashboard.putNumber("Right MP Error", tcd.rightMaster.getSpeed() - tcd.rightMaster.nativeToRPS(rightStatus.activePoint.velocity)); System.out.println("Active Points' Velocities: " + leftStatus.activePoint.velocity + ", " + rightStatus @@ -66,11 +76,11 @@ protected void execute() { System.out.println("Output Enable: " + leftStatus.outputEnable + ", " + rightStatus.outputEnable); if (!leftStatus.activePointValid) { System.out.println("INVALID! YOU DONE FUCKED UP LEFT SIDE"); - System.out.println("Left active point: "+pointToString(leftStatus.activePoint)); + System.out.println("Left active point: " + pointToString(leftStatus.activePoint)); } - if (!rightStatus.activePointValid){ + if (!rightStatus.activePointValid) { System.out.println("INVALID! YOU DONE FUCKED UP RIGHT SIDE"); - System.out.println("Right active point: "+pointToString(rightStatus.activePoint)); + System.out.println("Right active point: " + pointToString(rightStatus.activePoint)); } if (leftStatus.activePoint.isLastPoint || rightStatus.activePoint.isLastPoint) { System.out.println("LAST POINT"); @@ -79,6 +89,8 @@ protected void execute() { System.out.println("FIRST POINT"); } tcd.logData(); + */ + System.out.println("Output Enable: " + leftStatus.outputEnable + ", " + rightStatus.outputEnable); } @Override @@ -88,21 +100,25 @@ protected boolean isFinished(){ @Override protected void end(){ + mpProcessNotifier.stop(); System.out.println("ExecuteProfile end."); } @Override protected void interrupted(){ + mpProcessNotifier.stop(); + tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); + tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); System.out.println("ExecuteProfile interrupted!"); } private void control() { - System.out.println("Starting control()."); + //System.out.println("Starting control()."); tcd.leftMaster.canTalon.getMotionProfileStatus(leftStatus); tcd.rightMaster.canTalon.getMotionProfileStatus(rightStatus); - // TODO take this out - tcd.leftTPointStatus = leftStatus; - tcd.rightTPointStatus = rightStatus; + + if (leftStatus.isUnderrun || rightStatus.isUnderrun) + System.out.println("UNDERRUN! That's BAAAD!"); switch (_state) { case 0: @@ -118,7 +134,7 @@ private void control() { System.out.println("LEFT BTM BUFF CNT " + leftStatus.btmBufferCnt); System.out.println("RIGHT BTM BUFF CNT " + rightStatus.btmBufferCnt); - if (leftStatus.btmBufferCnt >= 128 || rightStatus.btmBufferCnt >= 128) { + if (leftStatus.btmBufferCnt >= 128 && rightStatus.btmBufferCnt >= 128) { _state = 2; System.out.println("LOADED"); } else { @@ -127,21 +143,22 @@ private void control() { break; case 2: System.out.println("State 2"); - if (leftStatus.btmBufferCnt < MIN_NUM_LOADED_POINTS || rightStatus.btmBufferCnt < - MIN_NUM_LOADED_POINTS) { - tcd.leftMaster.canTalon.setEncPosition(0); - tcd.rightMaster.canTalon.setEncPosition(0); - - tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); - tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); - System.out.println("CAN buffer loaded; clearing underrun"); - tcd.leftMaster.canTalon.clearMotionProfileHasUnderrun(); - tcd.rightMaster.canTalon.clearMotionProfileHasUnderrun(); + System.out.println("Enabling Talons."); + tcd.leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); + tcd.rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); + tcd.leftMaster.canTalon.enable(); + tcd.rightMaster.canTalon.enable(); + tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); + tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); + tcd.leftMaster.canTalon.getMotionProfileStatus(leftStatus); + tcd.rightMaster.canTalon.getMotionProfileStatus(rightStatus); + if(leftStatus.outputEnable == CANTalon.SetValueMotionProfile.Enable && rightStatus.outputEnable == CANTalon.SetValueMotionProfile.Enable) _state = 3; - } + break; case 3: System.out.println("State 3"); - // Do nothing + tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); + tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); break; default: System.out.println("Default state, something went wrong."); @@ -152,19 +169,8 @@ private void control() { private void startFilling() { MPUpdaterProcess updaterProcess = new MPUpdaterProcess(); - // Put the masters in motion profile mode - tcd.leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); - tcd.rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); - - // Make sure they are disabled while they have data piped into them - tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); - tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Disable.value); - - // Clear all old motion profile settings - tcd.leftMaster.canTalon.clearMotionProfileHasUnderrun(); - tcd.leftMaster.canTalon.clearMotionProfileTrajectories(); - tcd.rightMaster.canTalon.clearMotionProfileHasUnderrun(); tcd.rightMaster.canTalon.clearMotionProfileTrajectories(); + tcd.leftMaster.canTalon.clearMotionProfileTrajectories(); // Fill the Talon's buffer with points CANTalon.TrajectoryPoint point = new CANTalon.TrajectoryPoint(); diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java index 7ac3b7cd..f238d146 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/util/MPUpdaterProcess.java @@ -23,6 +23,8 @@ public void addTalon(CANTalon talon) { // Process the MP buffer for each Talon in the queue @Override public void run() { - talonQueue.forEach(CANTalon::processMotionProfileBuffer); + for (CANTalon talon : talonQueue){ + talon.processMotionProfileBuffer(); + } } } diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index 5257b60c..1050e2ae 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -96,8 +96,8 @@ drive { kI_hg: 0.00 kD_hg: 3.0 kP_mp: 0.2 - kI_mp: 0.1 - kD_mp: 3.0 + kI_mp: 0.0 + kD_mp: 0.0 max_speed_hg: 12.0127 max_speed_lg: 12.0127 fwd_lim_norm_open: true From 3d846de5bd7fe414595034f2646d80198ab3944d Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Thu, 9 Mar 2017 15:41:52 -0500 Subject: [PATCH 50/66] Finish properly after all points have been run. --- .../talonCluster/commands/ExecuteProfile.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index 2f8c7e99..1cf014bb 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -13,7 +13,6 @@ * Load and execute a motion profile on the master Talons in the two motor clusters */ public class ExecuteProfile extends ReferencingCommand { - private static final int MIN_NUM_LOADED_POINTS = 200; // total number of points private static final String LEFT_IN_FILE_NAME = "/home/lvuser/449_resources/leftProfile.csv"; private static final String RIGHT_IN_FILE_NAME = "/home/lvuser/449_resources/rightProfile.csv"; private static final double UPDATE_RATE = 0.005; // MP processing thread update rate copied from CTRE example @@ -28,6 +27,8 @@ public class ExecuteProfile extends ReferencingCommand { private CANTalon.MotionProfileStatus leftStatus; private CANTalon.MotionProfileStatus rightStatus; + private boolean finished; + public ExecuteProfile(TalonClusterDrive subsystem) { super(subsystem); requires(subsystem); @@ -40,6 +41,8 @@ public ExecuteProfile(TalonClusterDrive subsystem) { leftProfile = new MotionProfileData(LEFT_IN_FILE_NAME); rightProfile = new MotionProfileData(RIGHT_IN_FILE_NAME); + finished = false; + mpProcessNotifier = null; // WARNING not assigned until after "initialize" is called } @@ -58,7 +61,10 @@ protected void initialize() { tcd.leftMaster.canTalon.clearMotionProfileHasUnderrun(); tcd.rightMaster.canTalon.clearMotionProfileHasUnderrun(); + + finished = false; } + /** * If its the first execute call, start the thread * Other than that, error check every loop call @@ -66,7 +72,6 @@ protected void initialize() { @Override protected void execute() { control(); - /* SmartDashboard.putNumber("Left MP Error", tcd.leftMaster.getSpeed() - tcd.leftMaster.nativeToRPS(leftStatus.activePoint.velocity)); SmartDashboard.putNumber("Right MP Error", tcd.rightMaster.getSpeed() - tcd.rightMaster.nativeToRPS(rightStatus.activePoint.velocity)); System.out.println("Active Points' Velocities: " + leftStatus.activePoint.velocity + ", " + rightStatus @@ -89,17 +94,17 @@ protected void execute() { System.out.println("FIRST POINT"); } tcd.logData(); - */ - System.out.println("Output Enable: " + leftStatus.outputEnable + ", " + rightStatus.outputEnable); } @Override protected boolean isFinished(){ - return false; + return finished; } @Override protected void end(){ + tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Hold.value); + tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Hold.value); mpProcessNotifier.stop(); System.out.println("ExecuteProfile end."); } @@ -113,7 +118,6 @@ protected void interrupted(){ } private void control() { - //System.out.println("Starting control()."); tcd.leftMaster.canTalon.getMotionProfileStatus(leftStatus); tcd.rightMaster.canTalon.getMotionProfileStatus(rightStatus); @@ -143,7 +147,6 @@ private void control() { break; case 2: System.out.println("State 2"); - System.out.println("Enabling Talons."); tcd.leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); tcd.rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); tcd.leftMaster.canTalon.enable(); @@ -157,8 +160,9 @@ private void control() { break; case 3: System.out.println("State 3"); - tcd.leftMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); - tcd.rightMaster.canTalon.set(CANTalon.SetValueMotionProfile.Enable.value); + if(leftStatus.activePoint.isLastPoint && rightStatus.activePoint.isLastPoint){ + finished = true; + } break; default: System.out.println("Default state, something went wrong."); From 042b5de1c5f401e2c64b62b542c0b4183c240f5d Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Thu, 9 Mar 2017 16:28:39 -0500 Subject: [PATCH 51/66] Remove print statements to speed up run time. --- .../drive/talonCluster/TalonClusterDrive.java | 9 +- .../talonCluster/commands/ExecuteProfile.java | 20 ++-- src/main/resources/balbasaur_map.cfg | 110 +----------------- 3 files changed, 15 insertions(+), 124 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 1fdd6d1a..7c012a47 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -68,7 +68,7 @@ public TalonClusterDrive(maps.org.usfirst.frc.team449.robot.drive.talonCluster.T } this.map = map; this.oi = oi; - this.navx = new AHRS(SPI.Port.kMXP); + //this.navx = new AHRS(SPI.Port.kMXP); this.turnPID = map.getTurnPID(); this.straightPID = map.getStraightPID(); this.upTimeThresh = map.getUpTimeThresh(); @@ -176,7 +176,7 @@ public void logData() { SmartDashboard.putNumber("Left", leftMaster.getSpeed()); SmartDashboard.putNumber("Right", rightMaster.getSpeed()); SmartDashboard.putNumber("Throttle", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); - SmartDashboard.putNumber("Heading", navx.pidGet()); + SmartDashboard.putNumber("Heading", getGyroOutput()); SmartDashboard.putNumber("Left Setpoint", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); SmartDashboard.putNumber("Left Error", leftMaster.nativeToRPS(leftMaster.canTalon.getError())); SmartDashboard.putNumber("Right Setpoint", rightMaster.nativeToRPS(rightMaster.canTalon.getSetpoint())); @@ -219,7 +219,7 @@ public void logData(double sp) { SmartDashboard.putNumber("Right Pos", rightMaster.canTalon.getEncPosition()); SmartDashboard.putNumber("Left Pos", leftMaster.canTalon.getEncPosition()); SmartDashboard.putNumber("Throttle", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); - SmartDashboard.putNumber("Heading", navx.pidGet()); + SmartDashboard.putNumber("Heading", getGyroOutput()); SmartDashboard.putNumber("Left Setpoint", leftMaster.nativeToRPS(leftMaster.canTalon.getSetpoint())); SmartDashboard.putNumber("Left Error", leftMaster.nativeToRPS(leftMaster.canTalon.getError())); SmartDashboard.putNumber("Right Setpoint", rightMaster.nativeToRPS(rightMaster.canTalon.getSetpoint())); @@ -252,7 +252,8 @@ protected void initDefaultCommand() { } public double getGyroOutput() { - return navx.pidGet(); + return 0; + //return navx.pidGet(); } public void setLowGear(boolean setLowGear) { diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index 1cf014bb..fb863428 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -72,12 +72,10 @@ protected void initialize() { @Override protected void execute() { control(); + /* SmartDashboard.putNumber("Left MP Error", tcd.leftMaster.getSpeed() - tcd.leftMaster.nativeToRPS(leftStatus.activePoint.velocity)); SmartDashboard.putNumber("Right MP Error", tcd.rightMaster.getSpeed() - tcd.rightMaster.nativeToRPS(rightStatus.activePoint.velocity)); - System.out.println("Active Points' Velocities: " + leftStatus.activePoint.velocity + ", " + rightStatus - .activePoint.velocity); - System.out.println("Active Points' Positions: " + leftStatus.activePoint.position + ", " + rightStatus - .activePoint.position); + System.out.println("Active Point: " + pointToString(leftStatus.activePoint)); System.out.println("Output Enable: " + leftStatus.outputEnable + ", " + rightStatus.outputEnable); if (!leftStatus.activePointValid) { System.out.println("INVALID! YOU DONE FUCKED UP LEFT SIDE"); @@ -93,6 +91,7 @@ protected void execute() { if (leftStatus.activePoint.zeroPos || rightStatus.activePoint.zeroPos) { System.out.println("FIRST POINT"); } + */ tcd.logData(); } @@ -126,12 +125,12 @@ private void control() { switch (_state) { case 0: - System.out.println("State 0."); +// System.out.println("State 0."); startFilling(); _state = 1; break; case 1: - System.out.println("State 1"); +// System.out.println("State 1"); mpProcessNotifier.startPeriodic(UPDATE_RATE); tcd.leftMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); // TODO figure out what this does tcd.rightMaster.canTalon.changeMotionControlFramePeriod((int) (UPDATE_RATE * 1e3)); @@ -146,7 +145,7 @@ private void control() { } break; case 2: - System.out.println("State 2"); +// System.out.println("State 2"); tcd.leftMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); tcd.rightMaster.canTalon.changeControlMode(CANTalon.TalonControlMode.MotionProfile); tcd.leftMaster.canTalon.enable(); @@ -159,7 +158,7 @@ private void control() { _state = 3; break; case 3: - System.out.println("State 3"); +// System.out.println("State 3"); if(leftStatus.activePoint.isLastPoint && rightStatus.activePoint.isLastPoint){ finished = true; } @@ -194,7 +193,7 @@ private void startFilling() { break; } - System.out.println("LEFT POINT "+(i+1)+": "+pointToString(point)); +// System.out.println("LEFT POINT "+(i+1)+": "+pointToString(point)); } for (int i = 0; i < rightProfile.data.length; ++i) { @@ -213,8 +212,7 @@ private void startFilling() { break; } - if (i == 0) - System.out.println("RIGHT POINT "+(i+1)+": "+pointToString(point)); +// System.out.println("RIGHT POINT "+(i+1)+": "+pointToString(point)); } diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index 1050e2ae..d6db942d 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -56,7 +56,7 @@ drive { inverted: false } right_master { - port: 5 + port: 2 feedback_device: QuadEncoder reverse_sensor: false reverse_output: true @@ -111,112 +111,4 @@ drive { brake_mode: true encoder_CPR: 512 } - right_slave { - port: 1 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: true - is_inverted: true - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP_hg: 0.3 - kI_hg: 0.00 - kD_hg: 3.0 - kP_mp: 0.0005 - kI_mp: 0.1 - kD_mp: 3.0 - max_speed_hg: 12.0127 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 512 - } - right_slave{ - port: 4 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: true - is_inverted: true - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP_hg: 0.3 - kI_hg: 0.00 - kD_hg: 3.0 - kP_mp: 0.0005 - kI_mp: 0.1 - kD_mp: 3.0 - max_speed_hg: 12.0127 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 512 - } - left_slave{ - port: 2 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: true - is_inverted: false - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP_hg: 0.3 - kI_hg: 0.00 - kD_hg: 3.0 - kP_mp: 0.0005 - kI_mp: 0.1 - kD_mp: 3.0 - max_speed_hg: 12.0127 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 512 - } - left_slave{ - port: 3 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: true - is_inverted: false - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP_hg: 0.3 - kI_hg: 0.00 - kD_hg: 3.0 - kP_mp: 0.0005 - kI_mp: 0.1 - kD_mp: 3.0 - max_speed_hg: 12.0127 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: true - encoder_CPR: 512 - } } \ No newline at end of file From 0ac8537941289f8726aa3a7d6b928630016e637c Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Fri, 10 Mar 2017 16:32:07 -0500 Subject: [PATCH 52/66] Fix units. --- .../robot/drive/talonCluster/commands/ExecuteProfile.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java index fb863428..e38aa3f5 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/ExecuteProfile.java @@ -15,6 +15,7 @@ public class ExecuteProfile extends ReferencingCommand { private static final String LEFT_IN_FILE_NAME = "/home/lvuser/449_resources/leftProfile.csv"; private static final String RIGHT_IN_FILE_NAME = "/home/lvuser/449_resources/rightProfile.csv"; + private static final int MIN_NUM_POINTS_IN_BTM = 128; private static final double UPDATE_RATE = 0.005; // MP processing thread update rate copied from CTRE example private static final double WHEEL_DIAMETER = 4; //In inches private int _state = 0; @@ -137,7 +138,7 @@ private void control() { System.out.println("LEFT BTM BUFF CNT " + leftStatus.btmBufferCnt); System.out.println("RIGHT BTM BUFF CNT " + rightStatus.btmBufferCnt); - if (leftStatus.btmBufferCnt >= 128 && rightStatus.btmBufferCnt >= 128) { + if (leftStatus.btmBufferCnt >= MIN_NUM_POINTS_IN_BTM && rightStatus.btmBufferCnt >= MIN_NUM_POINTS_IN_BTM) { _state = 2; System.out.println("LOADED"); } else { @@ -180,7 +181,7 @@ private void startFilling() { for (int i = 0; i < leftProfile.data.length; ++i) { // Set all the fields of the profile point point.position = -inchesToNative(leftProfile.data[i][0]); - point.velocity = -tcd.leftMaster.RPStoNative(leftProfile.data[i][1]/60.); + point.velocity = -tcd.leftMaster.RPStoNative(leftProfile.data[i][1]); point.timeDurMs = (int) (leftProfile.data[i][2] * 1000.); point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward @@ -199,7 +200,7 @@ private void startFilling() { for (int i = 0; i < rightProfile.data.length; ++i) { // Set all the fields of the profile point point.position = -inchesToNative(rightProfile.data[i][0]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); - point.velocity = -tcd.leftMaster.RPStoNative(rightProfile.data[i][1]/60.) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); + point.velocity = -tcd.leftMaster.RPStoNative(rightProfile.data[i][1]) * ((TalonClusterDriveMap.TalonClusterDrive) tcd.map).getL2R(); point.timeDurMs = (int) (rightProfile.data[i][2] * 1000.); point.profileSlotSelect = 1; // gain selection point.velocityOnly = false; // true => no position servo just velocity feedforward From 7ada052d1bbf7c97784263fb394db34819d61258 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Fri, 10 Mar 2017 20:31:38 -0500 Subject: [PATCH 53/66] Fix map issues. --- src/main/resources/fancy_map.cfg | 9 +++++---- src/main/resources/final_map.cfg | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index ccc206c7..ac573ab5 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -52,19 +52,19 @@ arcade_oi { joystick_index: 3 button_index: 10 } - loadShooter { + load_shooter { joystick_index: 2 button_index: 3 } - rackShooter { + rack_shooter { joystick_index: 2 button_index: 4 } - fireShooter { + fire_shooter { joystick_index: 1 button_index: 6 } - resetShooter { + reset_shooter { joystick_index: 2 button_index: 1 } @@ -75,6 +75,7 @@ arcade_oi { } drive { drive {} + l2r: 1 turn_PID { PID { p: 0.007 diff --git a/src/main/resources/final_map.cfg b/src/main/resources/final_map.cfg index 5d2b2be3..e7180722 100644 --- a/src/main/resources/final_map.cfg +++ b/src/main/resources/final_map.cfg @@ -73,6 +73,7 @@ arcade_oi { } drive { drive {} + l2r: 1 turn_PID { PID { p: 0.007 From 99b27c618d8d5c7181462b48aa87de87a6ec15e3 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 08:37:20 -0500 Subject: [PATCH 54/66] Map mechanism buttons properly. --- .../java/org/usfirst/frc/team449/robot/Robot.java | 3 +++ src/main/resources/fancy_map.cfg | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 0b00a809..ae525907 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -6,6 +6,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import maps.org.usfirst.frc.team449.robot.Robot2017Map; import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.DefaultArcadeDrive; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ExecuteProfile; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.PIDTest; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; @@ -151,6 +152,8 @@ public void teleopInit() { if (driveSubsystem.shifter != null) { Scheduler.getInstance().add(new SwitchToLowGear(driveSubsystem)); } + +// Scheduler.getInstance().add(new DefaultArcadeDrive(driveSubsystem.straightPID, driveSubsystem, oiSubsystem)); } /** diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index ac573ab5..ddcd05ce 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -27,12 +27,12 @@ arcade_oi { button_index: 5 } toggle_feeder { - joystick_index: 3 - button_index: 5 + joystick_index: 2 + button_index: 2 } toggle_intake { joystick_index: 3 - button_index: 6 + button_index: 8 } toggle_intake_up_down { joystick_index: 3 @@ -53,7 +53,7 @@ arcade_oi { button_index: 10 } load_shooter { - joystick_index: 2 + joystick_index: 3 button_index: 3 } rack_shooter { @@ -65,8 +65,8 @@ arcade_oi { button_index: 6 } reset_shooter { - joystick_index: 2 - button_index: 1 + joystick_index: 3 + button_index: 4 } switch_camera { joystick_index: 1 From 78e46822a8a635a6f1ea451528c0e8aa913191f4 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 12:26:52 -0500 Subject: [PATCH 55/66] Turn off limit switches. --- src/main/resources/fancy_map.cfg | 90 ++++++++++++++++---------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index ddcd05ce..d99a3e00 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -138,10 +138,10 @@ drive { kD_mp: 0.0 max_speed_hg: 14.5 max_speed_lg: 5.5 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false fwd_soft_lim_enabled: false fwd_soft_lim_val: 0.1 rev_soft_lim_enabled: false @@ -169,10 +169,10 @@ drive { kD_mp: 0.0 max_speed_hg: 14.5 max_speed_lg: 5.5 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false fwd_soft_lim_enabled: false fwd_soft_lim_val: 0.1 rev_soft_lim_enabled: false @@ -181,31 +181,31 @@ drive { encoder_CPR: 512 } right_slave { - port: 1 - feedback_device: QuadEncoder - reverse_sensor: false - reverse_output: true - is_inverted: true - nominal_out_voltage: 0.0 - peak_out_voltage: 12.0 - profile: 0 - kP_hg: 0.3 - kI_hg: 0.0 - kD_hg: 0.0 - kP_mp: 0.0 - kI_mp: 0.0 - kD_mp: 0.0 - max_speed_hg: 15 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true - fwd_soft_lim_enabled: false - fwd_soft_lim_val: 0.1 - rev_soft_lim_enabled: false - rev_soft_lim_val: -0.1 - brake_mode: false - encoder_CPR: 512 + port: 1 + feedback_device: QuadEncoder + reverse_sensor: false + reverse_output: true + is_inverted: true + nominal_out_voltage: 0.0 + peak_out_voltage: 12.0 + profile: 0 + kP_hg: 0.3 + kI_hg: 0.0 + kD_hg: 0.0 + kP_mp: 0.0 + kI_mp: 0.0 + kD_mp: 0.0 + max_speed_hg: 15 + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false + fwd_soft_lim_enabled: false + fwd_soft_lim_val: 0.1 + rev_soft_lim_enabled: false + rev_soft_lim_val: -0.1 + brake_mode: false + encoder_CPR: 512 } right_slave{ port: 3 @@ -223,10 +223,10 @@ drive { kI_mp: 0.0 kD_mp: 0.0 max_speed_hg: 15 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false fwd_soft_lim_enabled: false fwd_soft_lim_val: 0.1 rev_soft_lim_enabled: false @@ -250,10 +250,10 @@ drive { kI_mp: 0.0 kD_mp: 0.0 max_speed_hg: 15 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false fwd_soft_lim_enabled: false fwd_soft_lim_val: 0.1 rev_soft_lim_enabled: false @@ -277,10 +277,10 @@ drive { kI_mp: 0.0 kD_mp: 0.0 max_speed_hg: 15 - fwd_lim_norm_open: true - rev_lim_norm_open: true - fwd_lim_enabled: true - rev_lim_enabled: true + fwd_lim_norm_open: false + rev_lim_norm_open: false + fwd_lim_enabled: false + rev_lim_enabled: false fwd_soft_lim_enabled: false fwd_soft_lim_val: 0.1 rev_soft_lim_enabled: false From fedfa2c0105f64344c593797bd22ba5e8f6a20e5 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 14:19:49 -0500 Subject: [PATCH 56/66] Fix issue where talons are disabled. --- .../org/usfirst/frc/team449/robot/Robot.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index ae525907..02eae459 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -148,6 +148,9 @@ public void teleopInit() { //Stop the drive for safety reasons driveSubsystem.setVBusThrottle(0, 0); + driveSubsystem.leftMaster.canTalon.enable(); + driveSubsystem.rightMaster.canTalon.enable(); + //Switch to low gear if we have gears if (driveSubsystem.shifter != null) { Scheduler.getInstance().add(new SwitchToLowGear(driveSubsystem)); @@ -171,6 +174,8 @@ public void teleopPeriodic() { @Override public void autonomousInit() { //Set throttle to 0 for safety reasons + driveSubsystem.leftMaster.canTalon.enable(); + driveSubsystem.rightMaster.canTalon.enable(); driveSubsystem.setVBusThrottle(0, 0); Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); } @@ -184,19 +189,4 @@ public void autonomousPeriodic() { Scheduler.getInstance().run(); SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); } - - @Override - public void testPeriodic(){ - SmartDashboard.putNumber("Heading", driveSubsystem.getGyroOutput()); - driveSubsystem.setVBusThrottle(0, 0); - } - - @Override - public void disabledInit() { - driveSubsystem.setVBusThrottle(0, 0); - driveSubsystem.leftMaster.canTalon.reset(); - driveSubsystem.leftMaster.canTalon.clearMotionProfileTrajectories(); - driveSubsystem.rightMaster.canTalon.reset(); - driveSubsystem.rightMaster.canTalon.clearMotionProfileTrajectories(); - } } \ No newline at end of file From 3a7651bcd73e60f8e110bf32c0123c65b664b765 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 14:23:18 -0500 Subject: [PATCH 57/66] Switch overriding NavX to when pressed. --- .../drive/talonCluster/TalonClusterDrive.java | 2 +- .../talonCluster/commands/OverrideNavX.java | 65 +++++++++++++++++++ .../team449/robot/oi/OI2017ArcadeGamepad.java | 10 +-- src/main/resources/fancy_map.cfg | 2 +- 4 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java index 7aca32b7..ca1a5b33 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/TalonClusterDrive.java @@ -419,7 +419,7 @@ protected void initDefaultCommand() { //Set the start time to current time startTime = System.nanoTime(); //Start overriding the NavX. - overrideNavX = true; + overrideNavX = false; //Start driving setDefaultCommand(new DefaultArcadeDrive(straightPID, this, oi)); } diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java new file mode 100644 index 00000000..24d147d8 --- /dev/null +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/OverrideNavX.java @@ -0,0 +1,65 @@ +package org.usfirst.frc.team449.robot.drive.talonCluster.commands; + +import org.usfirst.frc.team449.robot.ReferencingCommand; +import org.usfirst.frc.team449.robot.drive.talonCluster.TalonClusterDrive; + +/** + * Set whether or not to use the NavX to drive straight. + */ +//TODO Make this take a NavxSubsystem instead. +public class OverrideNavX extends ReferencingCommand { + + private boolean override; + + /** + * Default constructor. + * @param drive The drive subsystem to execute this command on + */ + public OverrideNavX(TalonClusterDrive drive, boolean override) { + super(drive); + requires(subsystem); + this.override = override; + } + + /** + * Log when this command is initialized + */ + @Override + protected void initialize() { + System.out.println("OverrideNavX init"); + } + + /** + * Set whether or not we're overriding the NavX + */ + @Override + protected void execute() { + ((TalonClusterDrive) subsystem).overrideNavX = override; + } + + /** + * Finish immediately because this is a state-change command. + * @return true + */ + @Override + protected boolean isFinished() { + return true; + } + + /** + * Log when this command ends + */ + @Override + protected void end() { + System.out.println("OverrideNavX end"); + } + + /** + * Log when this command is interrupted. + */ + @Override + protected void interrupted() { + System.out.println("OverrideNavX Interrupted!"); + } +} + diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index f6d0c998..81dbb878 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -6,12 +6,7 @@ import maps.org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepadMap; import org.usfirst.frc.team449.robot.Robot; import org.usfirst.frc.team449.robot.components.TriggerButton; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXRelativeTTA; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.NavXTurnToAngle; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.OverrideAutoShift; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ToggleOverrideNavX; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToHighGear; -import org.usfirst.frc.team449.robot.drive.talonCluster.commands.SwitchToLowGear; +import org.usfirst.frc.team449.robot.drive.talonCluster.commands.*; import org.usfirst.frc.team449.robot.drive.talonCluster.commands.ois.ArcadeOI; import org.usfirst.frc.team449.robot.mechanism.climber.commands.CurrentClimb; import org.usfirst.frc.team449.robot.mechanism.climber.commands.StopClimbing; @@ -268,7 +263,8 @@ public void mapButtons() { final double TIMEOUT = 5.; //Map mandatory commands - toggleOverrideNavX.whenPressed(new ToggleOverrideNavX(Robot.driveSubsystem)); + toggleOverrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem, true)); + toggleOverrideNavX.whenReleased(new OverrideNavX(Robot.driveSubsystem, false)); //Map drive commands if (turnaround != null) { diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index d99a3e00..1c0361cc 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -20,7 +20,7 @@ arcade_oi { } override_navX { joystick_index: 3 - button_index: 12 + button_index: 6 } climb { joystick_index: 1 From ba0ea8be4c83670a3763e850f18cdfeb09fc6e15 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 14:35:59 -0500 Subject: [PATCH 58/66] Switch to using crappy drive-for-time auto. --- src/main/java/org/usfirst/frc/team449/robot/Robot.java | 3 ++- .../team449/robot/drive/talonCluster/commands/PIDTest.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 02eae459..d1df5b60 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -177,7 +177,8 @@ public void autonomousInit() { driveSubsystem.leftMaster.canTalon.enable(); driveSubsystem.rightMaster.canTalon.enable(); driveSubsystem.setVBusThrottle(0, 0); - Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); + Scheduler.getInstance().add(new PIDTest(driveSubsystem)); + //Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); } /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index 4930580c..855fa32c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -21,8 +21,8 @@ public PIDTest(MappedSubsystem mappedSubsystem) { TalonClusterDrive driveSubsystem = (TalonClusterDrive) mappedSubsystem; //Drive forward for a bit - addSequential(new DriveAtSpeed(driveSubsystem, 0.75, 1.5)); + addSequential(new DriveAtSpeed(driveSubsystem, 0.5, 3)); //Stop - addSequential(new DriveAtSpeed(driveSubsystem, 0, 5)); + addSequential(new DriveAtSpeed(driveSubsystem, 0, 10)); } } From 4e2e9fe1da164661bea4fbce7410849dc287810f Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 15:32:29 -0500 Subject: [PATCH 59/66] Fix driveStraight tuning. --- src/main/java/org/usfirst/frc/team449/robot/Robot.java | 4 ++-- .../org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java | 4 ++-- src/main/resources/fancy_map.cfg | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index d1df5b60..0a2a0340 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -177,8 +177,8 @@ public void autonomousInit() { driveSubsystem.leftMaster.canTalon.enable(); driveSubsystem.rightMaster.canTalon.enable(); driveSubsystem.setVBusThrottle(0, 0); - Scheduler.getInstance().add(new PIDTest(driveSubsystem)); - //Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); +// Scheduler.getInstance().add(new PIDTest(driveSubsystem)); + Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); } /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java index 81dbb878..032e37d5 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java +++ b/src/main/java/org/usfirst/frc/team449/robot/oi/OI2017ArcadeGamepad.java @@ -263,8 +263,8 @@ public void mapButtons() { final double TIMEOUT = 5.; //Map mandatory commands - toggleOverrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem, true)); - toggleOverrideNavX.whenReleased(new OverrideNavX(Robot.driveSubsystem, false)); + toggleOverrideNavX.whenPressed(new OverrideNavX(Robot.driveSubsystem, false)); + toggleOverrideNavX.whenReleased(new OverrideNavX(Robot.driveSubsystem, true)); //Map drive commands if (turnaround != null) { diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index 1c0361cc..8ddc4d66 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -96,9 +96,9 @@ drive { } straight_PID { PID { - p: 0.02 + p: 0.01 i: 0 - d: 0.008 + d: 0 f: 0 percent_tolerance: 1 } From a647fb4ee1c4887d31cdfce9e60b640bcf6f81ac Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sat, 11 Mar 2017 17:45:02 -0500 Subject: [PATCH 60/66] Preffered settings for Naveen. --- .../java/org/usfirst/frc/team449/robot/Robot.java | 10 ++++++++-- .../intake/Intake2017/commands/updown/IntakeUp.java | 12 +++++++++++- src/main/resources/fancy_map.cfg | 4 ++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 0a2a0340..6f1a1b2c 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -13,6 +13,8 @@ import org.usfirst.frc.team449.robot.mechanism.climber.ClimberSubsystem; import org.usfirst.frc.team449.robot.mechanism.feeder.FeederSubsystem; import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.Intake2017; +import org.usfirst.frc.team449.robot.mechanism.intake.Intake2017.commands.updown.IntakeUp; +import org.usfirst.frc.team449.robot.mechanism.intake.IntakeSubsystem; import org.usfirst.frc.team449.robot.mechanism.pneumatics.PneumaticsSubsystem; import org.usfirst.frc.team449.robot.mechanism.singleflywheelshooter.SingleFlywheelShooter; import org.usfirst.frc.team449.robot.oi.OI2017ArcadeGamepad; @@ -156,6 +158,10 @@ public void teleopInit() { Scheduler.getInstance().add(new SwitchToLowGear(driveSubsystem)); } + if (intakeSubsystem != null) { + Scheduler.getInstance().add(new IntakeUp(intakeSubsystem)); + } + // Scheduler.getInstance().add(new DefaultArcadeDrive(driveSubsystem.straightPID, driveSubsystem, oiSubsystem)); } @@ -177,8 +183,8 @@ public void autonomousInit() { driveSubsystem.leftMaster.canTalon.enable(); driveSubsystem.rightMaster.canTalon.enable(); driveSubsystem.setVBusThrottle(0, 0); -// Scheduler.getInstance().add(new PIDTest(driveSubsystem)); - Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); + Scheduler.getInstance().add(new PIDTest(driveSubsystem)); +// Scheduler.getInstance().add(new ExecuteProfile(driveSubsystem)); } /** diff --git a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java index 718789a4..f9e86682 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java +++ b/src/main/java/org/usfirst/frc/team449/robot/mechanism/intake/Intake2017/commands/updown/IntakeUp.java @@ -11,7 +11,7 @@ public class IntakeUp extends ReferencingCommand { /** * The intake subsystem to execute this command on */ - Intake2017 intake2017; + private Intake2017 intake2017; /** * Construct an IntakeDown command @@ -24,6 +24,11 @@ public IntakeUp(Intake2017 intake2017) { System.out.println("IntakeUp constructed"); } + @Override + protected void initialize(){ + System.out.println("IntakeUp init"); + } + /** * Set the piston to be in up position */ @@ -40,4 +45,9 @@ protected void execute() { protected boolean isFinished() { return true; } + + @Override + protected void end(){ + System.out.println("IntakeUp end"); + } } diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index 8ddc4d66..6ddbabd5 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -69,8 +69,8 @@ arcade_oi { button_index: 4 } switch_camera { - joystick_index: 1 - button_index: 1 + joystick_index: 3 + button_index: 9 } } drive { From f0316625b8fd94c9329f966560ba1b2c29f30941 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sun, 12 Mar 2017 07:25:28 -0400 Subject: [PATCH 61/66] Go back to old timing for auto. --- .../frc/team449/robot/drive/talonCluster/commands/PIDTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index 855fa32c..e180995b 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -21,7 +21,7 @@ public PIDTest(MappedSubsystem mappedSubsystem) { TalonClusterDrive driveSubsystem = (TalonClusterDrive) mappedSubsystem; //Drive forward for a bit - addSequential(new DriveAtSpeed(driveSubsystem, 0.5, 3)); + addSequential(new DriveAtSpeed(driveSubsystem, 0.75, 1.5)); //Stop addSequential(new DriveAtSpeed(driveSubsystem, 0, 10)); } From 7d1226e98af4d4e5d1109ab39da7bca6ed9a258a Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sun, 12 Mar 2017 08:25:02 -0400 Subject: [PATCH 62/66] Downshift when auto begins. --- src/main/java/org/usfirst/frc/team449/robot/Robot.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/usfirst/frc/team449/robot/Robot.java b/src/main/java/org/usfirst/frc/team449/robot/Robot.java index 6f1a1b2c..b72e31b6 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/Robot.java +++ b/src/main/java/org/usfirst/frc/team449/robot/Robot.java @@ -180,6 +180,9 @@ public void teleopPeriodic() { @Override public void autonomousInit() { //Set throttle to 0 for safety reasons + if (driveSubsystem.shifter != null) { + Scheduler.getInstance().add(new SwitchToLowGear(driveSubsystem)); + } driveSubsystem.leftMaster.canTalon.enable(); driveSubsystem.rightMaster.canTalon.enable(); driveSubsystem.setVBusThrottle(0, 0); From d0be2db9c5ec2a85645e93c4fe2f401a3b5dc929 Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Sun, 12 Mar 2017 10:16:58 -0400 Subject: [PATCH 63/66] Remove cameras. --- src/main/resources/fancy_map.cfg | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index 6ddbabd5..569811c2 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -375,24 +375,4 @@ intake { } pistonModuleNum: 15 } -camera { - server { - name: "Cameras" - port: 5800 - } - USB_camera { - name: "cam0" - dev: 0 - width: 160 - height: 90 - fps: 30 - } - USB_camera { - name: "cam1" - dev: 1 - width: 160 - height: 120 - fps: 30 - } -} module: 15 \ No newline at end of file From 404c1f1846e1badd322bbc1cd3663b4f4a347f2c Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 15 Mar 2017 16:41:17 -0400 Subject: [PATCH 64/66] Whitman final status commit --- .../drive/talonCluster/commands/PIDTest.java | 2 +- src/main/resources/fancy_map.cfg | 20 ------------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java index e180995b..07ceaea9 100644 --- a/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java +++ b/src/main/java/org/usfirst/frc/team449/robot/drive/talonCluster/commands/PIDTest.java @@ -21,7 +21,7 @@ public PIDTest(MappedSubsystem mappedSubsystem) { TalonClusterDrive driveSubsystem = (TalonClusterDrive) mappedSubsystem; //Drive forward for a bit - addSequential(new DriveAtSpeed(driveSubsystem, 0.75, 1.5)); + addSequential(new DriveAtSpeed(driveSubsystem, 0.5, 2.5)); //Stop addSequential(new DriveAtSpeed(driveSubsystem, 0, 10)); } diff --git a/src/main/resources/fancy_map.cfg b/src/main/resources/fancy_map.cfg index 6ddbabd5..569811c2 100644 --- a/src/main/resources/fancy_map.cfg +++ b/src/main/resources/fancy_map.cfg @@ -375,24 +375,4 @@ intake { } pistonModuleNum: 15 } -camera { - server { - name: "Cameras" - port: 5800 - } - USB_camera { - name: "cam0" - dev: 0 - width: 160 - height: 90 - fps: 30 - } - USB_camera { - name: "cam1" - dev: 1 - width: 160 - height: 120 - fps: 30 - } -} module: 15 \ No newline at end of file From 352131a2c1cfad0d1f7fa0862645962393b8073a Mon Sep 17 00:00:00 2001 From: Noah Gleason Date: Wed, 15 Mar 2017 17:43:43 -0400 Subject: [PATCH 65/66] Fix balbasaur map. --- src/main/resources/balbasaur_map.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/balbasaur_map.cfg b/src/main/resources/balbasaur_map.cfg index 428195af..7aaf20b1 100644 --- a/src/main/resources/balbasaur_map.cfg +++ b/src/main/resources/balbasaur_map.cfg @@ -1,7 +1,7 @@ arcade_oi { gamepad: 1 gamepad_left_axis: 0 - gamepad_right_axis: 3 + gamepad_right_axis: 5 deadband: 0.05 dpad_shift: 0.1 @@ -11,8 +11,8 @@ arcade_oi { invert_dpad: false override_navX { - ji: 1 - bi: 12 + joystick_index: 1 + button_index: 12 } } drive { From d17f5771643a061f5391aadd041b23126461e2d1 Mon Sep 17 00:00:00 2001 From: Ryan Tse Date: Wed, 15 Mar 2017 19:45:57 -0400 Subject: [PATCH 66/66] Remove merge HEAD tag from gradlew properties --- gradle/wrapper/gradle-wrapper.properties | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 14cadaa4..d18f2b8c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,8 +1,4 @@ -<<<<<<< HEAD #Tue Mar 07 16:17:41 EST 2017 -======= -#Sat Mar 04 12:31:48 EST 2017 ->>>>>>> origin/commenting distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME