From 419b562360a9f73c2ea24662c6f02785c36eea27 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Mon, 20 Dec 2021 16:18:42 +0100 Subject: [PATCH 1/7] ensembling data example added --- deployment/ensembler-data/predictions.csv | 6001 +++++++++++++++++++++ 1 file changed, 6001 insertions(+) create mode 100644 deployment/ensembler-data/predictions.csv diff --git a/deployment/ensembler-data/predictions.csv b/deployment/ensembler-data/predictions.csv new file mode 100644 index 00000000..4e0b5688 --- /dev/null +++ b/deployment/ensembler-data/predictions.csv @@ -0,0 +1,6001 @@ +,y,TIM-344pr,TIM-341pr,TIM-343pr,TIM-332pr,TIM-340pr,TIM-339pr,split +0,27.0,20.689848,31.175558000000002,21.464592,20.097897,32.04084,32.332745,not_test +1,28.0,23.966507,31.210262,25.624535,22.02192,34.07594,31.985964000000003,not_test +2,26.0,23.611586,31.493803000000003,23.976961,20.96846,28.688796999999997,31.373127,not_test +3,21.0,28.221515999999998,32.312614,26.014498,23.921623,24.304610999999998,31.069912,not_test +4,30.0,22.346352,33.75574,27.270322999999998,22.1455,29.607225,31.533245,not_test +5,40.0,33.95814,35.515859999999996,27.962393,24.369726,45.939213,32.71781,not_test +6,40.0,44.72502,32.355846,36.566604999999996,36.87853,28.926882,30.200409999999998,not_test +7,33.0,38.839554,34.51814,33.746464,35.591248,32.734146,32.535187,not_test +8,26.0,36.436347999999995,36.60331,31.600119,32.226856,29.135593,34.88085,not_test +9,29.0,32.67163,37.935745000000004,28.688579999999998,29.166615999999998,25.07909,36.53947,not_test +10,26.0,27.251678000000002,38.330696,23.897366,25.93157,28.93184,37.352615,not_test +11,18.0,23.124388,38.079643,21.87664,20.204795999999998,43.132782,37.61629,not_test +12,18.0,16.497616,65.6906,16.421768,14.506777,71.16847,67.866714,not_test +13,15.0,13.911608,62.046043000000004,15.533776999999999,13.532968499999999,64.78560999999999,63.636585,not_test +14,13.0,14.295152999999999,56.551680000000005,15.477236999999999,14.337698000000001,64.17228,56.962596999999995,not_test +15,12.0,16.541363,51.54371,16.000435,15.318366000000001,65.21928,50.662872,not_test +16,17.0,18.844913000000002,47.980422999999995,17.66349,17.176903,60.65501999999999,46.37723,not_test +17,17.0,21.062347,45.304325,19.787745,18.865288,46.81766,43.966805,not_test +18,21.0,19.537689999999998,45.34352,19.938545,19.413723,50.039584999999995,48.37062,not_test +19,17.0,21.921703,44.890812,23.099617000000002,20.805788,44.681427,46.005093,not_test +20,29.0,23.854414000000002,43.355076000000004,25.031822000000002,22.496773,44.871666,42.161537,not_test +21,26.0,24.06636,40.750877,26.432302000000004,25.483654,45.756972999999995,38.33543,not_test +22,26.0,25.330379999999998,37.713840000000005,26.844155999999998,27.16218,41.35159,35.795727,not_test +23,26.0,31.979996000000003,35.285713,28.478790000000004,27.310396,30.101294,34.949622999999995,not_test +24,21.0,23.392807,14.259554000000001,26.114342,23.788975,12.94561,14.808025,not_test +25,14.0,24.988647,16.286861,26.02658,22.487910999999997,16.785465,15.042689999999999,not_test +26,17.0,22.199692000000002,20.347514999999998,24.896751000000002,21.097866,17.078516,16.612965,not_test +27,19.0,23.29789,24.639754999999997,26.534883,21.335941000000002,17.685436,19.323275,not_test +28,18.0,19.410194,28.378190000000004,27.473240000000004,21.408058,23.929712,22.915216,not_test +29,22.0,29.040968,31.899379999999997,28.214785,22.018182999999997,37.440834,26.895811,not_test +30,20.0,24.194094,50.777008,24.777285,24.203506,48.830215,49.258713,not_test +31,26.0,29.351988000000002,56.227455000000006,27.418540000000004,25.191088,62.061583999999996,52.754208,not_test +32,31.0,27.596443,60.744693999999996,27.978226,24.550379,61.393612,56.636480000000006,not_test +33,30.0,28.264478999999998,62.70264399999999,27.714942999999998,23.951338,56.153427,59.463356000000005,not_test +34,28.0,23.680198999999998,62.061554,24.737007000000002,21.421210000000002,60.23483,60.25836999999999,not_test +35,31.0,22.13124,60.15056,23.029736,20.656454,79.68111,59.039832999999994,not_test +36,28.0,26.948256,64.56616,25.167451999999997,24.595470000000002,64.503105,66.561516,not_test +37,19.0,23.327461,60.465286,21.06835,19.948975,51.418713000000004,62.026802,not_test +38,18.0,17.094427,55.500023,19.172783,18.457499,50.102913,57.11336,not_test +39,15.0,18.767955999999998,51.820724,20.37416,18.805588,53.886326000000004,53.62548,not_test +40,16.0,21.024734,49.686820000000004,20.418736,20.025066,51.304207,51.47175,not_test +41,19.0,24.810382999999998,47.786640000000006,22.431670999999998,22.017204,36.445904,49.280132,not_test +42,21.0,21.819237,43.84732,22.397854000000002,22.057682,49.458183,46.572807,not_test +43,24.0,24.21803,41.543884000000006,27.381569,26.775637,40.888453999999996,46.013687,not_test +44,36.0,26.298977,37.533485,30.487423,31.506062,40.17901,42.163216,not_test +45,56.0,28.062315,33.096542,33.34178,34.808212,41.534027,36.44934,not_test +46,30.0,31.885687,29.874413,32.82855,35.78221,36.820778000000004,31.13985,not_test +47,19.0,40.41073,28.964134,33.718636,35.719902000000005,23.104605,28.019638,not_test +48,20.0,20.492643,48.907097,23.503270999999998,20.352577,52.154720000000005,50.863113,not_test +49,46.0,24.192348000000003,49.415424,26.979233,22.687124,57.75881,49.094658,not_test +50,43.0,24.224949,48.99823,25.781979,24.384304,49.962685,47.257217,not_test +51,58.0,29.581478000000004,48.983868,27.856976,26.606493,41.351684999999996,47.326443,not_test +52,39.0,23.86427,50.182629999999996,29.143316,26.371506,45.734745000000004,49.43547,not_test +53,29.0,36.33878,52.129093,30.04942,29.07388,66.30378,51.733177000000005,not_test +54,36.0,25.246735,19.59507,28.781615999999996,29.739334000000003,18.045391,19.310673,not_test +55,43.0,30.255159999999997,21.47549,28.11117,29.140982,22.126984,19.80987,not_test +56,33.0,26.624990000000004,24.798939999999998,27.201769,30.018599,22.500874,21.631369,not_test +57,35.0,26.613594,28.199863,25.706715,28.063345,22.779312,23.906489999999998,not_test +58,35.0,22.32561,31.096344000000002,22.52702,25.467709,28.222313,26.344662,not_test +59,28.0,21.053783,33.739204,21.073007999999998,20.618465,40.698704,29.165888,not_test +60,25.0,19.841072,26.08936,23.579144,20.616042999999998,23.182533,24.116782999999998,not_test +61,26.0,16.713739999999998,26.7716,19.802605,17.350925,26.309454,23.746124,not_test +62,25.0,15.525877,28.150032,18.723394,16.850494,23.021378,24.54218,not_test +63,19.0,17.555439,29.269040000000004,19.045656,17.466084,19.615713,26.092487,not_test +64,21.0,20.072483,29.661785,19.950644,19.146342999999998,23.942942000000002,27.593184,not_test +65,26.0,22.827436,29.628057000000002,21.941887,21.232048000000002,38.446945,28.366379,not_test +66,26.0,25.694298,67.13939,28.529377,26.981434000000004,71.16173,65.20472,not_test +67,24.5,26.700884000000002,65.44794,30.892952,30.426378000000003,62.907031999999994,61.85961999999999,not_test +68,23.0,28.1703,61.12063199999999,33.02333,33.371178,60.715805,56.048446999999996,not_test +69,22.0,29.55019,55.60252,35.871128000000006,35.123474,59.812874,50.75318,not_test +70,28.0,33.069393,49.551777,34.882717,36.378464,52.302240000000005,47.1704,not_test +71,36.0,42.798634,43.04254,35.382374,38.756023,34.808723,44.357655,not_test +72,48.0,39.131004,16.504070000000002,39.397377,34.874752,18.400925,16.90014,not_test +73,69.0,40.4761,16.352457,38.448966999999996,35.007220000000004,19.403107000000002,16.652292000000003,not_test +74,71.0,34.389973,17.058457999999998,37.584415,34.857997999999995,17.45663,16.911507,not_test +75,66.0,39.905506,17.993323999999998,37.473576,35.786654999999996,16.110867000000002,17.531588,not_test +76,52.0,29.722157,19.242835999999997,36.930485,35.926968,19.66309,18.583214,not_test +77,41.0,42.499714000000004,21.384613,37.104317,36.53688,29.267235,20.179054,not_test +78,27.0,41.674873,20.214785,38.36743,37.447327,19.284481,22.943676,not_test +79,28.0,37.862809999999996,22.973763,36.163765000000005,35.72345,21.953608,23.486307,not_test +80,20.0,34.74521,26.024214,33.89997,31.760673999999998,17.891838,24.97931,not_test +81,13.0,31.469786,28.231075,31.073092,28.767196999999996,14.581620999999998,27.191114000000002,not_test +82,10.0,26.177260999999998,29.26078,26.228683,25.07903,20.160683,29.289839,not_test +83,10.0,22.762112,29.566647999999997,24.224976,21.304314,36.17896,30.293327,not_test +84,10.0,10.203323,29.192080999999998,10.458264999999999,10.117194999999999,26.041935000000002,28.848335,not_test +85,11.0,7.993294000000001,27.630523999999998,11.210469999999999,10.85816,27.389826,28.232111,not_test +86,11.0,9.663849,27.785215,11.840635,11.037158999999999,23.387512,27.913958,not_test +87,11.0,12.541229,29.717491,12.563095,12.109232,18.628706,28.365644,not_test +88,20.0,15.76937,32.382509999999996,14.338320000000001,14.445998999999999,19.587997,29.630018,not_test +89,15.0,19.679722,34.346759999999996,16.407215,16.530918,29.176558,31.2168,not_test +90,17.0,13.936528,17.787926000000002,17.586748,20.16375,22.246138000000002,19.307760000000002,not_test +91,17.0,15.600141,17.301575,20.292622,28.301031,17.252277,18.833036,not_test +92,16.0,19.209362,16.341839,22.961903,38.011192,16.672203,18.806028,not_test +93,17.0,19.972622,15.016986,25.538044,42.507088,17.437996,18.621243,not_test +94,22.0,24.541124,14.239170999999999,26.516815,43.168125,15.720619000000001,18.000564999999998,not_test +95,23.0,35.694614,15.044891,28.821623,42.864574,10.448669,17.27795,not_test +96,32.0,17.842934,14.514702,22.366062,22.14188,13.683735999999998,14.656815,not_test +97,35.0,20.226688,14.076149,21.724161,20.871767000000002,15.42089,14.392546,not_test +98,33.0,17.338257000000002,14.704360999999999,19.037036999999998,21.259459,13.948841,14.992254999999998,not_test +99,40.0,17.569567000000003,16.05759,20.258098999999998,22.38624,12.716307,16.52975,not_test +100,45.0,16.535892,17.797413,21.406060999999998,21.951126000000002,15.956245999999998,18.540786999999998,not_test +101,31.0,23.706038,19.708254,21.813965,23.146984,24.8419,20.219229000000002,not_test +102,26.0,26.819843,22.247366,26.527084000000002,26.049511,20.754242,19.783157,not_test +103,23.0,31.447151,24.9009,26.801190999999996,25.736917000000002,25.625385,22.240337,not_test +104,17.0,26.865784,27.589945,26.148638000000002,24.446264000000003,23.930216,24.811743,not_test +105,13.0,26.336267,29.243351,24.714603,21.577484,21.652498,26.395984999999996,not_test +106,12.0,21.802073,29.597723,21.661001000000002,20.181542999999998,25.935303,26.82605,not_test +107,12.0,19.816599,29.203255,20.438404000000002,18.66975,38.625717,26.796577000000003,not_test +108,11.0,10.865128,20.870886,11.651926,10.860241,21.017220000000002,18.81235,not_test +109,10.0,8.921499,20.963432,12.306542,11.558314999999999,25.478786,19.220346,not_test +110,10.0,10.133051,21.250608,12.289698,11.556264,23.38232,19.978765,not_test +111,11.0,12.693531,21.40543,12.927405,12.438883,19.857927,20.649775,not_test +112,14.0,15.686404000000001,21.288254000000002,14.394368,14.314892,21.969465,20.965876,not_test +113,19.0,18.997314000000003,21.059769,16.232475,15.914651000000001,32.521214,20.984346,not_test +114,31.0,21.224463,36.220818,20.479403,21.836895000000002,37.569695,38.19145,not_test +115,30.0,21.662989000000003,35.82936,23.004473,25.285923,33.019127000000005,38.038016999999996,not_test +116,42.0,23.334679,33.92634,25.40801,32.38498,32.68616,35.270332,not_test +117,45.0,26.301819000000002,30.837884999999996,28.034153000000003,37.755790000000005,32.950140000000005,31.155171999999997,not_test +118,55.0,29.057290999999996,27.15938,27.961678000000003,38.911705,28.7891,27.424364,not_test +119,61.0,38.933346,23.650642,29.13519,38.823612,18.516724,25.244051000000002,not_test +120,84.0,46.345325,16.769121,57.55653,47.839797999999995,15.426070000000001,15.957560999999998,not_test +121,71.0,45.958588,16.708519,50.48364,42.66854,16.694378,15.656533999999999,not_test +122,68.0,37.789303000000004,17.266479999999998,45.35259,39.281803000000004,15.727437,15.911095000000001,not_test +123,65.0,36.17419,18.246648999999998,41.580265000000004,37.520096,14.804654000000001,17.056007,not_test +124,41.0,20.78077,19.80511,38.29399,35.170933000000005,17.277294,19.267204,not_test +125,34.0,29.917759000000004,22.161635999999998,36.29461,33.521522999999995,24.52704,22.222754000000002,not_test +126,36.0,34.102783,20.633395999999998,34.04803,32.070885,15.984860999999999,19.97348,not_test +127,32.0,34.92893,23.130363,31.108494,30.224636,20.82873,22.52915,not_test +128,26.0,31.95528,25.925213,29.520597,27.386032,20.985687,25.212902,not_test +129,24.0,29.693365000000004,27.876796999999996,27.550504999999998,24.817239999999998,20.562618,27.018852000000003,not_test +130,24.0,24.908646,28.530720000000002,23.65844,21.667147,25.05772,27.542374,not_test +131,25.0,21.360174,28.26288,21.902804999999997,18.361735999999997,36.195786,27.098345000000002,not_test +132,27.0,22.487648,26.41338,21.258823,18.578167,25.990105,25.328392,not_test +133,16.0,20.755907,27.066175,17.101238000000002,15.082664000000001,27.54673,25.7568,not_test +134,14.0,15.821653,28.410272999999997,15.931299,14.457831,24.277658,26.394684,not_test +135,16.0,16.885628,29.800755,16.334432999999997,14.950378,21.503951999999998,27.0874,not_test +136,16.0,19.077415,30.495213,17.208164,16.476295,24.957876000000002,27.527511999999998,not_test +137,19.0,22.079456,30.161096999999998,19.125364,18.709389,35.75116,27.445696,not_test +138,22.0,18.498562,24.446396,18.761742,19.867165,26.971727,23.860014000000003,not_test +139,26.0,20.482622,24.470488,21.628035,21.704727,23.723312,24.548105,not_test +140,34.0,22.165613,23.808228,23.177841,24.247927,24.754538,24.190727,not_test +141,31.0,22.576223000000002,22.479647,24.356441,27.061891999999997,26.627079,22.282345,not_test +142,31.0,23.676157,20.873832999999998,24.57714,29.114047999999997,24.786615,19.39619,not_test +143,28.0,29.665869,19.573164000000002,26.035883,31.505005,17.609568,16.918722,not_test +144,21.0,24.927885,28.636927000000004,26.813022999999998,23.521172,29.193838,30.136408000000003,not_test +145,20.0,26.818628000000004,27.224844,27.524890000000003,25.178715,30.319687,28.577839,not_test +146,21.0,29.005753000000002,26.101032,27.827579999999998,27.812452,28.116745,27.246525,not_test +147,26.0,34.681976,25.877333,30.049255,29.906359000000002,25.037739000000002,27.182938,not_test +148,27.0,33.26616,26.33035,30.819491999999997,31.037891,24.331660999999997,28.061072999999997,not_test +149,29.0,42.46695,26.652502000000002,31.69834,31.873924,27.41495,28.501293,not_test +150,36.0,29.880330999999998,21.072014000000003,27.152544,28.898064,21.033620000000003,20.436752,not_test +151,58.0,34.876129999999996,23.112635,27.476404,29.351578000000003,23.307326999999997,21.380905,not_test +152,40.0,34.278729999999996,25.259687,27.232576,28.306026,23.219662,22.279861,not_test +153,40.0,30.831523999999998,26.638873999999998,26.25286,26.355858,22.879526000000002,22.455664000000002,not_test +154,42.0,25.417353,27.011246000000003,23.151722,24.14299,24.953352,21.992487,not_test +155,31.0,21.510967,26.796784999999996,21.585472,20.66389,30.180215999999998,21.632505,not_test +156,22.0,25.459415,17.488948999999998,23.891227999999998,22.76666,17.708393,16.611626,not_test +157,21.0,21.798409,17.093006,18.723095,16.646435,19.866476000000002,16.093353,not_test +158,24.0,15.220622,17.293326999999998,16.894407,15.049517000000002,18.63774,16.156143,not_test +159,31.0,17.089968,17.820420000000002,17.00978,16.08672,17.00753,16.805595,not_test +160,37.0,19.087585,18.525106,17.855982,17.444167999999998,19.208363000000002,17.868565,not_test +161,42.0,22.932222,19.449104000000002,19.748825,19.775148,26.944141,19.057882,not_test +162,39.0,43.23992,29.361652000000003,39.511963,41.788925,28.96947,28.481087,not_test +163,24.0,40.030693,29.553993,40.589027,43.366440000000004,33.392494,29.477928000000002,not_test +164,16.0,37.533615000000005,28.97455,39.68505,43.505817,33.6185,29.905134000000004,not_test +165,22.0,38.2243,27.742002000000003,41.09218,44.424232,30.594047999999997,29.192827,not_test +166,30.0,28.135422,26.533226000000003,38.700195,44.26859,28.027459999999998,27.669575,not_test +167,29.0,33.829370000000004,26.136398,38.475165999999994,44.377167,29.319368,26.367857,not_test +168,37.0,28.061558,23.554775,29.370602,26.070035999999998,23.178112,25.063776,not_test +169,25.0,28.22002,21.149411999999998,26.033457000000002,23.207556,21.561714000000002,21.338234,not_test +170,18.0,24.975006,18.715529999999998,24.109861,19.96191,17.023592,17.573013,not_test +171,18.0,21.437452,17.144814,25.717924,21.348598000000003,12.369794,15.499519,not_test +172,16.0,18.153214000000002,17.40239,26.387884000000003,19.881035,11.412836,16.038982,not_test +173,16.0,25.711582,19.844467,26.913393,21.766079,16.042517,18.735884,not_test +174,19.0,17.459301,27.644478000000003,19.773770000000003,18.869987,25.591601999999998,27.877958000000003,not_test +175,17.0,20.813114000000002,31.430020000000003,22.249853,20.269754000000002,30.539639,30.328993,not_test +176,19.0,18.646587,35.18258,22.64796,21.234245,29.057029999999997,33.35414,not_test +177,26.0,18.407587,37.26558,22.172626,18.221756,27.786815999999998,35.619396,not_test +178,24.0,16.431473,37.335495,19.740714999999998,16.32695,34.195652,36.235325,not_test +179,23.0,16.145138,36.364540000000005,18.324863,15.517825,49.665836,35.27134,not_test +180,24.0,24.912788,49.71128,21.430020000000003,19.951809,51.340709999999994,51.03848,not_test +181,26.0,25.458115,49.753322999999995,19.177448000000002,18.963272,58.100086,52.774616,not_test +182,26.0,18.686004999999998,48.006645,17.760262,18.688945999999998,62.4224,52.048404999999995,not_test +183,22.0,22.224954999999998,45.585533,18.632070000000002,19.008255,60.319042,49.895195,not_test +184,26.0,21.389310000000002,43.236137,18.804512,20.27392,51.20828,47.407578,not_test +185,25.0,23.801168,40.99831,20.614033,22.563879999999997,38.79262,45.028095,not_test +186,25.0,27.12868,28.997505,27.4948,27.35008,31.62753,30.382223,not_test +187,33.0,26.218233,30.014770000000002,30.282166999999998,30.208853,41.446670000000005,31.688713,not_test +188,30.0,26.85105,31.311333,32.519077,31.593884000000003,40.092407,32.54211,not_test +189,30.0,29.230871,31.654953000000003,35.410965000000004,32.192772,31.025537,31.832216,not_test +190,33.0,31.926434999999998,30.830332000000002,34.276714,32.312897,24.274002,29.719397999999998,not_test +191,42.0,37.226757,29.8038,34.744682,32.25959,28.243492,27.594054999999997,not_test +192,28.0,45.571846,13.940428,40.175346000000005,40.189335,10.521038,10.894346,not_test +193,25.0,41.245779999999996,14.254210999999998,36.81692,38.615875,13.421130999999999,12.213898,not_test +194,30.0,37.07991,15.101522000000001,34.194794,35.438179999999996,11.868044,13.782738,not_test +195,33.0,36.929462,15.702122,33.332096,35.232788,9.298311,14.270302,not_test +196,28.0,24.652110999999998,16.17594,32.738483,34.437603,11.377689,13.670185,not_test +197,28.0,31.595546999999996,17.325241000000002,32.738647,34.380024,20.992647,13.215239000000002,not_test +198,27.0,28.109802000000002,18.031895000000002,28.33328,29.243585999999997,17.98423,18.452534,not_test +199,20.0,31.700073,17.685772,29.307507,29.548914,20.572702,18.2229,not_test +200,19.0,28.728742999999998,18.716070000000002,29.561953999999997,29.408506,19.58971,18.391018,not_test +201,19.0,28.384034999999997,21.002579,28.828968,27.597443,18.495003,19.395744,not_test +202,19.0,24.152328,24.392985999999997,26.011477,25.757908,22.280043,21.890656,not_test +203,23.0,21.93281,28.518210999999997,24.861837,23.178632999999998,32.895565000000005,25.969423000000003,not_test +204,25.0,24.501911,35.518246000000005,20.583412,22.002674,37.492832,37.28802,not_test +205,22.0,24.148838,36.651157,19.134554,21.859547,30.15748,38.419579999999996,not_test +206,17.0,18.931898,36.627720000000004,18.044254000000002,21.985951999999997,30.500725,38.69474,not_test +207,16.0,23.255955,35.321224,18.767585999999998,22.394333,34.37324,37.743187,not_test +208,22.0,21.861895,33.120445000000004,19.089638,23.637459,34.40426,35.774418,not_test +209,24.0,24.091611999999998,30.760196999999998,20.906738,26.588,26.432013,33.525005,not_test +210,24.0,22.143528,24.39488,24.219929,24.47788,24.230473,21.61445,not_test +211,35.0,22.4716,22.404049,27.893145,27.402336,25.944976999999998,19.8194,not_test +212,43.0,23.701456,20.794907000000002,30.598910999999998,30.13099,22.541245,18.03997,not_test +213,28.0,24.31492,19.882769,33.765556,31.93275,17.556938,17.147617,not_test +214,26.0,25.891964,19.711597,33.043667,32.463856,16.296822,17.426641,not_test +215,30.0,34.3397,20.151705,33.753487,32.447834,21.530909,18.425701,not_test +216,43.0,33.427704,12.007458999999999,31.299528000000002,29.788690000000003,9.219456,11.3854885,not_test +217,50.0,33.199432,13.69135,30.00018,27.882478999999996,12.476686500000001,12.648524,not_test +218,28.0,28.6892,16.304385999999997,29.292054999999998,27.150326,11.534463,14.014645999999999,not_test +219,30.0,31.133383000000002,18.6096,30.220243,26.339134,10.475121000000001,14.848348999999999,not_test +220,34.0,22.349335,20.013361,30.545889000000003,25.633305,14.933991,15.355054,not_test +221,29.0,32.21629,20.781183,31.053856,26.455006,26.89443,16.250320000000002,not_test +222,33.0,25.044952,33.94619,26.916208,27.225254,34.654309999999995,34.282402000000005,not_test +223,37.0,29.346190999999997,34.94664,28.210071999999997,27.265420000000002,39.376343,34.920563,not_test +224,27.0,26.641684,35.111999999999995,28.250922999999997,26.943819,32.54087,34.270790000000005,not_test +225,19.0,26.656033,34.921184999999994,27.472341999999998,25.421162,24.109398000000002,32.96628,not_test +226,20.0,22.250553,34.591507,24.652813000000002,23.162174,25.79256,31.639946000000002,not_test +227,18.0,20.610378,33.912693,23.206335,19.985085,41.180428000000006,30.51959,not_test +228,16.0,18.368902,72.88759,17.68702,16.202023,82.85979499999999,76.42238,not_test +229,15.0,16.75253,67.932144,16.221878,15.5945425,72.58646,70.11318,not_test +230,14.0,15.041974,59.60433199999999,15.924257999999998,15.553158999999999,68.69325,60.42735699999999,not_test +231,14.0,17.354958,51.61428,16.580025,16.026001,67.42857,52.56414,not_test +232,12.0,19.92395,45.625183,17.775928,17.49346,60.243187,48.647971999999996,not_test +233,17.0,22.1977,40.889164,19.732307000000002,19.048470000000002,42.126526,46.907524,not_test +234,24.0,22.732796,35.608191999999995,20.54372,20.713379,39.56665,36.961575,not_test +235,21.0,22.261896,34.27174,23.963976000000002,23.756216000000002,33.219640000000005,36.086952000000004,not_test +236,23.0,23.339039,32.17774,26.811671999999998,27.441359000000002,33.2518,34.41342,not_test +237,24.0,25.255182,29.529375,29.446490999999998,30.608763,34.961525,32.30743,not_test +238,36.0,27.095428000000002,26.939676000000002,29.421870000000002,32.663475,31.818184000000002,30.081244,not_test +239,21.0,39.162743,25.245457000000002,28.278135,35.096725,21.418564,28.010406,not_test +240,28.0,15.936618,26.997324,21.884102,19.009135999999998,26.166676000000002,28.408043,not_test +241,28.0,18.855339999999998,27.887676000000003,21.635296,19.108639,30.131428000000003,26.565286999999998,not_test +242,31.0,15.976166000000001,28.785727,20.115465,16.951838000000002,27.196347999999997,24.8077,not_test +243,28.0,17.256270999999998,30.144098,21.701021,17.88544,23.697198999999998,24.575615,not_test +244,32.0,15.583286,32.482254,25.653093,17.64442,27.439138,26.449488,not_test +245,44.0,23.635223,35.697823,29.11085,17.93732,40.804390000000005,29.636673,not_test +246,36.0,41.938759999999995,25.856645999999998,35.040375,41.06951,22.91545,25.543087,not_test +247,27.0,36.509346,29.151870000000002,29.636395,36.060513,27.064867,27.502665000000004,not_test +248,16.0,33.54125,33.566944,24.977936,28.856869,26.006496,30.094393,not_test +249,14.0,29.038696,37.18049,22.3254,22.489258,24.580437,32.260906,not_test +250,11.0,22.868593,39.13606,19.299965,19.474457,29.509829999999997,33.884075,not_test +251,10.0,19.234467000000002,39.94489,17.703037,17.882133,43.236282,35.59005,not_test +252,9.0,9.217711999999999,24.72906,9.887314,10.041039999999999,21.793411,21.947113,not_test +253,9.0,6.956127,25.602816,10.330637,10.730328,26.416399,22.126398000000002,not_test +254,10.0,7.743118300000001,26.993541999999998,11.234898,10.850786,22.026728,23.165748999999998,not_test +255,9.0,11.571231,27.979740000000003,11.249689,11.841305,18.482826,24.578173,not_test +256,10.0,14.518638000000001,28.113575,12.992503,13.942305,26.569706,25.632414,not_test +257,13.0,17.97625,27.697065000000002,14.181632,15.867553,48.26832,25.824627,not_test +258,20.0,18.345034,35.90927,16.937302,18.506128,38.04101,36.814716,not_test +259,24.0,20.953878,36.836467999999996,24.680252,26.475258,37.064293,37.10451,not_test +260,23.0,22.914807999999997,36.22501,31.219279999999998,34.975937,41.12526,35.595448,not_test +261,30.0,25.977726,33.6154,36.686572999999996,39.154140000000005,43.913624,32.370575,not_test +262,34.0,34.175713,29.59236,36.53703,39.88791,39.095496999999995,28.187728999999997,not_test +263,39.0,50.190575,25.617043,37.44981,39.65954,25.916320000000002,24.225616,not_test +264,48.0,36.025467,17.388172,42.638565,39.685596000000004,18.37021,19.304385999999997,not_test +265,54.0,45.132652,17.236898,40.927937,42.751053000000006,20.043395999999998,20.050224,not_test +266,63.0,42.597237,17.934092,37.64356,42.48423,19.368122,21.764616,not_test +267,61.0,45.047059999999995,19.038984,37.340046,42.86268,18.789177,24.006516,not_test +268,44.0,33.843815,20.582584,35.81012,40.837173,21.783,26.197868,not_test +269,43.0,38.831856,22.87667,35.056477,38.486115000000005,29.632609999999996,27.830887,not_test +270,35.0,41.313557,39.014313,37.452927,42.906403000000005,36.799126,37.808014,not_test +271,32.0,37.640625,39.723503,33.807346,41.78358,41.723076,37.68509,not_test +272,25.0,41.882294,39.818236999999996,28.004227,38.999207,39.890095,37.087959999999995,not_test +273,20.0,37.395958,39.792759999999994,25.19996,35.946884000000004,33.65445,36.52297,not_test +274,19.0,30.438570000000002,40.006157,21.50528,31.836521,28.807365,36.197094,not_test +275,20.0,23.915337,40.356,19.84996,27.982121999999997,30.009026000000002,35.910988,not_test +276,25.0,19.427383,37.173790000000004,17.365910999999997,16.520235,34.834557000000004,36.11249,not_test +277,14.0,17.743965,36.578648,16.461279,16.096666,36.457755999999996,35.62168,not_test +278,11.0,15.055051999999998,36.18521,16.2985,15.945822,30.265534999999996,34.7475,not_test +279,11.0,17.312014,36.464672,17.030693,16.282657999999998,23.552742000000002,34.26157,not_test +280,11.0,19.091162,37.094184999999996,17.314604,17.589976999999998,24.859432,34.472237,not_test +281,11.0,21.715876,37.231964000000005,18.463518,19.331188,36.858982,35.01242,not_test +282,16.0,13.988523,21.744926,15.17896,16.300562,23.90811,19.9241,not_test +283,18.0,16.31786,21.749117000000002,18.12122,17.127659,21.027462,19.909534,not_test +284,27.0,18.124794,21.3649,20.6003,19.040333,21.113267999999998,19.375341,not_test +285,29.0,18.21434,20.401472000000002,21.780527,21.512459,21.314257,17.864666,not_test +286,33.0,21.441404000000002,19.387601999999998,22.023827,23.355235999999998,18.7234,15.871186999999999,not_test +287,38.0,21.074839,19.204411999999998,24.244493,23.841429,13.101543,14.583459,not_test +288,42.0,32.99449,27.201557,39.177040000000005,36.422990000000006,23.235101999999998,23.591778,not_test +289,46.0,36.1709,29.263252,38.803123,38.657546999999994,25.730463,24.344251999999997,not_test +290,46.0,35.672173,31.431856,36.7035,40.817383,25.08041,25.455194,not_test +291,54.0,39.863037,32.434532,37.029705,41.52803,23.593979,26.313274,not_test +292,77.0,30.61288,31.636965000000004,36.133117999999996,39.94303,24.821865,26.360214000000003,not_test +293,72.0,39.697895,29.498620000000003,35.87594,38.109116,30.40198,25.483826,not_test +294,65.0,67.38463,22.657331,62.062454,57.234019999999994,22.655603,23.898495,not_test +295,64.0,59.89691,22.50671,54.71054,54.944109999999995,24.928798999999998,24.200344,not_test +296,53.0,55.407913,23.157804000000002,48.2128,52.22287,22.380470000000003,24.928375,not_test +297,39.0,48.52087,24.375698,38.37267,45.07843,19.939674,25.788984,not_test +298,29.0,36.57633,25.62657,27.830452,39.383827000000004,23.106170000000002,26.373820000000002,not_test +299,22.0,28.211634000000004,26.400315999999997,22.160084,34.803894,33.081474,26.414658000000003,not_test +300,16.0,17.637516,23.085086999999998,18.167842999999998,16.68531,22.808681,23.458323999999998,not_test +301,15.0,14.657224,21.958319,16.298302,15.300928,24.091726,22.31352,not_test +302,15.0,13.667284,21.227982,16.057014000000002,15.127363,19.627589999999998,21.332047,not_test +303,20.0,16.231632,21.150047,16.436682,15.743232,13.965348,20.95155,not_test +304,20.0,18.135448,21.797625,17.143913,17.24651,13.647012,21.288223000000002,not_test +305,22.0,20.795353,23.003975,18.377232,19.109484,21.832386,22.07619,not_test +306,29.0,21.581432,26.117409,21.821747,23.634275,26.645715999999997,26.504303000000004,not_test +307,24.0,22.636757,26.420006,24.731962,26.583939,28.137482000000002,25.961060999999997,not_test +308,25.0,23.967785,26.539866999999997,27.558996,29.264175,25.557178,25.465498,not_test +309,26.0,25.016379999999998,26.471483000000003,30.903025,31.018244,22.47005,25.206272,not_test +310,27.0,27.598803000000004,26.545391,31.353023999999998,31.825819,23.374886,25.272705,not_test +311,26.0,32.794266,27.128193,32.869724,33.165659999999995,29.890999,25.61134,not_test +312,27.0,22.427671,26.135937,29.262163,25.086617,25.586695000000002,25.11412,not_test +313,27.0,24.932547,26.148804000000002,30.510363,29.296644,27.197834000000004,24.678379999999997,not_test +314,38.0,28.749035,26.074728,30.637048999999998,31.991584999999997,24.89997,24.134516,not_test +315,26.0,35.263940000000005,26.107405,33.437897,33.638145,22.008263,23.791636999999998,not_test +316,25.0,33.141999999999996,26.385446999999996,34.015556,33.97399,22.712318,23.855751,not_test +317,26.0,40.328334999999996,26.85708,34.63283,34.030052000000005,28.523869,24.28698,not_test +318,29.0,25.601093,25.568604,27.605622999999998,27.909985,25.738889999999998,24.637527,not_test +319,30.0,31.306257000000002,26.42118,28.777217999999998,29.143358000000003,28.1689,25.350645,not_test +320,25.0,28.969025,27.414375,28.276102,29.550265999999997,29.029391999999998,26.15475,not_test +321,24.0,28.946587,28.118446000000002,27.828566,28.221991999999997,27.481627000000003,26.771122,not_test +322,23.0,24.516233,28.321095,24.755948999999998,26.683135999999998,24.608744,27.036325,not_test +323,21.0,22.141794,28.130468,23.60609,24.091507,22.616394,26.967712,not_test +324,17.0,18.795017,40.760467999999996,18.214806,17.684746,44.16588,40.86295,not_test +325,16.0,16.818281,39.35286,16.437069,16.797022,43.615790000000004,38.609592,not_test +326,17.0,14.8213825,36.483013,16.175652,16.46521,44.557686,35.338173,not_test +327,19.0,17.194572,33.347134000000004,16.609987,16.948418,44.13864,32.34575,not_test +328,18.0,19.320816,30.747104999999998,17.252067999999998,18.263748,39.348459999999996,30.207544,not_test +329,21.0,21.819489,28.800562,18.437275,19.946154,29.949623,28.678665000000002,not_test +330,23.0,21.647482,30.46593,20.657106,21.994421,30.242734999999996,31.051040000000004,not_test +331,25.0,21.790668,29.766116999999998,23.401545000000002,22.997473,30.252315999999997,29.910629999999998,not_test +332,27.0,22.865710999999997,28.597278999999997,26.009459,25.17766,31.783651000000003,28.026714000000002,not_test +333,33.0,23.623455,27.39671,28.878769000000002,27.499015999999997,32.33791,26.246923,not_test +334,40.0,25.47922,26.543705,29.471353999999998,28.244590000000002,29.859684,25.240427,not_test +335,36.0,31.441504,26.179057999999998,31.160181,28.111040000000003,24.612368,25.12455,not_test +336,26.0,33.468857,16.56982,35.788525,37.10432,16.776985,16.920382,not_test +337,23.0,31.250142999999998,17.43199,34.70763,37.795807,18.334469,16.682620999999997,not_test +338,24.0,26.199596,18.9605,33.259506,39.010259999999995,17.4206,16.798357,not_test +339,18.0,23.886757,20.47556,34.35328,39.69639,16.485802,17.174932000000002,not_test +340,20.0,18.888931,21.764685,34.195583,38.56395,18.857111,17.885227,not_test +341,20.0,27.913021,23.05891,34.515263,37.291396999999996,25.715007999999997,19.036438,not_test +342,35.0,21.840882999999998,29.693222,23.713547,23.97234,29.068859999999997,28.868803000000003,not_test +343,34.0,27.303226000000002,31.03862,25.462738,26.77427,34.964794,29.962002000000002,not_test +344,29.0,26.291775,32.14884,25.029529999999998,27.135445,32.607864,31.014397,not_test +345,19.0,26.86419,32.762108000000005,24.44875,25.751328,27.736355,31.748379999999997,not_test +346,24.0,22.959223,32.842323,22.162907,24.566110000000002,28.662964000000002,32.001265999999994,not_test +347,26.0,21.223595,32.530865000000006,20.835293,22.673397,39.1031,31.773166999999997,not_test +348,22.0,21.255213,28.912188,21.283222,20.570023000000003,29.485203000000002,29.705715,not_test +349,17.0,19.403439000000002,28.031848999999998,17.98682,17.820263,28.235382,29.096914,not_test +350,12.0,15.785373000000002,27.11577,16.837654,16.749979999999997,30.123471999999996,28.319984,not_test +351,16.0,17.651688,26.591022,17.54992,17.143477999999998,31.93298,27.713383,not_test +352,20.0,19.076254000000002,26.473957000000002,17.555683,18.364114999999998,30.153969,27.311840000000004,not_test +353,21.0,21.604448,26.437733,18.741741,20.263695000000002,24.051282999999998,26.902009999999997,not_test +354,22.0,20.531425,30.769709000000002,19.60727,21.811474,32.76316,34.48315,not_test +355,20.0,21.725533,29.807655,22.286913000000002,23.14016,28.307090000000002,33.28094,not_test +356,25.0,23.098357999999998,27.682701,24.698704,25.25171,27.568540000000002,29.37293,not_test +357,26.0,23.857398999999997,25.002792000000003,27.791988,27.312561,27.887622999999998,24.390772,not_test +358,31.0,26.612383,22.577944,29.204,27.886187,25.299913,20.508394,not_test +359,25.0,32.56997,21.04993,31.967471999999997,27.767017,18.260069,19.112568,not_test +360,26.0,23.123976000000003,9.61978,24.760231,23.923826000000002,10.018421,9.489135000000001,not_test +361,30.0,24.21215,10.695333,25.709896,26.022876999999998,11.680297999999999,10.093651,not_test +362,25.0,27.100047999999997,12.972878999999999,26.153625,28.067954999999998,11.623911,11.652887,not_test +363,26.0,30.040174,15.363325,29.876520000000003,28.295446000000002,12.193736999999999,13.693006500000001,not_test +364,27.0,26.792202000000003,17.346977,31.725132000000002,28.474693,16.168259,15.869659,not_test +365,39.0,36.783813,19.110083,33.143307,29.736282,24.033348,17.98559,not_test +366,66.0,41.235188,24.809793,38.26525,40.388465999999994,23.699203,22.209757,not_test +367,64.0,43.646706,27.323555,37.56984,40.861244,27.051440999999997,24.408932,not_test +368,68.0,41.30748,28.972363,36.99519,38.805496000000005,23.9118,26.282806,not_test +369,52.0,36.2127,29.248417,33.777157,36.402462,20.202032,27.35505,not_test +370,43.0,29.302752,28.340421999999997,27.089540000000003,33.372543,22.715733,27.467312,not_test +371,28.0,22.91754,26.915564,24.273417000000002,29.423486999999998,33.21021,26.76703,not_test +372,16.0,21.186718,42.871520000000004,20.888317,18.995646,43.937782,44.071407,not_test +373,12.0,18.927113000000002,39.665405,18.154958999999998,17.098292999999998,37.777266999999995,40.9293,not_test +374,11.0,15.04621,35.41188,16.905594,16.648323,36.368824,36.933277000000004,not_test +375,13.0,17.133732000000002,32.028557,17.808773000000002,17.191341,37.215446,33.755363,not_test +376,15.0,18.858297,30.055011999999998,17.66072,18.666843,35.16008,31.7588,not_test +377,19.0,21.992416,28.65725,18.918032,20.880379,27.171515000000003,30.135338,not_test +378,23.0,21.215374,31.180735,19.565773,20.904522,33.46897,33.32498,not_test +379,28.0,22.987667000000002,29.92864,23.518532,23.947596,30.006409,32.812973,not_test +380,28.0,24.44102,28.184336,27.053553000000004,27.5921,30.712574,31.127596,not_test +381,34.0,25.286839999999998,26.2081,30.952505,30.929956,31.729557,28.534214000000002,not_test +382,45.0,29.176245,24.302395,31.680054,33.65033,28.487087,25.565815,not_test +383,26.0,38.435116,22.820839000000003,33.503906,36.648711999999996,19.901554,22.90212,not_test +384,27.0,23.964579,25.223536,24.699099,24.958466,24.675076999999998,28.301703999999997,not_test +385,32.0,26.090647,25.975567,24.859548999999998,27.614744,28.524846999999998,27.313461,not_test +386,25.0,26.421454999999998,26.432196,24.5549,30.452675,24.913282000000002,26.144543,not_test +387,32.0,30.121067,26.646662,27.686707000000002,30.768891999999997,19.497882999999998,25.607828,not_test +388,40.0,23.353048,27.08747,30.635203999999998,31.005777000000002,20.159326999999998,26.046267999999998,not_test +389,46.0,34.315994,28.1654,32.8822,32.468838,30.316784000000002,27.087025,not_test +390,37.0,47.081146000000004,20.522217,41.93176,46.503853,19.181007,19.02044,not_test +391,41.0,42.995926000000004,23.5566,40.610996,45.10719,22.335926,20.5538,not_test +392,40.0,48.570479999999996,27.084774,38.455999999999996,42.193335999999995,21.205906,22.94446,not_test +393,39.0,42.38066,29.685323999999998,34.478813,39.30339,19.885199,25.368706,not_test +394,37.0,32.42823,30.946394,27.352242999999998,36.13425,23.715042,27.305359999999997,not_test +395,32.0,25.795285999999997,31.486944,24.773214000000003,31.379416,34.411568,28.676188,not_test +396,20.0,23.817453,42.35302,26.036737,24.225136,41.665188,41.090855,not_test +397,14.0,22.150485999999997,42.04251,19.443401,19.214615,38.263824,40.537094,not_test +398,12.0,16.180962,41.19507,17.372948,17.385439,41.034378000000004,39.8984,not_test +399,12.0,18.790632000000002,40.104485,16.999699,17.898602,45.4348,39.416367,not_test +400,14.0,19.934147,38.685898,17.722687,19.113789999999998,44.837315000000004,38.654488,not_test +401,27.0,23.786997,36.735085,19.22322,21.366093,36.1882,36.994293,not_test +402,26.0,25.805637,54.763831999999994,24.281404000000002,25.003534,57.70305,58.79885,not_test +403,31.0,25.687578,52.248333,27.127909999999996,25.538376,48.496536,56.536255000000004,not_test +404,32.0,26.493675,47.063614,30.989523,27.053835,44.94831,49.480305,not_test +405,35.0,27.967278000000004,40.385246,37.042698,28.199503000000004,43.664307,40.520493,not_test +406,39.0,33.835570000000004,33.433434000000005,37.615845,28.508867,38.120870000000004,32.968887,not_test +407,43.0,46.5167,27.317028000000004,39.269012,28.679743,25.066387,28.744152000000003,not_test +408,36.0,38.249245,16.40711,40.010616,39.172325,16.310766,16.545128,not_test +409,52.0,34.91981,17.341795,37.25827,38.83793,17.328516,16.548967,not_test +410,33.0,26.406017,19.108366,34.854958,38.8136,15.45845,17.570636999999998,not_test +411,28.0,22.592764000000003,20.507717,35.722157,39.28553,14.184687,19.314188,not_test +412,29.0,17.522102,21.620064000000003,35.444176,37.976555,18.067242,21.514845,not_test +413,29.0,26.431507,23.522228,35.9358,36.857566999999996,28.596159999999998,23.919231,not_test +414,38.0,27.3255,34.57346,29.260368,29.951621999999997,31.541453999999998,33.16036,not_test +415,47.0,32.680603000000005,38.291340000000005,29.949565999999997,30.305433,39.76488,37.313697999999995,not_test +416,45.0,29.680277,42.486134,29.515484000000004,29.639952,38.276443,42.788140000000006,not_test +417,50.0,29.300444,46.308205,28.638448999999998,28.123451,36.40645,48.187529999999995,not_test +418,50.0,24.496967,49.20062,25.188086,26.608932,44.930820000000004,51.766426,not_test +419,43.0,22.005714,50.878483,23.576012,23.610504000000002,66.11334000000001,52.287804,not_test +420,44.0,30.538084,30.660088000000002,31.343165999999997,28.554000000000002,25.073738,28.64609,not_test +421,39.0,24.408857,33.372395000000004,22.74021,20.625984,30.62923,29.370506,not_test +422,27.0,17.215195,36.858665,18.888771,17.985123,29.542564000000002,30.577908,not_test +423,22.0,20.735336,39.17705,17.957363,19.066307000000002,27.142965000000004,31.5726,not_test +424,20.0,20.682049,39.450485,18.990767,20.620929999999998,31.314579,32.214115,not_test +425,23.0,25.298496,38.374878,21.03899,23.46819,45.36843,32.91915,not_test +426,24.0,23.2149,30.858765000000002,21.592299,23.905468,30.767994,29.553055,not_test +427,28.0,24.172962,29.938139000000003,24.109755,26.156433,29.457485,28.366315999999998,not_test +428,33.0,25.462671,28.426243,26.578445000000002,28.631097999999998,35.53102,27.575974,not_test +429,36.0,26.615282,26.633081,29.449285999999997,30.590453999999998,41.244686,27.139051000000002,not_test +430,38.0,30.679806,24.921108,30.494115999999998,31.509490999999997,38.326363,26.507103000000004,not_test +431,42.0,39.71526,23.621181,33.030525,32.83791,24.983902,25.19765,not_test +432,52.0,40.797295,17.109695000000002,39.199135,39.092876000000004,16.946716000000002,17.014984,not_test +433,60.0,47.05705,17.643997,36.59496,39.721745,19.425217,17.277279,not_test +434,61.0,44.117737,19.805733,34.6494,40.532959999999996,19.518463,17.942163,not_test +435,58.0,45.564034,22.467564000000003,36.08798,41.25554,19.458986,18.795687,not_test +436,54.0,36.948067,24.707863,36.293296999999995,39.969437,22.652382,19.888214,not_test +437,42.0,42.90532,26.285625,37.126938,38.790356,30.44343,21.348885,not_test +438,37.0,42.32114,26.092432000000002,36.90513,38.420307,25.370852,25.321102,not_test +439,40.0,40.216774,27.450468,32.706596000000005,36.808323,27.793622999999997,26.676668,not_test +440,37.0,39.1791,29.381126000000002,28.678568,34.176125,25.893547,28.353159,not_test +441,34.0,34.5532,31.431459999999998,26.103521,31.789996999999996,24.644285,30.206622999999997,not_test +442,34.0,28.481714,33.106407,23.424751,29.658289,29.06585,31.893114,not_test +443,34.0,24.656988000000002,34.038887,21.895306,26.800987,39.636444,32.911377,not_test +444,31.0,26.969867999999998,25.804737,24.691069,26.111792,26.510105,23.148691,not_test +445,19.0,24.231373,25.466782000000002,20.494892,20.842032999999997,30.185425,22.624254,not_test +446,15.0,18.355091,25.640801999999997,19.376595000000002,18.43264,29.149303000000003,22.738876,not_test +447,15.0,20.706204999999997,26.184010999999998,19.700294,19.131788,25.772947,23.384870000000003,not_test +448,17.0,22.434416,26.691247999999998,20.28784,20.61532,24.760676999999998,24.261608,not_test +449,18.0,26.079216,26.804575,21.678095000000003,22.845982,29.184158,25.067474,not_test +450,22.0,20.106117,34.39056,20.204279999999997,20.94226,36.767128,35.90606,not_test +451,22.0,22.334145,32.659,22.862572,21.585619,30.604267,33.89415,not_test +452,29.0,23.986454000000002,29.048047999999998,24.439049,23.44347,27.508709999999997,30.345321999999996,not_test +453,28.0,24.372055,25.051256,25.297527,26.192429,25.914675,26.282887,not_test +454,26.0,27.106731,22.191338000000002,25.455814,27.618585999999997,22.570566,22.804136,not_test +455,25.0,30.210146,21.168018,27.281446000000003,27.751219,15.868779,20.641472,not_test +456,28.0,22.128515,19.622631,27.503996,24.090214000000003,21.180876,20.483644,not_test +457,27.0,25.012415,19.548336,30.812041999999998,27.85735,22.162289,20.22007,not_test +458,28.0,26.989548,19.827057,31.078834999999998,29.979592999999998,20.608334,20.167818,not_test +459,34.0,29.519191999999997,20.36007,35.852257,32.432087,18.921345000000002,20.47405,not_test +460,39.0,29.99618,21.173872,36.73622,33.420429999999996,20.177061,21.25035,not_test +461,42.0,40.63322,22.318184,37.98101,34.4537,25.4532,22.417486,not_test +462,49.0,44.989906,23.527334,40.7574,42.35398,22.16463,23.744457,not_test +463,62.0,45.730503000000006,25.141993,40.11036,42.401134000000006,24.359032,24.746008,not_test +464,65.0,46.73529,26.621990000000004,39.56146,40.183067,23.001549,25.746229999999997,not_test +465,61.0,40.908077,27.435402000000003,36.74707,36.601279999999996,21.631762,26.109833,not_test +466,52.0,32.880894,27.508634999999998,30.354464,33.027621999999994,24.399166,25.740246,not_test +467,26.0,26.412703999999998,27.176890000000004,27.824854,29.997019,32.323029999999996,25.121323,not_test +468,15.0,16.962807,25.012518,19.515078,20.676262,24.930101,24.914482,not_test +469,13.0,14.150564000000001,24.898972,17.848297,18.083214,26.314096000000003,24.40515,not_test +470,13.0,14.397108,26.187422,17.709177,17.685532000000002,24.425383,24.72574,not_test +471,15.0,17.802554999999998,28.388783,17.827162,18.555827999999998,22.667595000000002,26.027458,not_test +472,18.0,20.82943,30.258627,19.46973,19.974127,24.91475,27.598330999999998,not_test +473,19.0,24.172767999999998,30.656153000000003,20.884579000000002,22.292576,32.091377,28.345629,not_test +474,24.0,20.398766000000002,60.284530000000004,20.813879,21.550435999999998,68.60491999999999,62.939809999999994,not_test +475,25.0,22.712088,58.658936,23.409924,22.132889000000002,59.9188,61.07669,not_test +476,33.0,24.292332000000002,54.155426,24.984856,23.994148000000003,61.309837,55.357245999999996,not_test +477,26.0,24.568487,49.26877,25.951407999999997,26.906146999999997,65.63903,49.652493,not_test +478,26.0,27.174570000000003,45.214897,26.274576,29.651781,60.68506,46.127045,not_test +479,25.0,28.68324,41.511070000000004,28.5886,32.022144,40.128452,44.040665000000004,not_test +480,26.0,22.422022,14.989475,24.880589,23.183784,15.079638000000001,14.251060500000001,not_test +481,26.0,25.081808,16.241642000000002,26.645193,24.093884,17.767483,14.401005,not_test +482,29.0,26.268279999999997,18.373034,26.137472,24.010948000000003,16.177039999999998,15.379439999999999,not_test +483,26.0,26.663687,19.887703,29.590320000000002,25.79616,14.339273,16.360948999999998,not_test +484,29.0,27.252632000000002,20.621925,32.370594,26.190697,18.057842,17.327358,not_test +485,37.0,35.308820000000004,21.683661999999998,35.02467,27.31513,29.671440000000004,18.93845,not_test +486,42.0,36.932682,31.204459999999997,35.653778,37.29345,28.027742,32.279633000000004,not_test +487,50.0,41.608999999999995,32.147224,34.811913,37.898895,32.777252000000004,31.939579,not_test +488,49.0,39.419025,32.33335,34.063644000000004,35.874527,28.727653999999998,30.939308,not_test +489,39.0,35.316906,31.800715999999998,32.255196000000005,32.713642,23.341625,29.90622,not_test +490,24.0,28.58949,31.022999,27.368679999999998,29.983068,25.782936,29.242981,not_test +491,17.0,24.267908,30.540577000000003,25.155539,27.647633000000003,39.00929,28.896915000000003,not_test +492,16.0,15.860534,31.614134000000004,16.289122,16.91858,30.395256,31.654482,not_test +493,14.0,13.688156,30.966162,16.620487,16.882652,32.13293,30.585136,not_test +494,16.0,13.924610000000001,31.227016,16.631854999999998,17.005173000000003,26.993940000000002,29.990821999999998,not_test +495,16.0,17.400123999999998,32.49582,17.229183,17.60816,22.513545999999998,30.766547999999997,not_test +496,17.0,19.54243,34.386932,18.89603,18.971339999999998,27.33088,33.266940000000005,not_test +497,20.0,22.015793,36.23265,20.241327,20.534668,43.65495,36.867573,not_test +498,23.0,20.385645,41.156002,20.916214,21.520554,45.73577,42.903088000000004,not_test +499,26.0,22.712389,41.556988,23.468323,22.10128,33.655,42.106320000000004,not_test +500,29.0,24.227257,39.857353,24.902725,23.714437,33.29627,39.79744,not_test +501,33.0,24.458525,36.127604999999996,25.619446,26.200554,38.26553,36.09298,not_test +502,28.0,27.189359999999997,31.591175,25.667358,27.524209999999997,37.390526,31.889719,not_test +503,26.0,27.354591,28.01916,27.340975,27.62309,24.611107,28.566605,not_test +504,27.0,22.147054999999998,15.268904000000001,24.62406,23.691048000000002,12.976154,13.8074665,not_test +505,29.0,25.07325,14.670679000000002,26.053755,24.087505,16.355707000000002,14.025806,not_test +506,24.0,25.935349,16.512539999999998,25.15555,23.82404,16.600975,15.387754000000001,not_test +507,22.0,26.033606,19.684128,27.419464,25.323320000000002,16.35497,17.622757,not_test +508,28.0,26.380531,23.150845,30.241133,25.705555,20.084126,20.274803,not_test +509,35.0,33.066466999999996,26.470321999999996,33.45037,26.689429999999998,29.865897999999998,22.785534,not_test +510,46.0,32.032967,35.273185999999995,34.755404999999996,35.294083,29.475563,34.419487,not_test +511,56.0,34.715137,38.56714,34.489616,36.02568,34.640194,35.4012,not_test +512,26.0,35.510674,40.392143,34.2009,34.146515,39.425804,35.922794,not_test +513,26.0,32.973279999999995,40.352818,32.62965,31.381227000000003,40.64186,35.97398,not_test +514,28.0,26.961904999999998,39.154274,28.219158,29.238004999999998,37.417057,35.686690000000006,not_test +515,23.0,23.670856,37.935856,26.267355,27.065912,31.842009,35.20282,not_test +516,22.0,19.103222,49.6206,18.199413,19.369954999999997,47.652252000000004,51.813293,not_test +517,23.0,16.197697,47.10151,17.124057999999998,18.983383,45.762,48.264862,not_test +518,23.0,16.274147,43.74978,16.849795999999998,18.862278,47.0645,43.823956,not_test +519,20.0,18.545486,41.355774,17.170725,19.290716,47.533165000000004,40.841045,not_test +520,21.0,21.143978,40.30038,18.678383,20.61898,42.952557,40.026024,not_test +521,20.0,24.047344,39.564106,20.151709,22.526392,32.8714,40.229915999999996,not_test +522,22.0,21.947128,46.532447999999995,21.75035,23.587051000000002,49.395775,44.96978,not_test +523,32.0,22.530394,43.98969,24.38231,25.764065,39.154606,41.52272,not_test +524,34.0,24.760115,38.242767,27.190186999999998,28.836481,33.888523,34.822712,not_test +525,43.0,25.68806,31.410868,30.044052,31.691963,31.214541999999998,26.352797,not_test +526,43.0,28.536568,25.947569,31.04328,32.57395,26.052078,18.791124,not_test +527,33.0,37.540946999999996,23.324986,33.146786,32.325943,15.857673000000002,14.726049,not_test +528,35.0,28.710384,34.387993,33.025017,29.486290000000004,35.08446,35.663113,not_test +529,59.0,32.141575,34.197742,28.555727,27.237305,35.324146,33.729485,not_test +530,69.0,27.363031,34.97013,25.744312,24.822598,31.92502,32.228115,not_test +531,64.0,29.193,36.432564,27.126490000000004,25.031527,29.718576000000002,32.02629,not_test +532,54.0,22.936195,38.023094,29.032055,24.657035999999998,33.449073999999996,33.0581,not_test +533,51.0,32.739407,39.219078,31.022615000000002,25.305145,43.601203999999996,34.41727,not_test +534,55.0,51.012753000000004,31.905086999999998,44.3868,45.25574,29.464256,30.109104,not_test +535,50.0,43.687782,33.45113,40.547344,42.462833,32.06589,30.811108,not_test +536,28.0,43.086544,35.322371999999994,34.130344,37.335570000000004,29.652039000000002,31.425478000000002,not_test +537,23.0,39.28418,36.779865,29.740944,33.412009999999995,28.219194,31.371532000000002,not_test +538,16.0,32.800777000000004,37.437588,25.470737,30.340742,33.98168,30.808204999999997,not_test +539,14.0,28.892215999999998,37.415462,23.507534,27.800197999999998,47.677914,30.495805999999998,not_test +540,9.0,14.674028,56.94316,15.491272,13.637032000000001,58.038303000000006,59.339569999999995,not_test +541,12.0,12.006739,55.147445999999995,15.822192999999999,13.9389305,56.274967000000004,56.173626,not_test +542,18.0,13.785744000000001,52.863409999999995,16.537111,14.463671,58.71068199999999,52.273422,not_test +543,19.0,17.524986,51.60331,17.32175,16.131197,60.986885,49.907005,not_test +544,26.0,20.822054,51.212524,18.828423,18.811685999999998,57.58339300000001,49.416946,not_test +545,31.0,24.549612,50.225105,20.537016,21.619170999999998,46.740738,49.260426,not_test +546,37.0,29.101484000000003,41.254753,28.594497999999998,30.0646,45.905724,39.757490000000004,not_test +547,37.0,29.741112,41.997364000000005,32.806866,32.243190000000006,42.039856,39.31929,not_test +548,39.0,30.808483000000003,41.76682,37.091846000000004,36.17242,41.066856,37.681340000000006,not_test +549,46.0,32.041073,40.01186,42.46615,41.686028,39.624404999999996,34.317387,not_test +550,54.0,38.14411,37.31198,42.350037,45.219894000000004,34.363953,30.443096,not_test +551,45.0,51.780770000000004,35.094288,43.53136,45.785942,25.353286999999998,28.368313,not_test +552,36.0,32.677826,17.1961,32.317409999999995,29.618351,15.214746,17.412373000000002,not_test +553,25.0,34.795208,16.444138,29.905929999999998,28.220936,16.635954,17.003223000000002,not_test +554,27.0,30.336576,17.186523,28.693714,27.895508000000003,16.047142,17.639101,not_test +555,28.0,34.29037,18.556448,31.132101000000002,28.92427,15.426107,19.268621,not_test +556,35.0,26.292267,20.369122,33.190857,28.908817,18.143665,21.686148,not_test +557,53.0,34.816734000000004,23.089233,35.366795,30.868909999999996,25.849834,24.469444,not_test +558,84.0,54.002953000000005,24.731915,48.68245,51.91465,23.628207999999997,24.756554,not_test +559,96.0,50.052464,26.288203999999997,46.53086,50.901764,26.602898,26.066715,not_test +560,93.0,49.931038,28.421139,44.954483,47.753197,24.743073000000003,27.669859000000002,not_test +561,93.0,39.698673,30.287712,40.516890000000004,43.537983000000004,22.679409,28.755064,not_test +562,82.0,31.139528000000002,31.922112,33.053490000000004,40.288338,26.632659999999998,29.489363,not_test +563,76.0,26.481603999999997,33.934074,29.393076,35.680832,38.80643,30.7026,not_test +564,71.0,65.44963,28.82153,45.482464,32.51743,27.580444,27.56408,not_test +565,29.0,56.017624,29.289482,27.392471,18.600246,30.915436,28.271658000000002,not_test +566,23.0,29.175583000000003,29.982458,20.799523999999998,20.53228,27.292614,29.179203,not_test +567,24.0,34.384440000000005,30.534412,19.554973999999998,22.613625,22.76189,29.88669,not_test +568,25.0,24.969006,30.735249,20.380623,26.466877,24.983967,30.175001,not_test +569,26.0,32.754146999999996,30.64617,22.962307,32.881737,36.61225,30.100696999999997,not_test +570,31.0,27.431969,55.5813,27.450553999999997,30.276923999999998,59.437884999999994,57.324142,not_test +571,27.0,29.266827000000003,54.526638,34.500873999999996,35.760670000000005,51.9391,54.572823,not_test +572,39.0,31.316713,51.093765000000005,39.029076,39.86515,50.105606,49.223694,not_test +573,38.0,32.885467999999996,45.704765,43.292423,43.993458000000004,50.612762,43.080692,not_test +574,43.0,38.29137,38.94615,42.81973,48.558537,46.858482,37.423912,not_test +575,30.0,52.18187,31.815479999999997,43.701805,51.178375,35.167065,32.702015,not_test +576,27.0,27.778912,12.784191,33.929534999999994,29.829411999999998,15.237283999999999,13.838173000000001,not_test +577,26.0,31.33581,14.556025,31.6484,33.188602,17.06372,14.887678,not_test +578,12.0,26.674288,17.439042999999998,30.224865,35.128479999999996,15.999609,16.87004,not_test +579,7.0,27.294388,19.680198999999998,34.544212,35.65965,14.883009,18.87503,not_test +580,10.0,21.950502,20.96888,37.18262,35.803013,18.157345,20.568255999999998,not_test +581,15.0,32.853394,22.399824,39.885876,36.906185,27.81203,22.203787,not_test +582,21.0,23.727486,27.371376,22.46455,21.69531,22.70565,24.587223,not_test +583,34.0,32.750202,28.511384999999997,26.795752,24.657242,25.524288000000002,22.316801,not_test +584,31.0,29.770992,29.721949,28.233479,26.116608,22.321908999999998,21.049099,not_test +585,26.0,30.684371999999996,30.922188000000002,27.755385999999998,22.971085000000002,19.100698,21.867939,not_test +586,19.0,25.324875,32.14595,24.566368,20.225227,22.751877,24.473064,not_test +587,24.0,23.598862,33.33321,22.368433,18.791845000000002,34.986115000000005,27.334476000000002,not_test +588,26.0,24.452896,26.522308000000002,22.62836,21.917603,24.401970000000002,25.917498000000002,not_test +589,35.0,23.061687,27.730894,19.90918,20.820408,28.169643,26.984015999999997,not_test +590,36.0,16.580568,30.182865000000003,19.041782,20.303410999999997,27.03518,28.760817,not_test +591,37.0,20.167778,32.66483,20.452023,20.483604,25.642355,30.711322999999997,not_test +592,36.0,22.998920000000002,34.33256,20.850776999999997,21.998737,30.24509,32.68894,not_test +593,39.0,26.532172999999997,35.163906,22.650398000000003,24.164589000000003,42.980022,34.798576000000004,not_test +594,43.0,40.799923,49.765038,38.84247,38.630573,53.877019999999995,47.301544,not_test +595,38.0,33.5914,47.97655,37.683964,37.960762,34.03151,41.78014,not_test +596,34.0,33.67825,42.377052,36.632754999999996,36.80035,28.4774,33.182728000000004,not_test +597,45.0,34.728553999999995,34.998707,38.146194,36.101036,31.952146999999997,23.683819,not_test +598,46.0,33.167120000000004,28.33315,37.730507,36.298576000000004,31.471884000000003,16.070454,not_test +599,45.0,43.72038,24.061420000000002,39.293003000000006,35.898655,18.165615,12.503971,not_test +600,45.0,44.190853000000004,16.008587,45.770103000000006,41.442627,15.074489999999999,15.953584,not_test +601,40.0,43.488341999999996,16.99842,44.26245,40.309788,17.826610000000002,16.27938,not_test +602,22.0,36.320440000000005,19.651714000000002,41.270990000000005,35.78513,17.226671,17.445044,not_test +603,57.0,37.56053,22.611212,41.892807,34.785984,15.846898999999999,19.125477,not_test +604,59.0,26.5553,25.014868,41.139796999999994,34.48688,18.220657,21.079441,not_test +605,62.0,38.567276,26.880508000000003,41.720366999999996,35.673927,26.73524,23.120045,not_test +606,50.0,63.054165000000005,30.93129,50.943375,55.32366999999999,28.117110999999998,29.444569,not_test +607,45.0,52.239395,33.11036,45.668490000000006,50.83748,33.490845,30.11467,not_test +608,36.0,56.356359999999995,34.00731,37.669727,43.42275,31.305342,30.086609000000003,not_test +609,32.0,49.957029999999996,33.573433,31.86457,35.970753,26.037796,29.610752,not_test +610,28.0,43.946407,32.48963,25.997742000000002,29.918945,25.027739999999998,29.171703000000004,not_test +611,30.0,40.634056,31.581408000000003,23.374216,25.69859,32.28001,29.089354999999998,not_test +612,37.0,27.298415999999996,28.525109999999998,27.202467,24.972782000000002,26.42922,26.22298,not_test +613,30.0,27.114845000000003,28.381178000000002,21.359783,21.017342000000003,29.986252,25.13157,not_test +614,32.0,20.125843,29.180376000000003,19.634422,19.597017,27.464134,24.618559,not_test +615,34.0,22.449355999999998,30.570807000000002,20.22873,20.257607,24.831497,25.348804,not_test +616,37.0,25.549973,31.887032,21.042451999999997,22.047012,29.418971999999997,27.370620000000002,not_test +617,44.0,27.641122999999997,32.58976,23.010227,24.558320000000002,43.350770000000004,29.969137,not_test +618,45.0,49.623459999999994,51.69995,44.218292,46.656420000000004,56.127968,50.631409999999995,not_test +619,44.0,44.410509999999995,48.450386,47.886463,47.4867,40.31231,42.21105,not_test +620,54.0,45.372696000000005,41.386303000000005,49.36598,46.948387,36.12619,31.507247999999997,not_test +621,55.0,49.117195,33.599594,53.78049,46.31406,38.439240000000005,22.711267000000003,not_test +622,64.0,38.535263,27.78882,51.088840000000005,46.699154,35.858498,18.360073,not_test +623,71.0,48.66346,24.854020000000002,49.728752,49.286235999999995,21.221363,18.233238,not_test +624,86.0,72.41244499999999,21.54135,74.48036,66.22251999999999,21.666957999999997,22.59931,not_test +625,84.0,65.07783,22.22116,65.99181999999999,60.56745,22.914305,22.556114,not_test +626,68.0,57.901545999999996,23.680353,58.582767000000004,54.255630000000004,20.274855,22.833172,not_test +627,67.0,49.109097,25.287985,54.879073999999996,50.86331,17.887554,23.334015,not_test +628,70.0,37.913574,26.676594,49.65985,46.747963,20.722970999999998,24.011078,not_test +629,71.0,41.794895000000004,27.857601000000003,47.40147,45.129726,30.212008,24.830935999999998,not_test +630,56.0,65.58334,35.9506,57.241203000000006,60.05734,36.42792,35.4499,not_test +631,50.0,55.012512,37.159023,49.735962,55.12719,40.744476,34.152885,not_test +632,49.0,58.1624,37.205544,40.10491,47.38177,44.86084,31.873935999999997,not_test +633,34.0,53.662490000000005,36.40025,32.721053999999995,39.830902,44.378555,29.796485999999998,not_test +634,21.0,46.56517,35.253704,26.148922,32.762046999999995,37.31605,28.682135,not_test +635,18.0,43.731235999999996,34.115025,23.525253,28.160534000000002,26.067049,28.455140000000004,not_test +636,19.5,20.259045,55.88994,16.945326,17.616104,59.137836,57.08416,not_test +637,21.0,17.625916,54.99345400000001,16.744970000000002,16.987345,58.56148,55.053307,not_test +638,29.0,14.989301999999999,52.782665,16.780241,17.382837,63.53029599999999,51.457390000000004,not_test +639,31.0,20.298754000000002,50.330338,18.183659,18.265041,67.221245,48.351273,not_test +640,29.0,24.581274,47.733406,20.054533,20.58066,61.768414,46.288154999999996,not_test +641,29.0,27.444190999999996,44.41066,22.498106,22.731552,45.20446,44.274196999999994,not_test +642,28.0,29.316336,44.046032000000004,28.681581,29.504637,48.14833,47.09348,not_test +643,30.0,30.144509999999997,42.847443,31.602597999999997,30.215006,42.293079999999996,45.389996000000004,not_test +644,33.0,31.718895,40.74367,34.95362,33.237907,42.986862,41.870308,not_test +645,33.0,33.335144,38.24975,38.739740000000005,36.332775,45.406906,37.696507000000004,not_test +646,41.0,37.366820000000004,35.86952,39.48892,37.39083,42.5682,34.205517,not_test +647,40.0,48.8692,33.9953,41.5512,37.562393,31.613471999999998,32.26684,not_test +648,60.0,40.085423,15.465069,38.379536,37.790040000000005,13.286667000000001,16.057241,not_test +649,54.0,39.423836,17.856525,39.125557,40.55464,17.862270000000002,16.571995,not_test +650,47.0,35.3125,21.234497,38.915279999999996,43.099117,17.37675,17.823397,not_test +651,44.0,35.595721999999995,23.936989999999998,42.78877,44.84152,16.341885,19.172825,not_test +652,47.0,26.375491999999998,25.6177,42.841305,44.433234999999996,21.109337,20.46875,not_test +653,105.0,39.169975,27.174543,44.343018,44.0932,33.982647,21.982976999999998,not_test +654,98.0,80.960396,40.39524,80.26946,72.86301999999999,37.95606,38.709908,not_test +655,93.0,79.51342,42.690754,70.51095,69.42187,41.419605,39.40503,not_test +656,81.0,67.97062,44.275658,62.061843999999994,64.77965999999999,34.459606,40.183815,not_test +657,62.0,60.929077,44.67456,50.077618,56.40811,27.122116,41.008217,not_test +658,57.0,56.00295,44.1067,37.933945,52.183075,30.933458,41.747456,not_test +659,44.0,47.57952,43.238327000000005,31.120728000000003,46.167778000000006,49.043365,42.190104999999996,not_test +660,38.0,33.812325,27.813145000000002,36.714287,31.847434999999997,26.465376000000003,25.266537,not_test +661,33.0,32.868347,29.475246000000002,27.466385,26.363327,28.419395,26.26987,not_test +662,43.0,23.065243,30.970985,23.433139999999998,24.2113,34.557648,28.046546999999997,not_test +663,47.0,27.778723,31.174884999999996,23.578289,24.392162,37.39314,28.677729,not_test +664,39.0,28.069909999999997,30.300093,24.133526,25.958323999999998,31.979397,27.488512,not_test +665,43.0,32.191134999999996,29.668148,26.537989000000003,28.85928,20.187721,25.597406,not_test +666,57.0,43.126490000000004,81.54332,49.947334000000005,45.338596,81.15834,83.698204,not_test +667,65.0,39.975277,76.75555,53.801476,47.013009999999994,59.82784,73.46563,not_test +668,58.0,41.828915,65.99180600000001,54.0401,47.00503,46.328983,56.398888,not_test +669,65.0,47.39698,53.08541999999999,57.427344999999995,46.28585,39.586205,39.340645,not_test +670,49.0,47.84015,41.345795,55.766403000000004,46.260406,31.505356,27.670906,not_test +671,63.0,52.84526999999999,32.338924,56.582269999999994,47.526253000000004,15.678435999999998,22.727992999999998,not_test +672,59.0,67.006516,23.465935,59.938927,57.9496,22.505672,26.856709999999996,not_test +673,57.0,57.820083999999994,27.566837,50.242622,53.911995,28.060787,28.72865,not_test +674,46.0,53.834495999999994,32.848793,41.055855,47.035618,26.690336,31.848688,not_test +675,40.0,48.43569,36.17811,39.72772,44.94423,23.860031,34.47027,not_test +676,47.0,34.816833,37.305915999999996,39.75012,42.693325,28.777535999999998,36.067005,not_test +677,33.0,44.07738,38.636204,40.597813,42.132843,46.08157,37.448776,not_test +678,43.0,33.154476,29.310122999999997,37.346603,35.313778000000006,26.043135,24.837463,not_test +679,56.0,41.499496,30.183975,39.253033,37.27752,33.56167,26.124765,not_test +680,61.0,40.302483,31.507740000000002,38.25987,38.89938,31.155929999999998,27.862990999999997,not_test +681,54.0,41.797318,32.206635,36.73379,36.852165,28.218678000000004,28.9938,not_test +682,49.0,35.73836,32.593018,33.118965,34.465546,36.203243,29.411726,not_test +683,41.0,34.197967999999996,33.964314,31.09188,30.602320000000002,58.1784,29.891283,not_test +684,38.0,31.500576000000002,29.032566,34.98503,31.734407,25.137226000000002,24.763579999999997,not_test +685,37.0,30.818844,30.924753000000003,27.346706,27.66597,30.988590000000002,25.715572,not_test +686,44.0,24.998317999999998,36.789524,25.061730999999998,26.044813,30.56472,29.488674,not_test +687,38.0,26.165003,44.22522,24.951544000000002,26.774652000000003,30.000046,35.441505,not_test +688,41.0,28.82848,50.80001,26.207823,28.722786,38.478885999999996,42.612206,not_test +689,43.0,31.739075,55.2918,28.2834,31.421103000000002,59.609573,49.762283000000004,not_test +690,53.0,44.221725,40.71645,47.95514,46.830734,44.711166,34.931282,not_test +691,43.0,39.224403,43.809727,46.044758,48.20803,34.231556,34.759293,not_test +692,48.0,39.775209999999994,44.814083000000004,44.3697,47.921496999999995,32.18078,32.520379999999996,not_test +693,48.0,43.95597,42.285393,45.60275,47.911186,32.45747,27.650745,not_test +694,46.0,46.18492,36.955738000000004,45.077553,48.111164,26.964676,21.794643,not_test +695,35.0,58.297233999999996,31.405222,46.627964,48.134598,13.252135999999998,17.945185000000002,not_test +696,41.0,30.518691999999998,34.549065,38.091766,33.82082,35.58907,35.608696,not_test +697,44.0,34.045273,33.824290000000005,35.910275,33.812523,39.444786,33.997433,not_test +698,30.0,30.143925,35.03152,33.549175,31.216307,34.23553,32.93895,not_test +699,31.0,30.74857,37.418785,35.546616,32.569065,27.943232000000002,33.596672,not_test +700,25.0,26.938398,39.48701,37.67433,31.633323999999998,30.607143,35.385082000000004,not_test +701,23.0,38.265636,40.063805,40.00622,32.120655,45.712948,36.40688,not_test +702,30.0,25.2871,34.25825,25.793093,24.893843,34.977646,35.760544,not_test +703,27.0,30.410282000000002,33.738262,27.937012,26.704315,38.37673,35.39463,not_test +704,23.0,27.645468,32.393209999999996,27.625414000000003,28.553046999999996,42.334274,33.942707,not_test +705,17.0,25.685701,30.40372,26.426616999999997,24.798416,40.579266,31.917340000000003,not_test +706,17.0,22.08782,28.452682,24.432741,22.118267000000003,30.517184999999998,30.433805,not_test +707,14.0,21.536001000000002,27.365585,23.521645,20.49194,15.955009,30.443904999999997,not_test +708,13.0,13.160206,37.970856,15.500889,14.620619,33.698516999999995,35.82202,not_test +709,15.0,7.933269500000001,37.196583000000004,16.51706,14.985064000000001,36.385056,32.881554,not_test +710,15.0,8.066299,37.536118,17.431305,15.732878,33.475903,30.544678,not_test +711,13.0,11.53253,38.729607,18.154058,17.534594,29.088562,30.23645,not_test +712,15.0,14.621782000000001,40.099556,21.190619,21.114701999999998,29.57303,31.827938,not_test +713,17.0,18.688023,41.031082,23.199663,25.395832000000002,38.141056,33.800453000000005,not_test +714,16.0,22.834295,41.38075,21.315886,21.629448,41.030125,40.67771,not_test +715,14.0,22.770326999999998,41.927658,26.380034999999996,26.433111,43.727863,39.63219,not_test +716,15.0,27.210765999999996,42.070995,32.836025,38.36286,37.190945,39.16685,not_test +717,17.0,27.021759000000003,41.87924,36.038734000000005,53.098395999999994,30.110126,39.494545,not_test +718,16.0,29.873787,41.66131,37.035109999999996,58.343543999999994,32.652145000000004,40.24451,not_test +719,15.0,37.6455,41.7194,40.23937,58.713974,47.857414,40.783474,not_test +720,15.0,16.26497,27.977097999999998,20.318792000000002,16.745852,28.430342,29.58305,not_test +721,17.0,23.289282,29.590716999999998,24.960107999999998,18.651276,30.79325,31.545816,not_test +722,16.0,20.157225,31.833365999999998,25.992449,18.458060999999997,27.983902,33.901485,not_test +723,19.0,19.622072,33.504055,33.08187,21.669065,24.515629,35.62048,not_test +724,17.0,19.8921,34.397007,39.33072,22.0244,26.603258,36.447342,not_test +725,20.0,31.633460999999997,35.253704,44.71533,24.178888,36.773518,36.898604999999996,not_test +726,34.0,25.83485,43.715607,23.434578,24.588910000000002,40.250084,43.51638,not_test +727,34.0,34.817383,43.496765,27.72747,28.304610999999998,41.136016999999995,41.522938,not_test +728,29.0,32.706192,42.4226,29.619766,29.24948,43.691658000000004,39.08741,not_test +729,27.0,33.19257,40.900745,28.830868,26.913458000000002,42.487473,37.399933000000004,not_test +730,16.0,27.935143,39.575268,25.880302,23.067638,34.763664,36.97769,not_test +731,10.0,27.315987,38.949993,23.549906,21.451641,23.24185,37.429096,not_test +732,11.0,9.815723,74.599754,11.396479,10.856222,83.25076,78.35367600000001,not_test +733,13.0,4.287979,72.02717,12.403511,11.14904,78.62167,76.67099,not_test +734,14.0,8.22674,66.92357,13.478767000000001,13.011398,77.71219,71.03616,not_test +735,12.0,13.550634,61.100655,14.731048999999999,15.964154999999998,75.33871500000001,64.62710600000001,not_test +736,14.0,17.740560000000002,55.827614000000004,17.58277,20.460941000000002,65.55783000000001,60.003628000000006,not_test +737,19.0,24.16581,51.510284000000006,20.502287,24.613751999999998,47.68608,57.648956000000005,not_test +738,20.0,29.48071,49.18591,23.27724,27.996367,49.641743,49.733635,not_test +739,24.0,31.784623999999997,48.121390000000005,35.803112,39.871258000000005,45.932457,48.459972,not_test +740,33.0,35.17897,46.3973,46.759727000000005,52.14738,46.30737,46.685642,not_test +741,33.0,40.694763,44.307536999999996,54.862156000000006,58.83376,47.662563,45.151882,not_test +742,34.0,44.977077,42.57739,54.07719399999999,60.016487,45.98069,44.339929999999995,not_test +743,33.0,56.49485,41.98406,55.92179,59.55693,39.950171999999995,44.244495,not_test +744,35.0,35.549263,35.028434999999995,36.501625,33.355503000000006,31.578253000000004,35.227886,not_test +745,34.0,38.661892,38.958861999999996,36.075127,35.13073,39.078213,37.728497,not_test +746,33.0,36.240845,44.22064,35.246124,35.43828,41.00266,42.127083,not_test +747,32.0,38.798072999999995,48.787815,38.988820000000004,35.935925,43.21298,46.79943,not_test +748,26.0,29.858497999999997,51.593887,40.300674,35.78604,52.388203000000004,50.096484999999994,not_test +749,25.0,43.558975,52.869186,42.797874,35.735493,69.3412,51.216957,not_test +750,27.0,28.355965,36.984435999999995,31.155981,29.149155,33.19849,34.474777,not_test +751,21.0,36.465763,40.023064,33.92625,32.046146,37.057559999999995,36.596344,not_test +752,25.0,35.76613,43.958603000000004,33.232243,32.39717,36.624878,40.422554,not_test +753,21.0,37.189312,47.032814,31.586570000000002,31.02083,35.83324,44.549294,not_test +754,20.0,31.529364,48.555336,28.387712,29.119137,40.410065,47.72865,not_test +755,20.0,29.190788,49.119442,26.364234999999997,26.358593,52.559490000000004,49.441128000000006,not_test +756,20.0,21.10387,46.62212,17.592962,19.370745,43.049459999999996,45.20312,not_test +757,20.0,19.147488,46.95926,17.213549,18.597334,48.747463,45.96788,not_test +758,12.0,16.770014,47.306393,17.293039999999998,19.246696,57.253707999999996,46.97441,not_test +759,12.0,21.591223,47.012684,18.804956,19.938189,61.39199,47.027233,not_test +760,11.0,24.98294,45.556965000000005,20.396739999999998,22.111404,56.770123,45.347927,not_test +761,12.0,27.757215000000002,43.082794,22.812542,23.58501,45.334927,42.299040000000005,not_test +762,13.0,16.461704,68.78002,19.416553,18.798136,70.63319399999999,76.21878000000001,not_test +763,12.0,18.853379999999998,63.193962,25.664518,22.996399,60.360237,68.14793399999999,not_test +764,13.0,22.765123000000003,54.572796,33.9895,28.748167,57.30488199999999,53.398663,not_test +765,16.0,22.6702,46.3478,40.498768,35.718777,56.628414,38.492203,not_test +766,21.0,30.401838,40.896526,41.926426,39.226562,50.542465,29.408978,not_test +767,24.0,41.95279,38.511448,44.865517,39.480446,35.824203000000004,28.105919,not_test +768,20.0,21.627102,44.463817999999996,30.024176,24.717041000000002,44.859337,43.873596,not_test +769,25.0,27.469309000000003,43.30301,40.496586,27.470043,47.643524,43.328316,not_test +770,25.0,28.585196999999997,42.14284,38.695797,32.610786,52.48571,42.056778,not_test +771,38.0,29.371626000000003,41.766937,41.60484,36.312843,54.4404,40.6459,not_test +772,45.0,37.240593,43.17923,44.112118,38.805145,50.700053999999994,40.116756,not_test +773,48.0,30.750185,46.712383,42.946785,38.612175,42.977173,41.157996999999995,not_test +774,45.0,54.69851,57.404140000000005,51.508774,46.686085,56.878094,55.1808,not_test +775,46.0,49.941208,59.853516000000006,52.00062,45.555614,61.27627,56.046319999999994,not_test +776,35.0,45.704723,61.507056999999996,47.098495,40.869296999999996,52.822037,55.639828,not_test +777,33.0,37.886288,62.065740000000005,37.237109999999994,37.614437,42.337986,54.826283,not_test +778,32.0,30.673617999999998,61.72792,32.249897,33.509502000000005,43.313107,54.54578000000001,not_test +779,22.0,21.74881,60.939625,27.481958000000002,23.688498000000003,60.656574,55.05056999999999,not_test +780,18.0,18.249702,48.278793,19.850179999999998,16.057539000000002,41.143436,47.983208000000005,not_test +781,15.0,15.866979999999998,53.249912,18.544155,15.996441,57.40051999999999,52.165015999999994,not_test +782,15.0,19.901224,58.4072,19.103844,17.204144,57.99169499999999,56.750668000000005,not_test +783,15.0,22.605929999999997,60.736397,20.47145,19.654749,50.29087,59.20146,not_test +784,19.0,25.994263,59.594246,22.77505,22.323387,50.216390000000004,58.74868000000001,not_test +785,20.0,33.531048,56.995295999999996,26.597334000000004,26.827198,68.25839,56.783997,not_test +786,24.0,23.772993,57.945103,25.050320000000003,21.833006,57.67391,54.284912,not_test +787,20.0,25.488476000000002,54.72376,28.49045,22.818754000000002,55.470165,48.410717,not_test +788,22.0,26.173409,50.461384,31.206413,25.052220000000002,55.755694999999996,42.3538,not_test +789,32.0,26.062984,47.037045,33.241116,27.794320000000003,53.99389300000001,38.11374,not_test +790,31.0,34.18063,45.524364,36.73962,29.850990000000003,46.674279999999996,36.426840000000006,not_test +791,34.0,27.181282,45.6752,36.051823,31.153128000000002,34.913567,36.67928,not_test +792,29.0,31.335562,45.49369,31.31965,29.478679999999997,43.59264,46.546135,not_test +793,33.0,33.13386,46.436417,29.533617,29.949883000000003,47.677459999999996,48.363743,not_test +794,47.0,35.97801,49.035717,31.962090999999997,30.788697999999997,45.08174,51.220646,not_test +795,31.0,28.891965999999996,52.33204,34.270103000000006,31.066378000000004,43.434017,53.88735,not_test +796,36.0,42.99006,55.419090000000004,37.402409999999996,31.989962,51.566466999999996,55.518043999999996,not_test +797,35.0,31.719535999999998,57.823654000000005,38.336674,33.102709999999995,71.362,56.056630000000006,not_test +798,27.0,37.061768,52.930330000000005,36.520134000000006,33.291138000000004,48.220141999999996,50.2355,not_test +799,28.0,36.700962,55.517030000000005,32.839484999999996,30.84657,52.070557,52.578033,not_test +800,22.0,36.40084,58.3732,28.560863,26.976046000000004,51.242756,56.09629399999999,not_test +801,17.0,31.218151000000002,60.695946,24.0489,24.031166,50.694206,59.47512,not_test +802,19.0,29.883505,61.85661999999999,21.521420000000003,21.827461,55.951730000000005,61.159040000000005,not_test +803,15.0,21.431898,61.657516,18.642546,19.754036,67.93896,60.325554000000004,not_test +804,15.0,10.851835000000001,31.216663,12.736761,12.794235,29.668919,30.587006,not_test +805,17.0,10.975286500000001,32.350845,12.894194,12.355152,33.380478000000004,31.428162,not_test +806,18.0,15.253461999999999,35.08532,14.513485000000001,13.830310999999998,34.141870000000004,33.541977,not_test +807,20.0,19.112392,37.92962,16.33217,16.556639999999998,33.606262,36.50711,not_test +808,18.0,22.8331,39.97053,19.142754,18.974135999999998,35.705673,39.705414000000005,not_test +809,22.0,30.491606,41.310337,24.035942000000002,23.579185,42.98928,42.459472999999996,not_test +810,38.0,22.863003,24.228273,23.792973,22.699170000000002,22.600693,24.782664999999998,not_test +811,41.0,24.24525,24.476446,26.286545,24.40905,21.555784,24.76804,not_test +812,44.0,24.635414,25.056210999999998,28.048748,27.372906,18.844194,24.965027,not_test +813,38.0,26.261196,25.372664999999998,29.392220000000002,29.749090000000002,17.075613,25.096338,not_test +814,39.0,33.693855,25.76435,32.718204,30.096233,19.473352,25.389256,not_test +815,53.0,28.288752000000002,27.117455,33.662975,30.473864000000003,27.059965000000002,26.317546999999998,not_test +816,35.0,55.465180000000004,18.983057000000002,45.658848,49.18367,17.47999,17.967985000000002,not_test +817,30.0,45.198208,21.040373000000002,38.950070000000004,46.113296999999996,20.495695,20.293362,not_test +818,18.0,48.249916,24.68068,37.016277,43.915928,20.474892,23.525593,not_test +819,29.0,31.373547,28.14828,35.38371,41.14561,20.739637,26.619736,not_test +820,25.0,36.926790000000004,30.445671,35.982956,40.442738,25.938126,29.10463,not_test +821,23.0,27.722417999999998,31.755059999999997,35.499634,38.858994,37.575916,31.043922,not_test +822,23.0,24.439426,15.676041,26.514162,24.220974,14.806505,15.7410755,not_test +823,26.0,26.489708,15.83852,25.828356,24.842022,15.646151000000001,16.194328,not_test +824,30.0,28.324115999999997,16.40539,23.596146,23.295261,15.370407,16.921394,not_test +825,30.0,24.621315,16.898564999999998,20.903473,20.356298000000002,15.419531,17.57827,not_test +826,28.0,24.399586,17.380924,19.087502999999998,18.28049,17.731537,18.073180999999998,not_test +827,32.0,17.643597,18.307858,16.896857999999998,17.008347,22.87148,18.524070000000002,not_test +828,17.0,32.41742,17.810928,28.439884000000003,24.682223999999998,16.326810000000002,16.902016,not_test +829,2.0,26.174136999999998,18.17831,21.093899,21.60424,17.860332,17.579727,not_test +830,5.0,28.057528,19.230198,20.834915,20.677666000000002,17.779331,18.867907000000002,not_test +831,5.4615383,24.508570000000002,20.230663,20.285510000000002,21.762976000000002,17.26536,20.160841,not_test +832,5.923076999999999,27.647753,20.71029,22.441326,24.187109,18.478676,20.810291,not_test +833,6.3846154,36.62491,20.752638,25.684994,27.99734,22.570776000000002,20.53256,not_test +834,6.8461536999999995,9.4747715,24.902817000000002,12.458651,15.483409,25.466625,26.139988,not_test +835,7.3076925,15.339235,23.353153,24.306656,26.682875,26.578362,24.549887,not_test +836,7.7692309999999996,20.065228,21.873941000000002,44.69364,39.521194,24.498545,22.293734,not_test +837,8.230769,28.088318,21.091095000000003,44.918053,44.19995,21.379820000000002,20.451069,not_test +838,8.692307000000001,41.74845,21.066269000000002,46.275543,44.600372,20.328827,19.660301,not_test +839,9.153846000000001,26.262822999999997,21.353527,44.790366999999996,43.488265999999996,22.912779999999998,19.777975,not_test +840,9.615385,13.335309,14.975230999999999,12.742044,11.611025,14.733935999999998,15.385595,not_test +841,10.076922999999999,12.727148,15.713693,13.090598,12.173156,16.864445,15.932431,not_test +842,10.538461999999999,10.651949,16.678688,15.527503,15.530206,16.846378,16.846173999999998,not_test +843,11.0,11.068058,17.562065,20.193102,16.789312,16.805870000000002,17.62235,not_test +844,11.461538000000001,20.497854,18.42044,25.258204,20.188011,19.338260000000002,17.948683,not_test +845,11.923077000000001,17.628429999999998,19.491241,26.925425,22.334822,25.047472,17.881338,not_test +846,12.384615,17.438187,32.703125,16.546478,16.903793,34.088924,33.467341999999995,not_test +847,12.846153999999999,21.065268,32.182007,19.025084,18.168716,34.021797,32.38297,not_test +848,13.307692999999999,22.266507999999998,30.408764,19.272978,17.320347,34.461445,29.823940000000004,not_test +849,13.769231,19.756447,28.59129,17.288204,14.362895000000002,32.777015999999996,27.432170000000003,not_test +850,14.230769,19.990852,27.357506,15.475608,13.134418,27.059568,26.129036,not_test +851,14.692307000000001,14.531198499999999,26.436607000000002,13.221182999999998,12.934788000000001,18.193758,25.598835,not_test +852,15.153846,10.730638,30.414303000000004,12.471406,11.810137,31.31682,31.832966,not_test +853,15.615385,10.186983,30.196246999999996,11.991597,11.603082,30.260128,31.179081,not_test +854,16.076923,12.961544,29.313335,12.314836999999999,12.445177000000001,31.323066999999998,29.495274,not_test +855,16.538462,15.54004,27.916527000000002,13.545589999999999,13.930132,31.09913,27.424459999999996,not_test +856,17.0,18.124445,26.303990999999996,15.206939000000002,15.371751999999999,26.75579,25.689684,not_test +857,31.0,23.463615,24.859151999999998,17.956954999999997,18.75931,18.769503,24.726343,not_test +858,32.0,27.182240000000004,23.253735,25.555258,26.924213,24.66682,22.890003,not_test +859,30.0,26.58212,22.261,25.761518,24.176776999999998,22.067581,21.16272,not_test +860,31.0,28.535019000000002,20.873528,29.139848999999998,24.331203,21.782293,19.313211,not_test +861,40.0,30.873648,19.463896,30.979984,24.909363,22.10098,17.953889999999998,not_test +862,46.0,38.936820000000004,18.565529,33.87781,25.288984,20.683173999999998,17.409172,not_test +863,49.0,23.140263,18.575676,34.652297999999995,26.797424,16.737295,17.609842,not_test +864,63.0,44.129482,10.521799,43.053123,40.387344,10.50659,12.16351,not_test +865,77.0,38.182125,12.663188,37.2376,40.739334,13.4273405,12.827583,not_test +866,73.0,42.188217,16.132172,34.874763,40.65597,14.651514,14.742054999999999,not_test +867,61.0,28.146358000000003,19.433292,31.535294,38.172714,15.9822445,17.359333,not_test +868,47.0,32.618095000000004,21.822802,30.413528000000003,35.501534,20.228653,20.055672,not_test +869,46.0,24.368093,23.530825,28.876793,33.055523,28.341186999999998,22.336477,not_test +870,36.0,41.922059999999995,14.750401,41.36228,42.12603,14.110437,14.2761,not_test +871,38.0,44.855053000000005,15.496096,35.958859999999994,36.180836,15.7094,14.058924,not_test +872,33.0,46.338627,16.441433,29.318052,27.079071000000003,15.105170999999999,14.037976,not_test +873,29.0,41.211555,16.980902,21.327768,21.671425,14.463170000000002,13.988492,not_test +874,30.0,29.844085999999997,17.161781,17.831743,18.24835,16.553404,14.094767000000001,not_test +875,31.0,19.684847,17.555725,14.266382,14.263926999999999,22.20899,14.778642999999999,not_test +876,40.0,28.622372,24.131716,25.078820999999998,21.743252,24.197623999999998,24.16778,not_test +877,34.0,19.659851,23.320894,17.42483,16.846195,23.983420000000002,23.7062,not_test +878,26.0,21.805595,22.377665,15.245593,15.59775,26.523226,23.370028,not_test +879,38.0,17.53032,21.657299,15.356248999999998,16.310904999999998,28.389459999999996,23.14994,not_test +880,116.0,21.760956,21.189846,16.899094,18.386038,26.245116999999997,22.657999,not_test +881,70.0,28.780602000000002,20.75937,19.033895,22.517494,19.737057,21.52356,not_test +882,33.0,51.065903000000006,40.017334000000005,42.638000000000005,56.28485,41.660416,44.806442,not_test +883,42.0,51.58092,37.665397999999996,51.065346000000005,48.518936,37.35199,41.718384,not_test +884,65.0,52.155097999999995,33.417970000000004,59.193474,41.27704,36.23636,35.490868,not_test +885,58.0,20.531788,28.782612,58.919464000000005,38.182407,35.57285,28.756752000000002,not_test +886,51.0,28.198365999999996,24.906807,57.385002,35.847153000000006,31.326252,23.95385,not_test +887,53.0,18.231619,22.182953,58.347319999999996,33.974556,22.107162,22.010733,not_test +888,46.0,51.650566,14.038613,37.92325,38.716747,14.998062,14.46819,not_test +889,52.0,35.029655,14.389482999999998,28.832521000000003,27.219131,14.616616,14.319132999999999,not_test +890,61.0,39.78485,15.292297,25.054942999999998,24.754645999999997,13.095668,14.529383,not_test +891,60.0,27.2403,16.03109,23.866201,24.189144,12.422042999999999,14.862105999999999,not_test +892,67.0,23.061854999999998,16.678497,23.953356,25.514063,14.773472,15.430038,not_test +893,68.0,12.114616999999999,17.917553,24.555635000000002,24.756592,20.551228,16.535460999999998,not_test +894,55.0,64.45814,19.393482000000002,60.93905600000001,57.234818000000004,18.680970000000002,18.893042,not_test +895,41.0,57.810852000000004,20.967463000000002,53.884335,53.477219999999996,19.779429999999998,19.745316,not_test +896,48.0,55.299440000000004,23.064220000000002,45.253357,43.476585,17.486391,21.238848,not_test +897,49.0,53.303192,24.950031,35.470123,35.934345,15.953323000000001,22.986535999999997,not_test +898,48.0,50.026955,26.321806,25.359613,29.999522999999996,19.603405,24.548225,not_test +899,42.0,36.186134,27.323448,16.073975,17.371285999999998,29.159267,25.591635,not_test +900,39.0,34.333923,33.211240000000004,24.873785,26.089223999999998,29.848076000000002,33.659240000000004,not_test +901,31.0,18.045101000000003,33.906708,16.555906,18.366238,34.402634,33.35456,not_test +902,24.0,19.17859,34.38142,14.370023999999999,16.415743,37.039795,32.791909999999994,not_test +903,28.0,17.879375,34.378409999999995,15.3303175,16.856333,36.410057,32.220364000000004,not_test +904,34.0,23.834269,33.80965,17.262547,19.657312,33.683243,31.7875,not_test +905,39.0,33.499306,32.855843,20.223623,24.94227,31.537540000000003,31.499453000000003,not_test +906,40.0,40.534290000000006,28.937931,44.448376,39.27104,29.839733000000003,28.823559999999997,not_test +907,39.0,44.035645,28.256259999999997,44.32408,44.75974,26.680431,27.836746,not_test +908,47.0,53.274319999999996,27.09913,47.126995,51.502959999999995,27.612183,26.544040000000003,not_test +909,61.0,56.1864,25.576038,45.566254,55.144028000000006,29.185554999999997,25.272562,not_test +910,107.0,68.69945,23.970367,46.198166,55.58793000000001,27.038275,24.1269,not_test +911,108.0,51.880359999999996,22.695953,44.793822999999996,54.628882999999995,19.811419,23.07509,not_test +912,84.0,86.718346,18.100468,77.715416,76.52899000000001,17.443179999999998,18.371326,not_test +913,60.0,74.66646999999999,18.878332,68.58788,67.93704,19.12997,18.743122,not_test +914,44.0,73.00786,20.610560999999997,58.270340000000004,59.62104,18.59993,19.668324,not_test +915,59.0,61.94205,22.569695,48.547867,49.917118,18.14929,20.761345000000002,not_test +916,69.0,55.71705,24.246354999999998,44.22692,41.54045,20.738813,21.713531,not_test +917,77.0,42.1375,25.542135000000002,40.378345,38.363873,27.24059,22.416298,not_test +918,91.0,69.57833000000001,42.29282,68.0699,64.73276,40.409676,42.969833,not_test +919,91.0,62.604576,42.47768,58.302395,61.47563,43.783257,43.178967,not_test +920,65.0,62.333817,41.457316999999996,47.747597,50.40374,44.190243,42.029293,not_test +921,54.0,58.568203000000004,40.020958,35.400864,42.74113,41.060055,40.267082,not_test +922,46.0,54.52235,38.69165,24.143187,35.056892,35.904564,38.59552,not_test +923,41.0,40.937027,37.454094,16.32975,20.28896,31.35458,37.277588,not_test +924,38.0,30.261872999999998,29.884375,31.839632,25.047860999999997,29.051651,30.549376000000002,not_test +925,37.0,21.263803,29.57783,19.889452,18.48921,27.4457,30.605263,not_test +926,40.0,22.925282,29.074724,16.649204,16.720914999999998,29.598124,30.468140000000002,not_test +927,41.0,22.570124,28.308813,17.472313,18.202744,31.743027,29.844621999999998,not_test +928,45.0,26.370388000000002,27.388584,19.879814,21.65811,30.046988,28.752990000000004,not_test +929,54.0,36.98167,26.612675,23.603057999999997,28.102758,23.938007,27.604164,not_test +930,52.0,50.357994,24.518793,45.928523999999996,46.916121999999994,25.929491,25.810802,not_test +931,45.0,44.586693,23.913454,41.963608,40.817013,27.550966,25.630095,not_test +932,36.0,48.18732,23.392661999999998,40.20769,38.2442,27.687733,24.898792,not_test +933,34.0,38.384009999999996,22.955349,37.143826000000004,35.293037,25.767664,23.848755,not_test +934,40.0,43.512917,22.771639,37.550175,30.58495,22.753004,22.843891,not_test +935,35.0,21.790561999999998,23.0844,33.908764,26.585635999999997,20.513189999999998,22.18109,not_test +936,32.0,27.976826000000003,7.572059599999999,31.221708000000003,28.242693,6.6175976,6.6784533999999995,not_test +937,31.5,28.365553000000002,8.451799000000001,25.40929,27.08551,8.6382885,7.50185,not_test +938,31.0,29.798952000000003,10.778282,25.457088,29.434208,9.371433,9.801897,not_test +939,34.0,25.519077,13.469163,26.832503999999997,29.765789,10.430986,12.646811,not_test +940,40.0,34.720040000000004,16.27938,28.544729999999998,30.994556,14.699459,15.604965,not_test +941,46.0,27.991622999999997,19.634,31.294239,32.507538000000004,23.43238,18.724943,not_test +942,46.0,50.091957,39.182846000000005,41.148716,46.29622,37.79987,41.521225,not_test +943,52.0,43.404377000000004,39.503914,33.427822,39.66917,41.777546,40.734943,not_test +944,52.0,40.527120000000004,38.84819,27.868544,32.040745,45.083088000000004,39.016037,not_test +945,52.0,34.3891,37.464923999999996,22.845547,26.500183000000003,43.817513,37.110904999999995,not_test +946,45.0,36.591084,35.68155,20.147923000000002,21.153988000000002,36.883537,35.522675,not_test +947,41.0,25.626656,33.809235,17.128147,18.394346,27.225109999999997,34.32835,not_test +948,41.0,37.215576,43.165496999999995,37.248272,29.232515000000003,42.466957,43.923546,not_test +949,48.0,24.729515,40.407784,26.17482,27.091549,41.03433,42.09935,not_test +950,63.0,30.028698,37.527893,23.18856,25.065416,42.30697,39.676743,not_test +951,62.0,29.093153000000004,35.628906,22.641174,26.282434000000002,42.266045,37.592754,not_test +952,48.0,34.286293,34.816759999999995,25.275226999999997,28.770557,37.58225,36.237614,not_test +953,75.0,41.66066,34.396862,28.667562,32.0465,28.80098,35.400635,not_test +954,75.0,67.39206,28.641432000000002,66.69852,69.73079,31.473129999999998,30.535436999999998,not_test +955,72.0,69.30464,26.974527000000002,64.78004,64.6326,27.528683,28.089271999999998,not_test +956,84.0,78.59147,24.53997,66.058,57.85556999999999,27.753952,25.053214999999998,not_test +957,71.0,58.2893,22.083004000000003,60.51429,52.93045,29.257984000000004,22.396252,not_test +958,41.0,55.748825,21.072899,55.646034,51.168934,28.142357,21.188643,not_test +959,28.0,28.640853999999997,22.669833999999998,47.347244,48.5915,22.985554,21.977303,not_test +960,36.0,26.656712,116.07718999999999,28.789986,25.850098000000003,123.99146999999999,120.60383999999999,not_test +961,44.0,25.085903,109.61148999999999,23.224266,25.20521,111.09888500000001,114.48573999999999,not_test +962,54.0,26.082285,97.6548,23.03061,27.400894,115.34493,99.71129,not_test +963,54.0,23.584675,88.13327,24.714272,26.220898,120.996765,85.82138,not_test +964,45.0,33.961517,83.94839,25.937447,27.652308,105.736015,78.61626,not_test +965,58.0,28.126911,81.67832,30.059875,30.596245,61.061287,76.74812,not_test +966,57.0,59.204063,49.76318,54.441359999999996,53.479169999999996,55.040726,51.64295,not_test +967,70.0,51.479927,50.80355,48.82427,45.592533,55.941081999999994,52.81588000000001,not_test +968,62.0,49.98918,50.241528,41.552776,35.21349,59.491409999999995,52.114155,not_test +969,56.0,42.959255,47.69495,31.59083,30.344209999999997,55.076164,49.642773,not_test +970,54.0,43.20179,44.132504,27.366802000000003,25.393639999999998,37.385329999999996,46.673107,not_test +971,54.0,29.377968,41.34896,22.810925,21.649055,12.141157000000002,44.818497,not_test +972,38.0,49.376812,58.638909999999996,40.888626,39.587307,61.94555,60.40445,not_test +973,39.0,33.146595,55.44713,27.917288,31.053883000000003,58.338097,57.002625,not_test +974,47.0,35.011906,50.930126,24.502022,27.974775,61.121624,51.69577,not_test +975,45.0,28.133713,47.150658,24.636541,28.557184000000003,61.72191,46.635418,not_test +976,44.0,35.103203,45.25403,27.2346,31.398106,51.49582,43.33744,not_test +977,56.0,46.99655,44.944115000000004,30.935225,36.712563,29.866709000000004,41.99678,not_test +978,69.0,62.8913,48.0092,55.034927,57.046744999999994,47.706134999999996,48.850582,not_test +979,72.0,58.034138,49.13962,54.061554,57.016117,55.225196999999994,49.552620000000005,not_test +980,69.0,63.68634399999999,51.038998,54.53451999999999,52.888615,47.949042999999996,52.937576,not_test +981,61.0,47.241367,53.331123,50.37288,50.216774,40.75327,58.520331999999996,not_test +982,83.0,55.887269999999994,55.783516000000006,47.893745,49.166557,50.68608,64.015785,not_test +983,69.0,38.746914000000004,58.205543999999996,44.776866999999996,50.75306,81.840164,66.686195,not_test +984,65.0,73.35269,40.32407,55.199673,60.307635999999995,41.39652,40.84018,not_test +985,63.0,56.630790000000005,42.94422,45.87331,53.71368399999999,48.090878000000004,41.78145,not_test +986,51.0,58.412712,46.767456,39.7236,51.349754,41.864959999999996,43.767014,not_test +987,49.0,42.01276,50.138103,39.45282,50.06687,35.47956,46.12879,not_test +988,47.0,52.39866,52.016247,39.005179999999996,51.82447,43.457108000000005,47.956863,not_test +989,61.0,36.121604999999995,52.458490000000005,39.8067,49.76014,69.21837,48.598273999999996,not_test +990,64.0,68.85647,101.77925,58.810738,59.214690000000004,101.38641,102.53293000000001,not_test +991,52.0,58.694664,96.28905999999999,54.07595,57.513619999999996,92.96838000000001,96.60933,not_test +992,45.0,53.602669999999996,87.51285,48.24505,51.156815,95.36375,87.42968,not_test +993,38.0,44.41202,80.14856,37.636044,46.162403000000005,99.18718,80.1109,not_test +994,31.0,42.840942,75.66847,32.893584999999995,40.805122,90.95616,76.400925,not_test +995,24.0,31.184856,72.0475,27.952831,27.7986,65.362114,74.12695,not_test +996,23.0,23.288902,69.52554,23.203049,22.02282,83.62848000000001,71.85155999999999,not_test +997,14.0,21.690966,66.3491,23.658976000000003,21.796387,73.494026,69.234634,not_test +998,16.0,24.921098999999998,60.179214,23.357878,22.300001,75.01128,64.24643,not_test +999,20.0,27.591666999999998,52.98236,25.27635,24.663610000000002,77.56241999999999,58.782306999999996,not_test +1000,21.0,31.283835999999997,47.154976,28.153309999999998,27.680626,67.618454,54.558719999999994,not_test +1001,36.0,38.24725,44.322742,32.1167,33.994915,41.236202,52.298843,not_test +1002,38.0,36.864509999999996,37.255444,41.53241,40.940945,37.671684,35.103817,not_test +1003,39.0,37.376614000000004,35.674812,47.081608,43.769913,41.55167,33.500065,not_test +1004,38.0,41.997986,34.57574,53.372344999999996,46.304348,36.276154,32.56231,not_test +1005,46.0,48.389038,34.1137,53.391216,46.730614,29.064103999999997,32.354855,not_test +1006,60.0,63.305225,34.903304999999996,55.227608,46.92158,30.261326,33.082886,not_test +1007,57.0,39.99279,37.4982,56.251396,47.83484,44.57949,34.9135,not_test +1008,75.5,62.14618000000001,64.50747,63.34417,50.240414,60.040638,60.791725,not_test +1009,94.0,51.796203999999996,67.99811600000001,60.410582999999995,48.145897,74.77888,64.89846999999999,not_test +1010,97.0,53.22634,72.00553000000001,59.48820500000001,48.142582,73.301796,71.97052,not_test +1011,61.0,40.87899,75.87913499999999,58.4416,48.750492,66.96458,80.17371,not_test +1012,56.0,56.393013,78.79961,57.250873999999996,50.928540000000005,72.19129000000001,86.08551,not_test +1013,44.0,43.91639,80.0066,54.11411700000001,50.204246999999995,95.82039,86.73858,not_test +1014,56.0,40.68127,36.522793,40.1946,42.377117,37.616890000000005,39.56991,not_test +1015,47.0,37.74048,36.044703999999996,36.180786,40.32755,44.594685,39.906754,not_test +1016,32.0,38.463786999999996,37.221348,32.72489,37.150209999999994,40.484770000000005,41.08149,not_test +1017,15.0,32.72172,39.686302000000005,29.95461,33.18465,35.42277,42.880340000000004,not_test +1018,14.0,30.778988000000002,43.022529999999996,28.077745,31.19203,42.325066,45.012840000000004,not_test +1019,13.0,23.306519,46.796616,25.893656,29.218559999999997,65.35717,47.115032,not_test +1020,11.0,14.359467,47.645874,17.197302,16.578682,48.299774,48.081604,not_test +1021,12.0,16.592793,47.83915,18.126776,17.972061,48.444973,46.505474,not_test +1022,15.0,20.641739,47.207726,18.699703,21.237879,53.810318,44.9606,not_test +1023,18.0,23.78901,45.52361,21.833681,27.187994,55.565740000000005,43.472446000000005,not_test +1024,26.0,29.211841999999997,43.215775,26.303904,33.538498,46.849470000000004,41.754726,not_test +1025,37.0,36.678490000000004,41.20524,38.205853000000005,44.002117,29.016540000000003,39.676277,not_test +1026,41.0,39.51897,45.137386,43.661106,42.455856,43.524857,46.099712,not_test +1027,32.0,40.58258,44.53103,51.02028,48.43242,43.098267,44.816177,not_test +1028,36.0,43.55438,44.2448,58.12568,58.13839,37.288563,43.012153999999995,not_test +1029,36.0,48.639267,44.227455,58.37811,63.471633999999995,33.47246,41.514057,not_test +1030,33.0,65.28108,44.510006,60.2911,64.862625,38.913334000000006,40.952934,not_test +1031,34.0,44.556785999999995,45.186478,61.336245999999996,63.419830000000005,54.423823999999996,41.374428,not_test +1032,43.0,37.300426,64.84524,40.365017,37.27368,70.70863,69.61385,not_test +1033,47.0,39.6858,62.308859999999996,40.120422,43.36359,64.452034,67.29516600000001,not_test +1034,69.0,42.824482,57.595276,42.08381,49.261215,64.22168,62.393112,not_test +1035,80.0,41.5103,52.67029,46.316307,52.06458,64.58859,57.458769999999994,not_test +1036,64.0,57.74026,49.187893,49.05536,53.849982999999995,58.392759999999996,54.36244,not_test +1037,62.0,49.658840000000005,47.65522,50.194424,52.79105799999999,43.50172,53.25218,not_test +1038,38.0,66.642075,52.335445,61.099922,62.97039,51.74272,53.085987,not_test +1039,33.0,65.72428000000001,53.387671999999995,54.595980000000004,60.15225,55.756409999999995,53.00115,not_test +1040,26.0,61.654842,54.297940000000004,49.212616,54.632904,48.278620000000004,52.649708,not_test +1041,23.0,51.634686,54.793034,41.323624,49.729820000000004,40.447753999999996,52.281555,not_test +1042,19.0,43.80531,54.908974,37.858173,44.89925,44.914673,51.963184000000005,not_test +1043,15.0,34.904503000000005,54.896267,34.225365000000004,35.26875,64.98956,51.571715999999995,not_test +1044,16.0,17.291605,59.726093000000006,20.086094,19.726093,57.78569399999999,57.726997,not_test +1045,14.0,20.609533,59.648833999999994,20.83773,21.557972,59.375374,56.35106700000001,not_test +1046,17.0,24.687061,58.541911999999996,21.430443,24.809345,53.545494,54.688526,not_test +1047,27.0,28.103395000000003,57.1589,24.1305,30.707893,46.600044,54.08691999999999,not_test +1048,29.0,33.834633000000004,56.3384,30.037607,36.54,46.56165,54.98477,not_test +1049,30.0,39.684433,56.42606,42.13174,46.466095,56.591602,56.591465,not_test +1050,32.0,33.209763,50.66494,35.307625,39.043518,54.06544,50.203075,not_test +1051,34.0,37.094566,53.152657,42.616535,51.47358,60.704075,51.10252,not_test +1052,33.0,41.97485,56.037098,48.17303,62.392269999999996,59.735490000000006,52.29124,not_test +1053,36.0,49.487809999999996,57.84628299999999,50.013126,65.46413000000001,57.6235,52.968628,not_test +1054,34.0,66.62151999999999,58.140366,53.445446,65.830086,62.560683999999995,52.955433,not_test +1055,24.0,46.340137,57.678753,55.132934999999996,64.081764,76.99760400000001,52.777378000000006,not_test +1056,23.5,27.087027000000003,67.754524,30.356296999999998,29.039833,69.15202,67.35403000000001,not_test +1057,23.0,26.857018,65.950485,30.414677,28.871675,63.51745,65.465485,not_test +1058,25.0,25.752401000000003,62.170609999999996,31.741049,33.57465,66.77922,62.58294,not_test +1059,23.0,28.742678,58.385796,34.55088,33.738495,71.5478,60.691981999999996,not_test +1060,52.0,38.647197999999996,55.998734,37.016422,37.055374,67.92446,60.46145,not_test +1061,67.0,37.35073,55.077805000000005,42.111736,40.096584,52.208034999999995,60.88568000000001,not_test +1062,60.0,72.06353,52.06053,65.75310999999999,65.86587,53.262665000000005,51.181683,not_test +1063,64.0,70.78792,53.647537,64.49410999999999,58.9552,57.92179,53.272915000000005,not_test +1064,59.0,66.08079000000001,56.20125,58.079147,51.514446,56.333138,56.64527,not_test +1065,60.0,52.339745,58.299713,47.930706,45.316708,53.65234,59.61309,not_test +1066,56.0,40.786514000000004,59.38004300000001,41.72137,39.858643,57.157173,60.97342,not_test +1067,39.0,31.84923,59.978878,35.732407,31.899815000000004,69.73461999999999,60.713069999999995,not_test +1068,32.0,31.093403000000002,20.360344,33.544304,30.310746999999996,18.33004,17.945839000000003,not_test +1069,25.0,28.914479999999998,19.513374,31.273926,28.872282000000002,17.125206,15.086029000000002,not_test +1070,27.0,30.689083,19.464088,29.707147999999997,29.403399,13.8833275,12.3203125,not_test +1071,30.0,32.68674,19.270218,31.538755,31.385506,11.082283,9.946045,not_test +1072,28.0,36.80992,20.039257,33.879776,34.011307,13.068382000000001,9.476475,not_test +1073,29.0,45.808113,23.889782,37.354458,38.913790000000006,22.34074,12.528271,not_test +1074,30.0,30.055415999999997,41.3199,33.839054,34.25854,40.83511,39.885826,not_test +1075,28.0,33.015038,46.32555,39.635999999999996,36.28315,49.298264,44.670155,not_test +1076,30.0,33.26426,52.705788,43.16533,42.671005,48.18872,50.9123,not_test +1077,27.0,36.17268,57.599213,44.23636,47.048004,45.451733000000004,56.095397999999996,not_test +1078,23.0,41.537827,59.521828,46.60971,47.415356,51.775993,58.650695999999996,not_test +1079,23.0,43.247153999999995,59.054314,46.67295,49.665065999999996,70.82544,58.67675,not_test +1080,30.0,27.186870000000003,58.888687,28.264177,28.269985,58.103237,57.39309,not_test +1081,30.0,26.982046,59.46638000000001,29.114304999999998,27.728544,62.184909999999995,57.300647999999995,not_test +1082,31.0,27.44309,58.564907,31.751719,32.587353,70.01681500000001,56.04806,not_test +1083,30.0,30.839679999999998,56.682480000000005,35.721233000000005,33.506668,73.215645,54.336025,not_test +1084,51.0,42.366978,54.443516,38.724334999999996,37.037247,65.34082,52.738567,not_test +1085,45.0,40.10808,52.289333,41.635661999999996,39.57455,47.535107,51.40578,not_test +1086,49.0,44.55901,53.891247,44.67327,41.814983000000005,56.828518,55.491882,not_test +1087,36.0,46.248024,53.970943000000005,44.708252,41.381977,57.236053000000005,53.651253000000004,not_test +1088,25.0,46.773315000000004,53.065063,43.4789,38.70646,58.214325,50.292846999999995,not_test +1089,19.0,40.98638,50.78897,38.569458000000004,35.370537,55.668613,45.314037,not_test +1090,18.0,38.03257,47.622902,36.2931,32.657059999999994,47.532740000000004,40.014957,not_test +1091,16.0,29.123692,44.79965,32.536304,30.682821,36.121834,36.6038,not_test +1092,17.0,17.626143,15.04277,19.429024,18.5315,10.017071000000001,13.187889000000002,not_test +1093,15.0,20.010983,16.25905,19.649467,19.361407999999997,12.803413,13.941689000000002,not_test +1094,16.0,22.993270000000003,18.785528,20.921108,21.899148999999998,11.212429,15.472744,not_test +1095,20.0,25.713406,21.063848,22.935598000000002,26.330467,10.068961999999999,17.246983,not_test +1096,22.0,30.623852000000003,22.920073000000002,27.511288,30.961304,16.05425,19.275038000000002,not_test +1097,20.0,36.8984,25.371617999999998,37.69004,40.283634,31.520390000000003,21.810873,not_test +1098,21.0,23.076319,34.69105,26.101604000000002,27.841034000000004,35.704597,34.902508000000005,not_test +1099,33.0,26.816853000000002,38.66585,31.670753,29.425383,46.33905,36.34152,not_test +1100,33.0,26.095110000000002,43.994892,36.968708,34.958557,43.286213000000004,38.884777,not_test +1101,31.0,30.780575,48.38941,40.22461,41.090804999999996,42.800175,41.698532,not_test +1102,33.0,32.974724,50.74673,43.754784,44.871414,61.556422999999995,44.345504999999996,not_test +1103,38.0,41.590317,51.5645,44.131565,51.780277000000005,100.88149,46.790127000000005,not_test +1104,40.0,38.95881,49.601547,42.986713,37.296721999999995,49.246403,50.560658000000004,not_test +1105,42.0,41.533813,48.353226,41.895588000000004,42.805237,44.539913,51.225777,not_test +1106,41.0,44.4814,46.279990000000005,44.22548,50.556248,48.553383000000004,51.615970000000004,not_test +1107,36.0,38.422894,44.43338,46.445793,52.915259999999996,52.71368399999999,51.300270000000005,not_test +1108,76.0,53.73356999999999,43.275826,47.676790000000004,52.826809999999995,47.513287,49.965485,not_test +1109,73.0,43.387135,42.52544,46.78396,51.67935,30.936890000000002,47.76878,not_test +1110,73.0,66.71128,29.481640000000002,71.14299,66.91644000000001,31.66865,28.958931,not_test +1111,79.0,58.339893000000004,26.327282,66.835655,64.13571999999999,36.01896,23.447056,not_test +1112,72.0,56.451384999999995,23.173964,58.8535,56.44283000000001,35.112045,17.902647,not_test +1113,58.0,44.5737,20.7929,48.044154999999996,52.53041999999999,27.23132,14.287857,not_test +1114,32.0,34.914177,20.072477,39.896854,46.31629,16.230488,13.696053,not_test +1115,17.0,26.475368,21.532953,32.11797,31.81342,9.043014999999999,15.834166,not_test +1116,18.0,15.773487,18.408527,18.492935,20.326227,16.19088,18.151781,not_test +1117,23.0,17.21179,21.471941,19.18909,20.586773,21.125173999999998,20.607935,not_test +1118,27.0,21.46653,26.048119,19.993126,21.740225,18.510357,24.649202,not_test +1119,22.0,23.611565,30.407428999999997,22.986244,24.206219,17.349905,28.65731,not_test +1120,22.0,26.866903000000004,33.699158000000004,26.209835,26.891315000000002,27.710891999999998,31.619907,not_test +1121,25.0,32.239807,36.107883,30.496909999999996,31.745584,51.32525,33.48452,not_test +1122,30.0,25.768704999999997,37.245135999999995,29.902561,28.865546999999996,36.278473,35.42355,not_test +1123,27.0,28.808228000000003,37.64143,33.697952,29.920156,37.0717,35.78245,not_test +1124,30.0,28.885975,38.327156,35.837959999999995,33.474426,31.18563,36.10938,not_test +1125,12.0,31.855495,39.03563,36.913578,36.478767,25.544506,36.577259999999995,not_test +1126,12.0,32.817734,39.56798,39.54338,37.663933,27.897872999999997,37.197453,not_test +1127,21.0,41.644154,39.892140000000005,40.526558,39.562534,40.30632,37.740320000000004,not_test +1128,29.0,25.810024,32.121759999999995,28.328709000000003,26.347378000000003,28.990965000000003,27.651636,not_test +1129,27.0,28.061615000000003,34.726833,30.251331,26.617565000000003,32.7623,28.297521999999997,not_test +1130,26.0,30.258675,37.04167,35.683334,30.226490000000002,37.59049,28.825522999999997,not_test +1131,17.0,28.739893,37.403572,39.346340000000005,31.61808,39.636565999999995,27.926344,not_test +1132,14.0,44.824165,35.440186,42.4867,34.339207,37.213436,25.559217,not_test +1133,21.0,37.813957,32.367973,43.086056,36.660515000000004,32.08468,23.121134,not_test +1134,25.0,24.550947,49.364643,25.81157,25.699112,50.467605999999996,48.834915,not_test +1135,27.0,23.840729,41.643359999999994,27.4815,26.380665000000004,44.705086,40.51662,not_test +1136,25.0,22.618351,32.526140000000005,26.893859999999997,26.400652,40.2811,29.458121999999996,not_test +1137,19.0,20.138727,26.023429999999998,24.7612,23.792366,35.942257,20.522036,not_test +1138,22.0,18.58775,23.895585999999998,22.68989,21.77811,29.936740000000004,16.944056,not_test +1139,15.0,14.310524,24.950775,20.48115,19.953066,22.327552999999998,18.578861,not_test +1140,11.0,14.360879999999998,29.651949,14.671932,16.098475,25.829025,28.070652000000003,not_test +1141,11.0,16.222036,32.906178000000004,15.271856,15.877918,30.404644,30.858704,not_test +1142,11.0,18.95774,37.226234000000005,16.61311,17.879066,35.674538,34.118491999999996,not_test +1143,12.0,21.532848,40.52268,18.7238,20.680815,39.584736,36.250175,not_test +1144,15.0,25.992596,41.876247,22.731254999999997,23.7365,42.116386,36.80525,not_test +1145,26.0,32.743767,41.930607,31.629170000000002,30.061490000000003,44.723106,36.601074,not_test +1146,36.0,28.848305,31.82896,37.59272,32.513490000000004,29.928524,31.351564,not_test +1147,42.0,32.355540000000005,32.440426,45.112488,38.06337,33.714745,32.580909999999996,not_test +1148,44.0,35.18593,33.196020000000004,50.626232,44.411570000000005,30.913387,33.472590000000004,not_test +1149,42.0,44.885212,34.039562,49.767371999999995,50.78222,26.597519000000002,34.08317,not_test +1150,56.0,72.0947,35.075108,50.93698,54.71187,28.018314,34.524925,not_test +1151,57.0,52.364193,36.350646999999995,50.810074,54.42563199999999,38.362770000000005,34.760532,not_test +1152,44.0,47.35651,36.176643,46.874146,48.286957,36.154540000000004,35.213406,not_test +1153,31.0,42.963425,40.829136,40.354427,52.60649,45.561893,39.451797,not_test +1154,33.0,44.881298,45.678123,38.472332,53.632202,46.955985999999996,43.90325,not_test +1155,55.0,31.041667999999998,48.444340000000004,38.784667999999996,51.518227,45.26583,46.422707,not_test +1156,54.0,45.908604,48.542103000000004,39.242165,50.923446999999996,48.816208,46.295788,not_test +1157,52.0,32.889988,47.249477,38.695038000000004,48.449259999999995,61.674065,44.56177,not_test +1158,33.0,49.88726,26.011345000000002,36.35115,43.485240000000005,25.166512,24.156887,not_test +1159,29.0,41.040496999999995,25.452755,29.168590000000002,29.861835,29.010624,23.654343,not_test +1160,22.0,34.627083,25.118526,24.042526000000002,24.225153,27.712367999999998,23.537357,not_test +1161,15.0,24.680382,24.861685,20.606161,20.422886,24.828556,23.625988,not_test +1162,11.0,18.838036,24.903326,18.431063,18.855165,25.954197,23.822933,not_test +1163,16.0,11.54077,25.655499,16.359756,16.827692000000003,33.825905,24.179973999999998,not_test +1164,15.0,13.388531,20.207710000000002,15.768391000000001,15.225019,17.748207,19.863754,not_test +1165,15.0,14.416323,21.562954,15.877251000000001,15.379593,20.546373000000003,20.816229999999997,not_test +1166,17.0,16.600065,23.874111,17.069387,16.597946,20.287643,22.129070000000002,not_test +1167,20.0,19.052841,25.737043,18.581789,19.005157,19.336945999999998,22.894356,not_test +1168,24.0,23.795214,26.553877000000004,21.893320000000003,21.772125,21.820295,22.936546,not_test +1169,27.0,29.888275,26.81588,27.309321999999998,27.721418,29.834799,22.853928,not_test +1170,38.0,26.654296999999996,33.337559999999996,29.304802000000002,27.494356,34.068752,32.07488,not_test +1171,35.0,28.088352,33.248577000000004,32.02039,31.047271999999996,36.242134,31.979836,not_test +1172,36.0,29.330040000000004,33.170353000000006,34.47187,35.053017,31.952301000000002,31.621384000000003,not_test +1173,39.0,32.451115,33.280823,35.10297,36.269913,26.832828999999997,31.447971000000003,not_test +1174,38.0,41.989902,33.519226,36.997609999999995,36.342040000000004,27.621291999999997,31.768803000000002,not_test +1175,52.0,35.291325,33.631107,37.060806,38.320633,36.517715,32.48023,not_test +1176,64.0,59.360542,35.2957,51.414272,49.660957,33.824954999999996,34.54197,not_test +1177,75.0,50.55883,35.920124,47.763275,53.53756,32.56635,35.605183000000004,not_test +1178,93.0,52.629463,35.61058,46.70455,55.165863,33.463029999999996,35.723602,not_test +1179,77.0,38.03085,34.22685,45.101334,53.52800799999999,33.453540000000004,34.366904999999996,not_test +1180,68.0,40.845515999999996,32.201492,44.414734,52.920677000000005,29.926718,32.005276,not_test +1181,80.0,31.850487,30.341772,41.817271999999996,50.753204,23.213268,29.867440000000002,not_test +1182,64.0,72.24895,47.729003999999996,74.76401,68.17135999999999,50.092354,49.752148,not_test +1183,41.0,67.57373,43.998084999999996,66.14749,62.847378000000006,44.918278,46.670464,not_test +1184,33.0,64.12017,39.764336,55.94951,51.640609999999995,43.32578,41.77925,not_test +1185,40.0,56.62275,36.625609999999995,45.696396,45.580276,41.919678000000005,37.072371999999994,not_test +1186,40.0,44.819763,35.2238,32.736267,37.58893,36.637665000000005,34.109734,not_test +1187,37.0,32.54104,35.116375,22.664803,23.961327,26.834309,33.2403,not_test +1188,29.0,30.459202,25.611748000000002,29.419790000000003,26.87667,22.82816,23.562885,not_test +1189,27.0,21.35577,27.074762,23.244979999999998,21.014633,26.39766,24.130981,not_test +1190,29.0,22.690565,29.037203,21.413548000000002,20.441761,25.50887,25.104824,not_test +1191,35.0,23.328487,30.543422999999997,22.421995000000003,22.208555,24.507818,25.719568,not_test +1192,44.0,28.691343,31.568665000000003,24.752966,25.604107,29.068668,25.882069,not_test +1193,28.0,39.100452000000004,32.826809999999995,28.427711,30.656137,40.951546,26.164433,not_test +1194,26.0,26.104773,10.556425,29.554539000000002,30.680176,7.846937,9.930529,not_test +1195,26.0,27.56768,10.887871,30.820002000000002,32.75665,11.571701,9.226429,not_test +1196,23.0,28.793665,12.955032000000001,32.801456,35.438472999999995,10.720464999999999,9.515713,not_test +1197,31.0,30.658733,15.974217999999999,33.67091,35.70408,9.208929,11.180178,not_test +1198,25.0,40.412440000000004,19.952091,36.23292,35.324913,13.91857,14.957033,not_test +1199,20.0,30.887767999999998,25.245506,37.13726,36.887363,28.387012,20.987085,not_test +1200,21.0,21.632788,22.372326,24.097683,21.782146,15.986157999999998,19.181086999999998,not_test +1201,22.0,21.379694,25.081598,23.212276,22.860378,24.439777,20.399935,not_test +1202,23.0,22.994316,27.486382,24.491493,27.43295,23.09686,21.257458,not_test +1203,30.5,22.727837,27.767235,26.414484,29.76582,17.33597,20.419785,not_test +1204,38.0,34.454105,26.190620000000003,27.979815000000002,32.647846,17.921684,18.356482999999997,not_test +1205,42.0,29.119473,24.81725,30.870316,33.51528,31.621065,17.017326,not_test +1206,44.0,43.51758,19.842709,39.900627,42.556290000000004,16.94746,19.368088,not_test +1207,35.0,41.558495,17.762306,38.283348,40.13273,18.54802,18.813698000000002,not_test +1208,28.0,38.162804,17.934479,35.02558,36.009678,16.211634,20.346474,not_test +1209,20.0,32.43685,19.900617999999998,29.149620000000002,32.622818,13.708784,23.606535,not_test +1210,14.0,28.736269,22.424099,26.349953000000003,29.306068,16.272160999999997,26.891209000000003,not_test +1211,12.0,21.45672,24.366564,23.098118,22.116129,25.983747,28.268096999999997,not_test +1212,16.0,10.995832,14.919591,13.682901000000001,14.52565,13.301905,12.671186,not_test +1213,14.0,11.787638000000001,16.459263,14.093345999999999,14.617149,16.021523000000002,15.290871,not_test +1214,15.0,15.727028,19.426807,14.973054999999999,15.652285000000001,14.853897,18.61541,not_test +1215,15.0,17.31943,22.353046,17.508882999999997,17.963463,14.493070000000001,21.045765,not_test +1216,16.0,20.329174,24.226042,20.316078,20.041718,20.287437,22.049387,not_test +1217,24.0,24.894268,25.00917,23.763927,23.945938,33.200462,22.293728,not_test +1218,24.0,22.230028,39.722363,23.750975,24.241003,39.319702,40.157734000000005,not_test +1219,19.0,24.54544,39.17536,25.795536,25.350132000000002,42.98693,39.539383,not_test +1220,22.0,24.932114000000002,38.291077,26.296545000000002,27.879609999999996,38.179813,38.03994,not_test +1221,21.0,26.802376000000002,37.75679,26.402489000000003,29.360846000000002,31.525159999999996,37.037415,not_test +1222,16.0,27.243723,37.480579999999996,27.80937,29.489878000000004,31.39616,36.866028,not_test +1223,17.0,33.625175,36.773277,27.40633,29.077194,40.950485,36.649066999999995,not_test +1224,20.0,16.79662,45.022083,20.676094,17.867739999999998,51.638474,50.15625,not_test +1225,22.0,16.635227,43.528374,19.456782999999998,17.667007,47.900642,49.57177,not_test +1226,21.0,17.3726,40.40378,20.072472,20.012035,47.697144,46.3844,not_test +1227,21.0,18.11052,36.579277000000005,21.129177,19.593609,46.677597,42.347775,not_test +1228,28.0,23.462833,32.977245,21.802734,20.763853,39.611702,39.0658,not_test +1229,37.0,27.273553999999997,30.215412,25.360065,23.258408,25.524206,37.079871999999995,not_test +1230,34.0,33.317036,11.65386,34.990845,38.419193,10.171880999999999,12.074404,not_test +1231,41.0,34.584267,12.648436,34.428065999999994,35.39072,12.0435915,11.970911,not_test +1232,42.0,34.509159999999994,14.429364000000001,32.497690000000006,32.671932,10.8070545,12.50178,not_test +1233,37.0,30.082705999999998,15.795707,28.006970000000003,29.59137,9.737686,13.3859,not_test +1234,19.0,25.474184,16.746323,25.78388,26.854378000000004,13.416257,14.712720999999998,not_test +1235,14.0,18.378235,18.28002,22.88007,20.130592,23.535736,16.721348000000003,not_test +1236,15.0,12.588664999999999,29.714066,14.661066,14.674807000000001,27.976440000000004,27.638506,not_test +1237,13.0,11.190779,34.66652,14.871726999999998,14.813333499999999,37.4484,31.669895,not_test +1238,18.0,15.295879000000001,39.820617999999996,15.479926999999998,15.552589000000001,39.040894,36.700268,not_test +1239,20.0,17.320295,43.235558000000005,17.817013,17.401267999999998,39.92306,40.935534999999994,not_test +1240,21.0,20.46708,44.314617,20.261854,19.311756,48.797066,43.024395,not_test +1241,20.0,24.158417,43.886295000000004,23.060938,23.291553,67.50015,42.724533,not_test +1242,25.0,22.7794,39.72722,24.033203,23.299423,37.3096,38.19101,not_test +1243,27.0,25.452011,38.220524,28.366495,25.972393,35.073679999999996,37.132785999999996,not_test +1244,40.0,26.476812,37.170662,31.059672999999997,31.118571999999997,38.804534999999994,36.308563,not_test +1245,39.0,29.560345,36.974915,32.1023,34.216103000000004,42.466774,35.90268,not_test +1246,38.0,30.59706,37.088905,34.25313,34.17378,39.511513,35.566646999999996,not_test +1247,33.0,40.924553,36.587315000000004,34.485012,34.258762,28.560987,34.819508,not_test +1248,39.0,31.092287,57.305935,30.678984000000003,30.809559000000004,59.70966,64.66901999999999,not_test +1249,45.0,33.609512,54.20584,29.310809999999996,33.89027,52.436882,61.378319999999995,not_test +1250,26.0,38.216248,48.241745,31.184708,38.485209999999995,52.048965,52.733803,not_test +1251,35.0,43.110279999999996,41.260273,32.826843,39.855564,52.25962,42.15367,not_test +1252,36.0,48.724026,34.948006,34.24702,40.881958000000004,45.049853999999996,33.58615,not_test +1253,42.0,38.937675,30.278063,34.09251,39.96849,28.276659999999996,29.334716999999998,not_test +1254,41.0,37.225193,35.385357,39.074696,40.536685999999996,37.693207,36.347607,not_test +1255,39.0,36.792328000000005,35.57673,36.87297,38.17334,40.554109999999994,35.583121999999996,not_test +1256,44.0,35.476279999999996,35.955845000000004,33.583332,34.158817,44.79867,34.65269,not_test +1257,32.0,29.896452000000004,36.307487,28.073896,31.123503000000003,45.56583,34.143177,not_test +1258,32.0,24.310658,36.943670000000004,25.605112,28.586367,40.49005,34.571957,not_test +1259,27.0,17.440826,38.359913,22.637516,20.891426,31.838822999999998,35.96716,not_test +1260,31.0,25.727220000000003,49.40484,24.84082,21.081229999999998,48.67646,48.235054,not_test +1261,26.0,19.280160000000002,51.711338,20.725956,20.883361999999998,51.564743,47.193047,not_test +1262,28.0,19.729961,52.576187,20.62888,21.018398,39.915768,45.422283,not_test +1263,22.0,21.403097,52.169067,21.036076,22.540979999999998,27.091309000000003,44.349056,not_test +1264,25.0,24.388282999999998,51.385563,23.208004000000003,25.241789,28.763302000000003,44.737835,not_test +1265,30.5,31.280072999999998,51.07182,26.252213,28.731232000000002,49.935574,46.133167,not_test +1266,36.0,31.65039,30.763552,34.005962,35.733096999999994,25.790728,27.685713,not_test +1267,44.0,31.612070000000003,35.280440000000006,33.73153,37.616946999999996,35.75773,30.644567,not_test +1268,42.0,34.822722999999996,40.785614,34.704113,38.197105,35.188763,33.842194,not_test +1269,48.0,37.883465,44.419464000000005,34.22926,37.929885999999996,31.100720000000003,35.457798,not_test +1270,49.0,45.395798,45.29397,35.15511,37.782257,35.431521999999994,35.55475,not_test +1271,56.0,32.327835,44.816654,33.528206,37.51462,54.311930000000004,35.797142,not_test +1272,62.0,56.218674,44.637135,45.669327,49.633762,45.177776,42.151142,not_test +1273,63.0,43.064808,42.986706,38.39765,43.635025,41.50714,41.265945,not_test +1274,62.0,43.957275,40.75642,34.066917,40.220566,47.92825,40.104923,not_test +1275,58.0,30.193792,38.72964,31.813303,37.35902,54.888909999999996,38.860065000000006,not_test +1276,43.0,36.929474,37.052009999999996,31.000722999999997,38.707012,51.222603,37.424766999999996,not_test +1277,35.0,26.889006,35.38859,30.773869,37.093517,33.722908000000004,35.660625,not_test +1278,38.0,34.049145,19.547028,28.480878999999998,34.853165000000004,16.704546,18.543598,not_test +1279,36.0,29.803974,20.672089,24.97093,29.022953,19.267687,19.596571,not_test +1280,42.0,28.766434000000004,23.663063,21.516766,24.6572,18.83558,22.176464000000003,not_test +1281,40.0,22.174725,26.895489,19.345126999999998,21.703135,18.86338,25.179226,not_test +1282,56.0,19.340466,29.309340999999996,17.866802,20.808792,24.148670000000003,27.617714000000003,not_test +1283,54.0,13.175598,30.926056,16.221071,19.4326,36.25535,29.096984999999997,not_test +1284,47.0,45.049397,26.729687,40.66001,36.909794,25.527523000000002,23.812182999999997,not_test +1285,34.0,27.32457,26.735039,29.641416999999997,26.11091,28.048192999999998,24.52456,not_test +1286,35.0,28.336885,27.204506,24.43969,23.947731,25.356722,25.763372,not_test +1287,50.0,24.935707,28.176727000000003,23.841435999999998,24.503020000000003,21.768223000000003,27.604631,not_test +1288,42.0,30.134012,29.413517,25.581589,26.9245,23.053642,29.530289,not_test +1289,51.0,40.062527,30.479461999999998,28.668509000000004,32.348835,31.482037,30.622501,not_test +1290,62.0,43.546040000000005,20.644323,40.01867,46.821438,19.407463,19.776926,not_test +1291,40.0,41.748135,21.435627,34.935159999999996,39.36148,21.276054000000002,20.345917,not_test +1292,37.0,45.62893,23.372032,33.34792,37.528209999999994,21.136505,22.112842999999998,not_test +1293,47.0,38.426536999999996,25.513748,32.482403000000005,37.66056,20.856742999999998,24.517135999999997,not_test +1294,62.0,48.231697,27.110678000000004,34.129032,40.3112,23.171831,26.822433,not_test +1295,50.0,23.112152,27.999727000000004,32.418102000000005,44.09834,29.128521000000003,28.457964,not_test +1296,48.5,46.586166,30.994843,40.679726,44.04461,32.01078,31.484709999999996,not_test +1297,47.0,34.465565000000005,28.697778999999997,32.894352000000005,39.523376,27.722465999999997,29.436148,not_test +1298,52.0,31.554892,25.44817,30.244346999999998,37.68517,28.446894,26.51793,not_test +1299,49.0,22.829517000000003,22.662159,29.137334999999997,37.1977,30.537094,23.98934,not_test +1300,51.0,33.700146000000004,21.251972,28.696283,38.81986,28.749863,22.595854,not_test +1301,43.0,24.72694,21.172764,28.89337,37.304504,20.918426999999998,22.23086,not_test +1302,33.0,46.2138,16.182709,42.8168,40.423973,15.172482,17.187342,not_test +1303,30.0,39.036648,17.501877,35.032641999999996,33.856625,17.477192000000002,19.05627,not_test +1304,32.0,37.257305,19.491884,29.43331,28.215709999999998,16.810005,21.963963,not_test +1305,26.0,31.579240000000002,21.086761,24.396182999999997,24.838404,16.426859,24.519665,not_test +1306,14.0,27.372320000000002,21.959705,22.177985999999997,22.930048,20.487131,25.593726999999998,not_test +1307,16.0,21.4054,22.603304,19.989407,20.760051999999998,30.158539,25.008734,not_test +1308,18.0,14.130175,28.690973,16.602037,16.016023999999998,27.755979999999997,28.912670000000002,not_test +1309,23.0,15.548143,29.442114,16.564135,16.277442999999998,34.290108000000004,29.228959999999997,not_test +1310,25.0,18.23416,29.208717,18.194794,17.559723,32.601128,29.319584000000003,not_test +1311,36.0,20.872145,28.255964000000002,19.762629999999998,19.855026000000002,27.754711,29.494362,not_test +1312,53.0,24.65044,27.163805,22.961472,22.289407999999998,27.665429999999997,29.574749,not_test +1313,54.0,30.175276,26.419341999999997,28.208744,27.148317,36.29589,29.034359999999996,not_test +1314,59.0,51.907955,43.341644,69.82469,53.72486,43.90186,43.40853,not_test +1315,73.0,56.942814,41.415993,70.34076,52.32345,41.098273999999996,41.738754,not_test +1316,81.0,61.1794,38.922977,72.647514,53.822823,42.303467,39.37871,not_test +1317,65.0,45.174240000000005,37.10849,71.61307,53.812576,43.982475,37.504529999999995,not_test +1318,70.0,49.480470000000004,36.241505,70.24083,53.590042000000004,41.527733000000005,36.423744,not_test +1319,106.0,35.16364,35.656437,70.41806,51.244972,33.40037,35.579421999999994,not_test +1320,103.0,83.95779399999999,35.756096,78.648575,75.04806500000001,35.72545,34.8746,not_test +1321,104.0,70.87640999999999,33.386573999999996,70.33792,62.043457,29.500942,29.242977000000003,not_test +1322,82.0,68.191086,28.646479,61.757027,54.043130000000005,28.713466999999998,22.280056,not_test +1323,9.0,56.20816,23.375061,54.76688000000001,46.06415,30.482328000000003,16.79486,not_test +1324,9.0,50.403220000000005,19.904789,50.716305,44.074,29.618599,14.824285999999999,not_test +1325,29.0,38.383045,19.6309,46.828182,42.043834999999994,23.300732,16.517532,not_test +1326,29.0,37.512833,23.049457999999998,39.11225,30.812325,23.630598000000003,25.390448000000003,not_test +1327,26.0,34.43662,23.251303,37.753605,30.870508,25.603807,25.085764,not_test +1328,19.0,33.17993,24.211105,34.176525,28.20642,23.642572,25.065233,not_test +1329,18.0,26.549570000000003,25.507164000000003,28.682314,25.436699,21.678729999999998,25.595522,not_test +1330,14.0,24.379993,26.914285999999997,25.413104999999998,23.999878,24.557287,26.76495,not_test +1331,12.0,17.810617,28.429409000000003,22.00535,22.632088,33.722675,28.320988,not_test +1332,9.0,14.433529,41.28898,14.924131,14.2959,40.785973,42.286235999999995,not_test +1333,7.0,14.620342,43.514590000000005,14.582272,14.873442,44.359627,41.913578,not_test +1334,9.0,18.535587,44.53257,16.51446,16.446407,47.689278,40.93482,not_test +1335,11.0,21.703278,44.26072,19.043160999999998,19.415052,48.05403,40.056315999999995,not_test +1336,14.0,25.741024,43.213432,23.363083,22.213345,44.300674,39.66785,not_test +1337,29.0,33.10525,42.06239,29.220955,28.752375,37.89325,39.615685,not_test +1338,35.0,34.577034000000005,55.99989,41.611538,34.951603000000006,57.524756999999994,56.738823,not_test +1339,31.0,38.288143,53.977238,48.324090000000005,41.966522,52.80803,53.702009999999994,not_test +1340,36.0,42.30489,51.462967,55.007780000000004,49.592785,52.250679999999996,49.786446000000005,not_test +1341,42.0,53.365387,49.58404,53.868134,59.540732999999996,52.66056999999999,46.90463,not_test +1342,41.0,81.69336,48.372153999999995,54.711783999999994,62.86959,49.231804,45.668518,not_test +1343,70.0,67.8883,47.035748,54.551871999999996,61.52180500000001,40.067345,45.255672,not_test +1344,65.5,71.576614,42.361717,68.08748,69.227264,47.558723,41.774364,not_test +1345,61.0,64.04431,41.00679,61.008796999999994,68.491295,40.936146,40.37015,not_test +1346,57.0,75.02991,38.87314,57.110459999999996,66.40056,41.190445000000004,38.13662,not_test +1347,53.0,57.016113,36.638626,52.592583,61.88163,43.587765000000005,35.827858,not_test +1348,56.0,60.185593000000004,35.086240000000004,50.502922,59.032867,41.139744,34.20252,not_test +1349,47.0,41.822006,34.692627,47.00212,55.07773,30.893208,33.647007,not_test +1350,35.0,49.996196999999995,34.476547,44.743988,40.486683,34.17265,34.910877,not_test +1351,27.0,42.524273,35.567153999999995,37.169956,35.193478000000006,35.815661999999996,34.039776,not_test +1352,26.0,39.961475,37.668552000000005,31.130009,28.741606,34.24695,34.33911,not_test +1353,32.0,33.367596,40.011227000000005,25.577835,24.65259,33.66639,35.792313,not_test +1354,31.0,28.942833,42.16789,23.173279,23.066422,38.556459999999994,37.796165,not_test +1355,29.0,21.966704999999997,44.12795,20.594186999999998,21.281285999999998,49.51355,39.520557000000004,not_test +1356,21.0,29.320821999999996,39.425743,29.363097999999997,22.154041,36.576637,38.251083,not_test +1357,16.0,23.061037,40.867717999999996,23.121735,20.214985000000002,38.347313,38.3221,not_test +1358,16.0,24.487705,42.286246999999996,21.491343,20.779472,36.5346,38.995564,not_test +1359,15.0,25.672178,42.68773,23.155645,22.88636,35.321735,39.476112,not_test +1360,21.0,28.757267,42.230877,25.922682000000002,26.038296,39.635838,39.561904999999996,not_test +1361,23.0,38.01146,42.027996,29.727375,30.837190000000003,50.650913,39.776016,not_test +1362,27.0,23.693932,45.78523,25.493408,25.863867000000003,44.09578,45.458775,not_test +1363,27.0,25.631119,43.222396999999994,28.685485999999997,27.626648,44.660804999999996,42.45275,not_test +1364,26.0,26.188599,41.002274,29.863884000000002,31.687927000000002,38.986584,39.784434999999995,not_test +1365,29.0,25.938602,40.079746,30.433767,34.48372,31.865795000000002,38.611446,not_test +1366,35.0,30.74046,40.641937,32.39836,34.21428,30.364528999999997,39.09111,not_test +1367,32.0,30.125009999999996,42.069472999999995,32.73,35.397240000000004,38.166183000000004,40.406653999999996,not_test +1368,32.0,34.559096999999994,28.66252,35.00907,32.38975,26.465176,27.409908,not_test +1369,37.0,35.746128000000006,29.983469,33.73451,38.657406,28.881709999999998,27.210587,not_test +1370,55.0,46.833424,31.751742999999998,36.015568,46.262570000000004,26.902178000000003,26.711059999999996,not_test +1371,66.0,43.502724,32.73082,37.20539,48.401657,24.492357000000002,25.595741,not_test +1372,71.0,56.500533999999995,32.980779999999996,38.581512,49.06292,27.396599,24.8051,not_test +1373,77.0,39.59693,33.64837,38.395786,47.757996,38.025433,25.798748,not_test +1374,74.0,77.48129,41.30107,70.493515,66.03788,43.665134,40.976467,not_test +1375,74.0,73.93131,43.472896999999996,62.882259999999995,62.21598,48.952282000000004,42.162777,not_test +1376,77.0,68.9917,45.32192,53.730619999999995,51.343792,41.778996,42.453857,not_test +1377,78.0,59.737033999999994,46.307278000000004,43.302234999999996,45.29517,33.27941,42.010338,not_test +1378,88.0,43.595055,46.32115,32.185623,37.49709,36.672543,41.2805,not_test +1379,90.0,30.197066999999997,45.6451,23.435682,24.103289999999998,55.952835,40.619034,not_test +1380,91.0,94.36882,58.177025,60.921772,75.43536,60.49361999999999,58.538498,not_test +1381,93.0,85.88898,54.666855000000005,41.242214000000004,67.113754,55.836365,54.827659999999995,not_test +1382,80.0,75.393845,50.333176,31.310968,56.767357,56.950077,50.892406,not_test +1383,82.0,36.742954,47.04827,27.431894,51.01656,57.81305,48.316272999999995,not_test +1384,86.0,42.488766,45.42842,28.583090000000002,50.291183000000004,51.717117,47.438686,not_test +1385,73.0,66.7437,44.74879,34.737133,54.336838,37.5201,47.421288,not_test +1386,56.0,61.281257999999994,1.8900986000000002,65.41484,72.05897,5.889576,9.624847,not_test +1387,42.0,59.11779,5.0983315000000005,64.99584,73.35045,14.826778,11.327709,not_test +1388,43.0,66.25978,8.957535,65.11551999999999,64.17487,13.379002,14.144123,not_test +1389,47.0,50.42394,10.038826,58.794373,62.086684999999996,6.971275299999999,14.849735,not_test +1390,48.0,57.40943000000001,9.330036,53.616733999999994,62.139977,8.116272,13.031818,not_test +1391,66.0,29.66106,11.131771,46.367090000000005,59.837276,25.469303,11.369377,not_test +1392,51.5,70.150604,21.243845,59.02118000000001,63.762657,19.090324,19.381107,not_test +1393,37.0,52.826409999999996,22.731728,52.44323000000001,59.1497,23.347885,19.540081,not_test +1394,38.0,58.985836,26.179478,49.296684,54.759937,19.806379999999997,21.217203,not_test +1395,45.0,46.577324,30.018814000000003,46.646214,50.889275,15.921331,24.046968,not_test +1396,64.0,53.952946,33.76573,46.192345,49.59313,21.3221,27.765620000000002,not_test +1397,69.0,36.06345,37.909428000000005,45.0097,47.585136,39.231987,32.037136,not_test +1398,63.0,68.12288000000001,20.309788,64.81193,65.066864,15.823229000000001,19.539122,not_test +1399,62.0,57.94848,26.293407000000002,60.377216000000004,61.27036,24.742073,23.807123,not_test +1400,63.0,58.292816,34.092079999999996,53.20339,53.5984,24.880638,29.264677000000002,not_test +1401,60.0,51.251938,39.931896,42.461414000000005,47.307559999999995,23.54189,33.86558,not_test +1402,64.0,49.043232,42.392982,36.485237,38.779015,31.562328000000004,36.861923,not_test +1403,53.0,35.56142,42.903957,30.715597,26.046076,53.211353,38.831140000000005,not_test +1404,43.0,41.956635,42.830765,44.58461,38.58285,26.253220000000002,39.713375,not_test +1405,37.0,33.328762,44.158802,32.28221,33.091763,39.899159999999995,37.16772,not_test +1406,34.0,32.861717,44.142734999999995,29.902538,31.173227,45.181812,33.107105,not_test +1407,39.0,31.434446,42.245537,29.679209000000004,32.053272,40.70497,28.058002000000002,not_test +1408,43.0,35.313805,38.8978,32.102109999999996,35.102959999999996,33.377254,23.401134,not_test +1409,37.0,46.684807,35.377815000000005,35.878178000000005,40.010414000000004,32.507909999999995,20.798807,not_test +1410,38.0,34.51818,48.614216,39.63358,37.635895,51.110690000000005,51.931114,not_test +1411,42.0,35.747566,47.19789,37.24221,36.207405,54.12608,50.155296,not_test +1412,51.0,37.296326,44.64815,37.520893,38.506214,57.596019999999996,46.142379999999996,not_test +1413,47.0,39.13619,41.253414,38.33744,41.256626000000004,56.04521,41.481190000000005,not_test +1414,56.0,52.573597,37.400154,40.66682,41.515614,46.460907,37.501568,not_test +1415,47.0,33.67907,33.7142,39.075974,42.652126,31.390521999999997,34.69573,not_test +1416,58.0,46.233670000000004,28.867931,43.916946,39.812798,25.297833999999998,29.041925,not_test +1417,49.0,41.503029999999995,29.549332,34.221911999999996,35.400999999999996,28.452920000000002,29.466274,not_test +1418,35.0,37.532013,30.751026,33.1542,34.036120000000004,25.240788000000002,29.140396000000003,not_test +1419,36.0,30.55459,31.674438000000002,33.796127,32.31469,21.589045000000002,28.316990000000004,not_test +1420,37.0,43.380787,32.093636,34.313625,32.733677,25.369604000000002,27.966124,not_test +1421,44.0,34.088276,32.423294,36.859245,36.175872999999996,39.45285,28.962128000000003,not_test +1422,39.0,42.18205,26.123053,36.485237,44.2878,25.81755,26.036541,not_test +1423,36.0,40.553764,30.936884000000003,33.566788,39.234795,33.754578,29.447193,not_test +1424,28.0,39.793240000000004,36.780037,29.851260999999997,34.129932000000004,30.983459999999997,33.748013,not_test +1425,16.0,34.00128,41.818059999999996,27.44104,30.474297999999997,28.189021999999998,38.03478,not_test +1426,12.0,31.858292,45.251183000000005,25.897226,28.909508000000002,37.974434,41.7247,not_test +1427,12.0,24.64122,47.343826,23.919483,27.153022999999997,63.30771,44.47497,not_test +1428,11.0,10.654392,37.054764,13.1282215,13.278445999999999,31.657488,36.174057,not_test +1429,10.0,12.262836,38.1962,14.1103,14.711498,36.717693,36.121452000000005,not_test +1430,14.0,16.078901000000002,39.081062,15.417339000000002,17.100063000000002,32.271706,35.431746999999994,not_test +1431,15.0,19.862192,39.204678,19.364237,22.850014,25.797468,34.240765,not_test +1432,20.0,24.567038,38.50528,23.194933,28.27161,27.488358,33.038540000000005,not_test +1433,31.0,33.263058,37.418724,33.661575,38.83129,41.53485,32.39333,not_test +1434,59.0,34.58067,60.112114,33.760773,37.301429999999996,63.73568,59.91754,not_test +1435,41.0,35.71247,57.867447,39.971283,39.4899,51.644386,57.67643399999999,not_test +1436,34.0,38.18135,53.969894,45.317398,46.96239,49.64208,53.195693999999996,not_test +1437,26.0,41.629303,49.261265,47.958492,55.919224,51.99569,48.04766,not_test +1438,35.0,57.351659999999995,43.770959999999995,51.708263,59.440580000000004,47.830006,43.19882,not_test +1439,32.0,35.565746000000004,37.399615999999995,51.83119,58.471621999999996,31.125408,38.860009999999996,not_test +1440,40.5,31.938465,72.26126,35.1397,31.700642,77.121346,79.71127,not_test +1441,49.0,32.859466999999995,66.61367,34.395153,37.045307,65.68968000000001,72.76951,not_test +1442,48.0,34.847609999999996,58.18944499999999,37.124043,43.082209999999996,63.73366,60.120224,not_test +1443,51.0,35.202503,50.5678,39.503033,46.0358,64.27346999999999,48.057953000000005,not_test +1444,67.0,49.10115,45.876472,41.69781,48.641135999999996,56.928619999999995,41.529804,not_test +1445,67.0,42.178864000000004,43.91434,43.584114,47.990875,37.725266,41.233955,not_test +1446,71.0,67.68029,74.80561999999999,61.049725,63.413414,81.03662,79.51361,not_test +1447,63.0,59.37986,71.208336,54.204933,52.59321,76.77866999999999,76.82733,not_test +1448,38.0,54.973395999999994,66.318115,46.023272999999996,39.376841999999996,78.081276,71.66385,not_test +1449,29.0,46.700058,62.500409999999995,36.661064,33.546577,78.16272,67.10927,not_test +1450,24.0,37.87453,61.055330000000005,32.316296,30.257595000000002,69.98284,64.944435,not_test +1451,20.0,29.273322999999998,61.580753,28.047204999999998,26.011059,52.952507,64.65266,not_test +1452,17.0,22.872086,46.356421999999995,20.26521,20.698544000000002,46.905132,48.646797,not_test +1453,14.0,21.856873999999998,48.330597,19.928537,21.009953,50.271515,48.65862,not_test +1454,18.0,26.04717,51.73677,22.196115,22.341831,45.53885,49.192238,not_test +1455,24.0,29.077171000000003,55.235626,24.847826,25.023628,41.14208,50.848618,not_test +1456,32.0,32.719691999999995,57.945744,29.507171999999997,27.496288,47.104656,53.848515,not_test +1457,36.0,41.650929999999995,59.77614200000001,35.351753,32.917583,66.17452,57.596180000000004,not_test +1458,35.0,35.753009999999996,72.23604,38.62413,38.082294,75.18904,73.12633000000001,not_test +1459,37.0,36.544926000000004,74.851425,44.097992,42.300064,81.11338,76.00856999999999,not_test +1460,34.0,38.104424,77.11589000000001,49.578182,45.501114,72.753876,77.957596,not_test +1461,38.0,41.095715000000006,78.03106,50.816463,46.509304,62.318817,79.40961,not_test +1462,43.0,52.81179,77.032455,53.789382999999994,47.583084,64.568596,80.47333,not_test +1463,53.0,37.293921999999995,74.41113,54.011753000000006,51.081497,84.35692,80.64245,not_test +1464,104.0,60.91684300000001,58.04056,61.1261,53.238234999999996,55.905032999999996,53.419309999999996,not_test +1465,98.0,53.55078,59.834866000000005,58.42345,58.132126,64.62819,54.698055000000004,not_test +1466,94.0,65.15456400000001,62.1013,58.09391,63.549130000000005,60.408319999999996,56.58193000000001,not_test +1467,85.0,51.38701,63.384980000000006,55.60805,63.635394999999995,53.399356999999995,57.84783,not_test +1468,62.0,67.372375,63.18421,54.7948,63.326015000000005,57.56609,57.972176,not_test +1469,53.0,46.07183,62.24415,52.222584000000005,61.17807,78.45281,57.444115000000004,not_test +1470,44.0,56.748413,38.066505,50.886635,51.29227,34.480263,38.976929999999996,not_test +1471,32.0,49.103,37.69164,43.673702,47.15802,36.779396000000006,39.27838,not_test +1472,31.0,46.632217,37.906128,37.43946,40.547596,36.29825,39.840270000000004,not_test +1473,23.0,40.172676,38.112602,31.078654999999998,35.730323999999996,35.309628000000004,40.297142,not_test +1474,18.0,36.770559999999996,38.612732,28.372108,29.214375,37.77368,40.612915,not_test +1475,16.0,27.752432000000002,40.27471,25.195948,25.967154999999998,45.70345,41.018055,not_test +1476,17.0,13.018425,44.530605,16.720024,16.071308,43.804140000000004,43.299717,not_test +1477,33.0,14.654851999999998,43.552284,16.586270000000003,16.551287,44.58882,43.90385,not_test +1478,32.0,19.76399,44.5463,19.056067000000002,18.617685,41.21135,45.63355,not_test +1479,25.0,23.939608,47.292175,21.723103,22.306831,40.0106,48.42804,not_test +1480,26.0,28.247192,50.99774,26.714031,25.726078,47.056297,52.025116,not_test +1481,26.0,34.406116,54.64179,33.548576000000004,33.403507,62.55684,55.783287,not_test +1482,24.0,29.192509,50.962590000000006,30.096968,30.4616,47.391273,46.667583,not_test +1483,26.0,31.318896999999996,53.552856000000006,33.20691,32.94385,53.70875,50.069546,not_test +1484,34.0,31.972942,55.88985,34.56275,38.220695,55.28431,54.028484,not_test +1485,36.0,32.864594,57.298435,35.54911,42.05558,55.497868000000004,56.520805,not_test +1486,28.0,44.41726,57.762604,38.69127,41.92885,58.997383,56.658640000000005,not_test +1487,31.0,34.417286,57.73335600000001,39.236515000000004,44.124943,67.242386,55.1618,not_test +1488,32.0,29.472873999999997,14.43449,31.861696000000002,28.240496000000004,11.587662,13.693114999999999,not_test +1489,33.0,28.177637,15.236593,30.398948999999998,29.488646999999997,14.035862,13.653828,not_test +1490,25.0,28.199131,17.412585999999997,32.17505,33.508765999999994,14.85985,14.538502,not_test +1491,24.0,27.886402,19.432322,34.299694,34.533176,15.935267999999999,16.060425,not_test +1492,37.0,39.83972,21.04875,36.126965000000006,37.078022,20.459592999999998,18.164864,not_test +1493,73.0,34.981544,23.216297,39.070434999999996,39.513943,29.73648,20.815485,not_test +1494,66.0,73.16445999999999,35.4529,66.92227,70.17994,34.589687,34.791866,not_test +1495,43.0,65.21947,37.993491999999996,64.2608,65.77764,38.64094,36.345444,not_test +1496,37.0,56.19939399999999,40.050796999999996,56.001125,55.991730000000004,33.753918,37.712092999999996,not_test +1497,28.0,43.651053999999995,40.81198,42.770195,49.943413,29.571606,38.414757,not_test +1498,12.0,32.23911,40.246975,35.243786,41.54685,36.276184,38.40766,not_test +1499,7.0,23.719566,39.014465,28.686397999999997,26.447384000000003,55.51619,38.000275,not_test +1500,10.0,7.6785507,30.335793,11.316347,11.702250999999999,28.612762,31.199322,not_test +1501,11.0,8.524818,30.183044,11.730595,13.617956,32.185524,30.717693,not_test +1502,13.0,14.328381,31.136728,13.806529999999999,15.225466,28.94932,31.221859000000002,not_test +1503,14.0,17.804095999999998,32.668420000000005,17.582073,19.280262,25.106762,32.661446000000005,not_test +1504,19.0,22.007804999999998,34.089264,22.155783,22.316738,28.515133000000002,34.308132,not_test +1505,23.0,29.927317,34.97488,28.318474,28.570567999999998,41.782825,35.228428,not_test +1506,23.0,24.454276999999998,60.639084,27.310875,28.305334000000002,64.09044,67.525345,not_test +1507,26.0,27.460114,54.878567000000004,30.329998,29.953156,55.11805699999999,59.345195999999994,not_test +1508,26.0,27.422493,45.41734,31.500109000000002,34.95405,52.945769999999996,45.813652000000005,not_test +1509,25.0,28.560833000000002,36.228813,32.325634,39.30146,51.819645,33.10301,not_test +1510,27.0,30.53326,30.131721000000002,34.885582,41.449135,43.787983000000004,25.957478,not_test +1511,34.0,38.952442,27.47918,34.732708,47.978626,26.43695,25.069622,not_test +1512,31.0,32.87475,17.84745,31.506649,28.26987,17.382414,17.158704999999998,not_test +1513,33.0,33.398476,19.360498,29.784640999999997,28.077415000000002,20.034585999999997,17.646852,not_test +1514,33.0,32.522617,22.748620000000003,31.079735,30.763714,19.247747,19.351791,not_test +1515,32.0,31.510921000000003,26.316313,32.746513,30.727608,18.739798,21.592285,not_test +1516,35.0,39.09588,29.310331,34.494972,32.517136,23.83559,23.998884,not_test +1517,42.0,37.222134000000004,32.114222999999996,36.911877000000004,35.12858,36.48581,26.528593,not_test +1518,47.0,42.046046999999994,42.023373,40.508125,43.158203,38.13241,38.061943,not_test +1519,44.0,41.179718,44.949646,38.638459999999995,38.43465,45.270714,39.790825,not_test +1520,25.0,40.340527,46.864596999999996,35.49508,33.763996,41.642509999999994,40.875923,not_test +1521,35.0,33.33041,47.523785,30.885078000000004,30.941634999999998,37.46217,41.543182,not_test +1522,29.0,30.285637,47.21875,28.504862,27.778412,44.23816,42.062805,not_test +1523,18.0,22.691893,46.414078,25.215310000000002,25.493214000000002,64.46027,42.400078,not_test +1524,17.0,17.297954999999998,94.56475999999999,17.782019000000002,18.711794,91.78961,100.31857,not_test +1525,35.0,17.45326,88.86151,17.496054,18.718536,74.4003,93.66617,not_test +1526,28.0,21.148070999999998,80.052246,19.408576999999998,19.890354000000002,69.821945,81.690216,not_test +1527,33.0,24.00581,72.59279000000001,22.15544,22.52056,71.70175,70.826126,not_test +1528,51.0,26.892181,67.785126,25.850887,25.354461999999998,66.66864,64.63055,not_test +1529,49.0,34.49528,63.69150500000001,30.111433,31.455069,46.792137,62.05195,not_test +1530,49.0,62.718709999999994,46.257393,49.49648,48.3099,45.84005,45.048344,not_test +1531,44.0,66.21642,44.796215000000004,47.283570000000005,51.606125,43.771534,42.894405,not_test +1532,44.0,70.16356,42.173626,47.912518,53.6725,46.385585999999996,38.80594,not_test +1533,50.0,57.371159999999996,38.22838,46.6065,55.5442,46.940132,33.924633,not_test +1534,46.0,67.55048000000001,33.869076,47.878029999999995,57.687927,39.516729999999995,29.981090000000002,not_test +1535,34.0,42.709724,30.79713,45.035446,62.16816,24.576118,28.374846999999995,not_test +1536,55.0,32.300841999999996,19.62481,34.581684,29.897928000000004,16.29467,20.66389,not_test +1537,76.0,26.111729,22.278885,28.937168,27.993617999999998,21.45949,20.90222,not_test +1538,92.0,25.614166,26.102388,28.736984000000003,29.091269,19.722876,22.540987,not_test +1539,44.0,24.382479999999997,29.433303999999996,30.292156,27.527746,17.235823,25.099426,not_test +1540,40.0,33.445595000000004,31.918647999999997,31.261051000000002,27.64455,22.469696,28.121409999999997,not_test +1541,46.0,27.307236,34.344963,34.014565000000005,31.580095,38.531240000000004,31.219140000000003,not_test +1542,51.0,52.66814399999999,28.154774,47.777935,48.01103,23.914232000000002,25.934054999999997,not_test +1543,37.0,47.165524,27.967136,41.698673,44.63165,25.861553,26.483497999999997,not_test +1544,34.0,44.45033,29.231615,36.38698,38.225227000000004,22.777458,28.450687,not_test +1545,31.0,39.56264,31.998134999999998,30.512629999999998,33.44451,20.33879,31.583540000000003,not_test +1546,46.0,38.784485,36.307495,27.912868,27.497196000000002,25.959957,35.593178,not_test +1547,49.0,29.739481,41.755720000000004,24.975882000000002,25.294739,42.120709999999995,39.960840000000005,not_test +1548,42.0,46.618088,38.123005,41.656985999999996,36.365497999999995,32.846478000000005,34.02559,not_test +1549,37.0,32.75667,40.43796,32.634644,33.2319,35.87985,33.545609999999996,not_test +1550,51.0,37.157635,42.710083000000004,31.778349,33.13538,37.990288,33.809235,not_test +1551,85.0,32.29537,43.411434,31.342726000000003,34.334812,36.750156,33.49943,not_test +1552,61.0,36.60483,42.013465999999994,34.540015999999994,36.79376,32.84253,31.914202000000003,not_test +1553,61.0,48.087309999999995,39.379979999999996,38.989616,39.37025,29.591922999999998,29.675896,not_test +1554,59.0,60.063956999999995,37.356316,56.91021,56.943752,37.835163,35.67669,not_test +1555,55.0,64.00591,33.67431,56.12415,59.065697,36.01959,32.591568,not_test +1556,65.0,73.07749,30.403216999999998,57.061737,62.950787,25.877551999999998,28.875206,not_test +1557,50.0,70.25913,28.525112,53.455822,67.15153000000001,15.566389000000001,26.24442,not_test +1558,67.0,88.36153,28.252762,53.280468000000006,68.33931,14.556993499999999,25.494951,not_test +1559,107.0,65.16629,29.107165999999996,49.135403000000004,67.13176,26.161007,26.112732,not_test +1560,51.0,94.12692,14.946053,80.74838000000001,88.03084,11.479252,15.184719,not_test +1561,15.0,76.47595,17.611045999999998,66.89681999999999,78.54046,13.13685,15.531904,not_test +1562,14.0,77.081406,21.38061,58.352127,73.75350999999999,10.308176,15.900406,not_test +1563,18.0,67.76778,24.341354,52.04007,66.553116,9.481922,16.066914,not_test +1564,10.0,61.425630000000005,26.057335000000002,49.637768,61.5699,17.827375,16.90431,not_test +1565,20.0,47.732796,27.538528000000003,47.537040000000005,58.02470400000001,36.48726,19.5107,not_test +1566,31.0,21.517422,29.792203999999998,21.115246,21.94272,29.156278999999998,28.038279,not_test +1567,27.0,21.839836,32.02426,23.071672,23.22591,35.021244,31.010576,not_test +1568,16.0,18.422527,33.870129999999996,22.660452,21.073034,31.199516,33.26142,not_test +1569,17.0,15.584982,34.92989,22.666610000000002,18.23374,24.564539,34.302433,not_test +1570,20.0,13.600245999999999,35.225674,21.54447,16.238857,25.140411,34.163779999999996,not_test +1571,12.0,10.326210000000001,35.029140000000005,19.617178,15.056337,37.563266999999996,33.198605,not_test +1572,13.0,9.542206,32.957073,11.33699,12.830605,30.244465,30.526640000000004,not_test +1573,19.0,11.457766000000001,34.747505,12.193422,13.544807,39.848457,32.857876,not_test +1574,16.0,15.404247,36.520775,13.623072,14.892094,46.05741,35.83802,not_test +1575,20.0,18.454891,37.195842999999996,16.995601999999998,18.98861,44.770733,37.30494,not_test +1576,26.0,22.132362,36.463654,19.665867000000002,23.078617,37.475838,36.12725,not_test +1577,35.0,29.481647,34.999435,27.137081,31.803279999999997,30.030541999999997,33.07076,not_test +1578,45.0,34.19287,39.026844,34.965454,36.94096,38.69925,36.14138,not_test +1579,48.0,33.72923,34.70675,33.620144,37.124096,30.947536,29.736403000000003,not_test +1580,53.0,37.044579999999996,28.714394,33.064854,39.073612,27.997044,22.717531,not_test +1581,68.0,39.868320000000004,23.590652,34.47917,41.295063,27.419113,17.758451,not_test +1582,67.0,51.764829999999996,20.968578,37.477825,44.62034,24.64286,16.044754,not_test +1583,64.0,30.640365999999997,20.782913,36.50229,48.999935,17.392529,16.874287,not_test +1584,65.5,59.88219,35.656147,52.35717,52.462864,36.63413,37.614655,not_test +1585,67.0,44.784428000000005,37.191513,40.189713,39.81487,40.412228000000006,38.377113,not_test +1586,63.0,42.976603999999995,38.015636,34.171074,36.215343,34.34189,39.169228000000004,not_test +1587,42.0,30.507784,38.23602,32.65057,34.37085,29.621229999999997,39.72444,not_test +1588,48.0,34.377790000000005,38.33109,32.585217,37.637787,37.24593,39.42658,not_test +1589,38.0,24.492855,38.67432,33.884586,37.91467,58.2584,37.814873,not_test +1590,36.0,37.005886,40.45029,34.99317,34.882076,43.103516,42.6065,not_test +1591,29.0,33.31645,40.47415,30.59145,31.979982,45.87375,42.667645,not_test +1592,21.0,32.5545,40.338783,26.376728000000004,28.560738,41.670609999999996,42.27568,not_test +1593,13.0,26.815151,40.204758,23.305088,24.76783,36.579586,41.923386,not_test +1594,10.0,24.797544,40.031532,21.383854,23.2232,37.84943,41.698006,not_test +1595,10.0,17.698118,39.653202,19.002728,22.080313,47.7687,41.260994000000004,not_test +1596,11.0,9.979065,78.37137,12.821247,11.418047,83.47473000000001,86.475494,not_test +1597,13.0,11.732925,75.48344399999999,12.479849,12.633722,74.01793,83.7605,not_test +1598,15.0,15.30855,69.95195,14.853352,15.413208,71.90194,76.33559,not_test +1599,17.0,19.031368,64.11341,16.807245,20.029322,72.45725999999999,68.994064,not_test +1600,19.0,23.641373,58.820526,21.271013,24.660625,66.58415,64.45430999999999,not_test +1601,26.0,31.059668,53.528572,29.151034999999997,33.57309,49.340828,61.90223,not_test +1602,56.0,29.89071,30.540995000000002,39.107834000000004,38.19381,27.209540999999998,27.999863,not_test +1603,71.0,33.395874,30.083384000000002,48.139107,56.709281999999995,29.250590000000003,25.87668,not_test +1604,92.0,38.306746999999994,29.672397999999998,54.831886,63.301407,24.67103,23.868902,not_test +1605,83.0,45.356865,29.276712,53.805817000000005,64.30135,19.555164,22.700323,not_test +1606,92.0,61.296409999999995,29.552563,55.133972,63.572480000000006,21.89264,23.095093,not_test +1607,77.0,40.0306,31.282269,54.072502,60.77191,34.741440000000004,25.261589999999998,not_test +1608,70.0,76.28282,86.14995,63.78235,70.39285,87.98763000000001,92.29117,not_test +1609,64.0,71.14435999999999,86.901764,55.271409999999996,59.57899499999999,89.15339,89.244675,not_test +1610,62.0,76.41792,84.44503,47.294327,53.783294999999995,97.96042,82.767914,not_test +1611,58.0,66.48947,81.08511,43.824703,52.407574,106.352066,79.02781999999999,not_test +1612,51.0,53.168255,77.84626999999999,42.347015,49.93827,102.88179000000001,79.83046,not_test +1613,47.0,54.90728000000001,74.02409,43.751015,49.540890000000005,82.359116,81.48645,not_test +1614,36.0,43.87191,46.337902,41.930363,40.909824,42.300915,49.032757000000004,not_test +1615,22.0,41.39063,47.604735999999995,32.8146,34.158344,48.753437,49.91981,not_test +1616,20.0,36.034355,49.38443,26.153698000000002,28.225497999999998,50.33578,51.848167,not_test +1617,19.0,36.808643,50.750809999999994,23.059885,24.0788,47.106644,54.28791999999999,not_test +1618,14.0,28.669384,51.31895,19.780435999999998,22.195171,43.62532,56.34061,not_test +1619,13.0,22.845638,51.425632,19.404366,21.350512,45.109043,57.246773,not_test +1620,15.0,12.285236,22.019820000000003,12.771034,13.934002,20.307126999999998,21.747366,not_test +1621,18.0,15.166534,23.288504,14.254446,14.7387085,25.289045,21.034654999999997,not_test +1622,25.0,19.466562,25.400879,16.797554,19.621107000000002,19.633661,21.000996,not_test +1623,29.0,23.869957,26.802236999999998,21.327618,22.298601,11.3137665,21.044584,not_test +1624,57.0,32.580643,27.706749,31.05795,29.628063,13.104561,21.303717000000002,not_test +1625,67.0,41.316338,29.681225,37.534233,34.47161,31.66677,22.503870000000003,not_test +1626,86.0,71.4335,24.257614,75.13342,69.79626,21.224545000000003,20.213467,not_test +1627,76.0,92.20259,25.473059,78.195465,77.98116999999999,25.558704000000002,19.327257,not_test +1628,64.0,80.598495,28.427788,75.73241999999999,80.06128000000001,23.230173,21.273139999999998,not_test +1629,54.0,90.880684,31.745783000000003,72.192604,80.08505,21.978209,25.273344,not_test +1630,62.0,70.42560999999999,34.711220000000004,68.97556,78.08183000000001,31.026405,29.661965999999996,not_test +1631,58.0,60.230778,37.453407,64.46529,72.06824,52.49718000000001,32.840908,not_test +1632,54.0,58.859818000000004,25.30846,47.917797,47.36696,22.558761999999998,25.09481,not_test +1633,55.0,49.775940000000006,26.957783000000003,39.869003,44.011322,27.714911999999998,26.627405,not_test +1634,62.0,44.973763,28.888958000000002,35.99633,40.926792,25.430178,28.779808000000003,not_test +1635,60.0,40.68651,30.047321000000004,34.77662,41.839484999999996,22.945066,30.351656,not_test +1636,41.0,30.024668,30.425003000000004,35.367466,41.8687,29.237278000000003,30.906107000000002,not_test +1637,34.0,42.88347,30.880996999999997,37.80458,42.60157,46.833225,30.929040000000004,not_test +1638,22.0,31.029732,65.555984,32.906746000000005,31.750057,71.70767,68.64441,not_test +1639,20.0,30.794966,61.41721999999999,28.76036,28.15438,57.5272,66.436844,not_test +1640,18.0,26.66856,54.842785,24.4183,25.034643,60.017097,63.013466,not_test +1641,14.0,28.414356,48.689217,21.8861,21.493105,68.51609,60.42872,not_test +1642,15.0,21.968657,43.993767,19.20074,19.007717,65.419075,58.393806000000005,not_test +1643,15.0,19.055664,39.905525,19.103798,19.001606,41.644946999999995,54.925934,not_test +1644,17.0,12.278694,42.700179999999996,14.340603,14.308113,47.00969,45.936690000000006,not_test +1645,19.0,15.39887,41.766018,16.240719,15.875795000000002,45.383759999999995,42.703934000000004,not_test +1646,24.0,19.391525,39.884113,18.389969,19.87182,46.698409999999996,37.449474,not_test +1647,29.0,23.741798,37.407738,22.835695,22.722873999999997,46.550426,32.46463,not_test +1648,41.0,32.704322999999995,35.151096,31.002547999999997,29.596193,41.081657,29.739921999999996,not_test +1649,70.0,41.704229999999995,33.99388,35.997013,34.641644,30.678396000000003,29.803690000000003,not_test +1650,52.0,53.009876,12.920625999999999,55.990832999999995,60.65680699999999,7.912388000000001,11.37096,not_test +1651,58.0,55.437172,14.067795000000002,57.56411,49.430842999999996,9.339928,12.24123,not_test +1652,59.0,57.16133000000001,16.176392,55.291893,51.213043,6.5522633,13.892546,not_test +1653,76.0,73.95009,17.986382,55.344969999999996,53.281257999999994,4.362335,15.9914,not_test +1654,88.0,59.56024,19.614202,53.202835,51.929893,9.06476,18.665571,not_test +1655,80.0,64.35573000000001,22.17641,53.024025,48.453140000000005,22.777786,22.054314,not_test +1656,74.0,77.37998,25.16975,62.99775699999999,74.55826,24.987135000000002,24.97806,not_test +1657,68.0,75.576004,31.061974,52.969204000000005,73.98716999999999,32.591454,29.503317,not_test +1658,59.0,75.99708000000001,38.270195,44.476048,67.48918,31.850082,35.245144,not_test +1659,59.0,62.864959999999996,43.6021,40.64699,64.038475,30.999487,40.124072999999996,not_test +1660,53.0,48.104103,45.711384,39.561015999999995,60.259795999999994,40.202890000000004,43.058025,not_test +1661,48.0,57.72505,45.61329,42.20494,56.384567000000004,62.027863,44.279579999999996,not_test +1662,42.0,40.331173,83.17736,32.680813,38.6219,87.37097,83.32258,not_test +1663,30.0,36.25959,76.19464,27.896244,30.807056,71.947075,76.43794,not_test +1664,27.0,29.825127000000002,66.935005,22.998297,25.218760999999997,68.25485,68.25627,not_test +1665,27.0,27.817397999999997,59.525,20.140953,21.523806,70.97268000000001,62.392844999999994,not_test +1666,20.0,20.476997,55.046195999999995,17.514060999999998,19.800601999999998,67.682556,59.299126,not_test +1667,14.0,16.025578,51.634228,17.466913,19.60652,50.289153999999996,56.728640000000006,not_test +1668,18.0,10.053598,52.45715,15.957918,16.15812,55.962536,53.571762,not_test +1669,24.0,14.968998000000001,48.331806,17.764578,16.767788,42.829933000000004,52.216840000000005,not_test +1670,29.0,18.467115,42.015747,20.466434,20.642584,40.055595000000004,48.431953,not_test +1671,41.0,22.118574,35.371666,24.204056,23.094973,41.280327,43.382335999999995,not_test +1672,41.0,29.183796,30.416912,28.919125,28.362831,36.27414,38.471607,not_test +1673,44.0,38.068195,28.3932,31.903225,32.042815999999995,20.484467000000002,34.74921,not_test +1674,53.0,41.461834,20.694714,48.960570000000004,56.750840000000004,18.848928,23.088829999999998,not_test +1675,65.0,45.211999999999996,22.757023,52.020990000000005,57.910880000000006,24.042157999999997,22.62544,not_test +1676,59.0,49.559483,26.194477,51.078117,62.750980000000006,24.218082,22.105806,not_test +1677,81.0,61.663666000000006,29.642155,52.283386,70.38936,24.613611,22.29126,not_test +1678,116.0,45.159187,32.88554,50.68161,72.15796,32.056126,24.20085,not_test +1679,104.5,54.917885,36.55627,52.50614,68.95178,48.419422,28.103289,not_test +1680,93.0,98.20215999999999,39.01248,86.20099,94.522385,38.613678,34.751746999999995,not_test +1681,63.0,89.69612,46.875153000000005,72.142555,88.480194,52.028636999999996,41.12157,not_test +1682,64.0,83.219666,55.343376,60.87465699999999,83.36017,51.416447,49.095753,not_test +1683,58.0,66.18395,61.09778000000001,55.846332999999994,80.4265,49.00713,55.406662,not_test +1684,48.0,48.269020000000005,63.082809999999995,52.04557,75.61513000000001,60.564255,58.404740000000004,not_test +1685,44.0,55.91955,62.688109999999995,52.20881,68.00024,90.772095,58.71103000000001,not_test +1686,44.0,38.556133,55.58984,34.319138,39.186993,50.653038,51.680706,not_test +1687,35.0,36.94478,54.478867,29.658185999999997,32.488865000000004,55.49018,52.073746,not_test +1688,33.0,30.876003000000004,54.082375,25.120008,27.462511,61.460556000000004,53.21379,not_test +1689,27.0,29.801445,54.23738,22.15061,23.838793,63.781845,53.57046,not_test +1690,29.0,22.226824,53.965652,19.423092,21.499079000000002,60.017531999999996,51.740265,not_test +1691,30.0,18.403370000000002,52.40448,19.334785,21.316682999999998,52.04566,47.738316,not_test +1692,28.0,23.449081,38.059425,28.447588,24.94449,38.84212,37.453790000000005,not_test +1693,32.0,24.559960999999998,35.390736,25.803007,24.618579999999998,35.835907,35.597687,not_test +1694,43.0,26.960949,30.968843,27.328253000000004,27.26417,35.26332,32.848858,not_test +1695,51.0,29.7589,25.829334,31.073452000000003,30.839316999999998,33.35456,29.226952,not_test +1696,56.0,38.437256,22.115029999999997,35.871320000000004,36.223988,27.309490000000004,25.446648,not_test +1697,57.0,46.448795000000004,21.799329999999998,39.418026,39.703712,18.243732,22.759726,not_test +1698,49.0,51.226290000000006,18.055212,55.14229,59.293808,18.170113,16.797173,not_test +1699,48.0,54.367957999999994,20.908058,57.565746,66.806656,22.028208,17.602692,not_test +1700,74.0,61.16396999999999,27.046390000000002,56.17043,77.547035,21.868389999999998,19.982487,not_test +1701,77.0,81.76893000000001,34.249336,57.124793999999994,83.98298,22.908413,23.854305,not_test +1702,104.0,81.44354,40.840534000000005,55.252937,82.29097,31.5345,28.746853,not_test +1703,108.0,92.06804,46.214436,56.89966,77.204,49.07976,33.64891,not_test +1704,78.0,91.68068000000001,52.066387,82.20026999999999,83.78726,51.172703000000006,52.123707,not_test +1705,87.0,83.7262,58.73475,65.91308599999999,76.5906,64.533875,58.3061,not_test +1706,91.0,73.33157,63.95036999999999,53.537383999999996,67.01760999999999,60.233955,63.531845,not_test +1707,82.0,62.835888,65.88626,47.239594,62.271446,50.148624,66.056885,not_test +1708,72.0,43.14478,64.54252,44.924488000000004,57.757977000000004,51.440490000000004,65.54521,not_test +1709,57.0,48.412247,61.481888,48.351776,55.457367000000005,71.74989000000001,63.0347,not_test +1710,39.0,48.83298,77.28049,46.595512,50.440684999999995,82.8467,79.36603000000001,not_test +1711,25.0,44.612846000000005,73.54399000000001,36.165046999999994,38.59025,71.85854,74.006485,not_test +1712,19.0,36.0662,67.98761999999999,28.378234999999997,30.862040000000004,67.71927,66.64188,not_test +1713,13.0,33.186283,62.465706000000004,24.419544000000002,26.798309999999997,67.27011,60.05624399999999,not_test +1714,13.0,23.84979,57.19645,20.259285000000002,24.751676999999997,62.67864,54.96145,not_test +1715,14.0,19.006826,51.395073,19.925566,24.084770000000002,48.970543,50.310623,not_test +1716,13.0,8.141956,48.185085,15.442898000000001,12.867939,51.977314,50.267109999999995,not_test +1717,16.0,13.303215,46.230656,17.834087,15.157929999999999,47.882015,47.5817,not_test +1718,19.0,16.097804999999997,42.843253999999995,21.471899,18.83481,47.713737,42.239227,not_test +1719,26.0,20.90636,39.066864,25.14266,25.418781,46.336063,36.269447,not_test +1720,31.0,28.242058,36.217487,31.341521999999998,35.560703000000004,38.789867,31.836634000000004,not_test +1721,26.0,38.66299,35.19112,33.808678,44.487602,25.224945,30.058182000000002,not_test +1722,18.0,20.34,20.834533999999998,27.220045000000002,26.086996,19.737902,20.947654999999997,not_test +1723,32.0,19.297354000000002,24.265954999999998,27.525875,27.317515999999998,25.147928,21.314410000000002,not_test +1724,48.0,21.579464,30.658873,27.991521999999996,33.932159999999996,26.290846000000002,23.8996,not_test +1725,69.0,20.963394,37.846977,29.719340999999996,40.812782,28.72283,28.631313000000002,not_test +1726,63.0,21.644049,44.319317,28.46598,41.518147,38.971554,34.70176,not_test +1727,58.5,32.428104,49.596990000000005,30.607307000000002,35.021805,57.976172999999996,40.61936,not_test +1728,54.0,37.193695,45.795193,37.42852,30.938183000000002,44.528694,45.030922,not_test +1729,62.0,32.065926,48.617504,33.376472,15.490804999999998,49.228607000000004,45.361717,not_test +1730,46.0,26.393010999999998,51.79107,28.953422999999997,16.14834,44.425354,46.07846,not_test +1731,37.0,26.073377999999998,54.09956,27.933104999999998,17.316589999999998,39.2839,47.113102000000005,not_test +1732,36.0,20.420094,55.117096,32.332237,20.438226999999998,44.629709999999996,48.536,not_test +1733,27.0,35.08518,55.30059,34.140854,21.72255,63.435772,50.354427,not_test +1734,13.0,22.752907,103.04674,23.165474,21.499283,105.83871,104.73111999999999,not_test +1735,6.0,20.415598000000003,95.945885,19.962614000000002,18.851710999999998,84.50846,96.53241,not_test +1736,6.0,17.220291,85.57457,16.161863,16.137428,79.627495,86.721756,not_test +1737,7.0,18.24916,76.47776999999999,12.574419,14.780982999999999,84.31266,79.49101,not_test +1738,8.0,12.407341,69.87123000000001,11.637604,14.612257000000001,81.750824,75.00511999999999,not_test +1739,8.0,10.22134,63.87064,11.482204,14.370625,60.511456,70.34206,not_test +1740,15.0,8.729202,42.42224,10.889534,8.598217,48.184104999999995,42.352795,not_test +1741,23.0,14.153808999999999,40.920142999999996,12.336109,11.512602000000001,40.56428,39.838882,not_test +1742,22.0,18.886139,38.709656,15.9161415,17.841303,38.842762,36.430862,not_test +1743,29.0,24.83031,35.92592,22.88689,26.234827000000003,38.772583000000004,33.20971,not_test +1744,29.0,34.336445,33.81893,36.361885,41.421677,34.805805,31.440588,not_test +1745,22.0,46.28151,33.975147,44.194736,54.829209999999996,25.382635,31.836385999999997,not_test +1746,10.0,17.114721,29.137882,20.837142999999998,29.206255,29.889193,29.287682,not_test +1747,17.0,15.188206,31.221981,22.078201,25.95787,34.043007,28.76535,not_test +1748,39.0,19.441416,34.151363,21.975711999999998,25.777995999999998,30.732153000000004,27.988356,not_test +1749,37.0,19.036245,37.340595,21.833548,31.077938,28.434753000000004,27.856594,not_test +1750,41.0,20.705479999999998,40.82501,21.15793,36.854244,36.382492,29.662031,not_test +1751,42.0,33.695038000000004,44.752846000000005,21.886507,29.715435,56.122654000000004,33.86638,not_test +1752,38.0,39.1087,59.865177,35.457428,39.048590000000004,57.276,59.169605000000004,not_test +1753,37.0,38.1421,61.262962,34.904465,39.08273,65.895386,59.55259,not_test +1754,34.0,43.374275,62.31881,33.21857,37.73052,60.920930000000006,60.335514,not_test +1755,29.0,40.373996999999996,62.879826,36.946259999999995,39.070847,52.473877,61.241676,not_test +1756,25.0,54.521637,63.020835999999996,38.608994,39.46416,54.469981999999995,61.824123,not_test +1757,26.0,40.801926,62.92560600000001,37.500584,37.302563,72.664764,61.777153000000006,not_test +1758,28.0,22.170060999999997,94.6293,21.538876000000002,19.827714999999998,99.19659,94.87701,not_test +1759,17.0,17.124897,88.29926999999999,16.806658,14.776832999999998,80.47121,87.2327,not_test +1760,10.0,14.823707999999998,79.497475,13.0982895,13.058479,77.33814,78.40872,not_test +1761,9.0,9.397827000000001,71.885086,12.041038499999999,12.57902,82.38574,70.814285,not_test +1762,9.0,6.689045,66.562546,11.630092999999999,12.667162,79.70443,64.710335,not_test +1763,10.0,8.7241745,62.179565000000004,12.820627,14.029615,59.283802,59.112587,not_test +1764,8.0,11.877829,49.2058,10.022444,13.215373999999999,51.718475,48.19961,not_test +1765,11.0,14.692635000000001,45.785492,12.279795,15.948379500000001,44.273990000000005,44.726864,not_test +1766,11.0,19.087217000000003,41.978653,22.508646,23.862724,41.08526,40.262814,not_test +1767,17.0,29.895456,39.251705,38.534275,33.347195,39.11938,36.55208,not_test +1768,28.0,42.076435,39.118866,47.68257,42.77368,34.988106,35.14164,not_test +1769,31.0,60.001392,42.10518,52.010277,54.969513,28.464792,36.445515,not_test +1770,34.0,32.51933,14.770710000000001,34.548306,33.16194,15.709705,13.163784,not_test +1771,32.0,33.664004999999996,18.975085999999997,36.374474,33.109295,19.533978,15.442715,not_test +1772,26.0,39.995014000000005,25.617601,37.63919,29.816788,16.873558,19.741207,not_test +1773,31.0,37.451896999999995,31.799840000000003,37.259052000000004,30.15464,15.29171,24.238708,not_test +1774,34.5,49.898804,36.588066,38.668636,30.450459000000002,23.84724,28.300159999999998,not_test +1775,38.0,30.565185999999997,40.970622999999996,34.263009999999994,28.127036999999998,44.70473,32.384415000000004,not_test +1776,23.0,36.693893,21.256496,39.594753000000004,37.4413,15.912151000000001,19.05891,not_test +1777,31.0,37.273716,24.539824,35.266743,36.76952,21.267813,21.175316,not_test +1778,36.0,38.199776,30.493118,33.671757,36.21784,21.244022,26.326442999999998,not_test +1779,34.0,36.668003000000006,36.365173,36.577713,37.7413,20.923246,32.931942,not_test +1780,27.0,51.013836,40.70426,38.288143,38.055996,28.509632,39.16362,not_test +1781,28.0,39.247196,43.87905,37.421516,36.015488,47.582977,43.68313,not_test +1782,27.0,30.288497999999997,60.61634,22.712605,26.93037,55.570053,58.170227000000004,not_test +1783,19.0,25.051138,59.858162,18.124693,22.768171,54.092064,57.305305000000004,not_test +1784,27.0,27.355142999999998,58.68305,13.617672,19.386357999999998,61.870093999999995,56.681557,not_test +1785,25.0,19.845053,57.02075,12.171146,16.62455,68.70989,54.802677,not_test +1786,27.0,16.993996,54.289894,11.627106,15.83165,64.07245,50.571507000000004,not_test +1787,30.0,12.462994,50.202377,12.848114,16.333225,46.07274,44.605133,not_test +1788,29.0,27.756393,6.0098915,27.707984999999997,24.616943,4.6059684999999995,8.605408,not_test +1789,25.0,31.454086,4.611244,33.367268,27.82275,5.469742,7.409236999999999,not_test +1790,24.0,31.816164,5.4268035999999995,38.662209999999995,32.835228,2.7528189999999997,7.302467299999999,not_test +1791,26.0,35.878417999999996,7.0030594,44.826294,39.021057,0.2608261,7.8911896,not_test +1792,27.0,43.124996,9.322075,49.957336,44.05785,4.398426000000001,9.201443,not_test +1793,35.0,60.00094,13.567749,52.141445000000004,49.157092999999996,18.44115,11.535847,not_test +1794,41.0,36.446083,27.953772999999998,40.916542,43.901928000000005,25.424076,27.008568,not_test +1795,49.0,41.81157,31.464416999999997,43.395313,50.226196,31.390235999999998,29.939853999999997,not_test +1796,49.0,51.12148,34.649574,44.592873,53.86981,27.734077000000003,32.59369,not_test +1797,54.0,51.968952,36.537968,44.068638,54.728264,24.917522,34.411804,not_test +1798,92.0,63.75019,37.281544,44.154472,54.27721999999999,34.344025,35.554787,not_test +1799,99.0,39.769366999999995,37.724384,41.758453,53.212109999999996,57.93029,36.45639,not_test +1800,72.0,78.90708000000001,23.38935,81.9911,71.679214,20.006892999999998,19.261236,not_test +1801,87.0,66.00749,28.017109,69.61838,61.951138,29.085303999999997,24.195576000000003,not_test +1802,72.0,61.50806800000001,33.13425,60.820496,57.788382999999996,28.987919,31.692353999999998,not_test +1803,61.0,40.356346,36.405066999999995,52.544315000000005,54.468277,25.315697,38.496159999999996,not_test +1804,60.0,49.451885,37.114544,49.060394,52.59961,27.714616999999997,42.310867,not_test +1805,56.0,39.575157,36.369267,44.521229999999996,46.00011,41.252052,42.97842,not_test +1806,59.0,54.509640000000005,33.722107,55.03919200000001,54.365852000000004,35.277573,31.722713,not_test +1807,58.0,52.670673,31.680449,47.079254,52.296295,29.92675,28.778727000000003,not_test +1808,54.0,54.56422,27.992231,37.50159,45.493828,30.176972999999997,23.96099,not_test +1809,47.0,45.511753000000006,23.544813,27.341990000000003,35.97593,30.487436,18.694672,not_test +1810,30.0,39.068670000000004,19.288128,23.441359,24.988917999999998,24.32171,14.694129,not_test +1811,17.0,24.313852,15.989079,22.905489000000003,21.271414,10.316549,13.108844,not_test +1812,20.0,15.432070000000001,23.266949,18.107916,17.737612,24.307682,25.423847,not_test +1813,17.0,16.387592,23.144170000000003,22.281916,19.874445,25.191572,23.133157999999998,not_test +1814,22.0,19.973043,23.936432,27.204039,23.539904,20.98295,20.292107,not_test +1815,24.0,26.56199,25.217903,34.06839,30.2277,17.195156,17.974667,not_test +1816,30.0,36.352005,26.586809999999996,40.587948,35.082848,20.222416,16.977781,not_test +1817,48.0,50.024155,27.860986999999998,45.19243,41.433765,31.824053000000003,17.393112,not_test +1818,73.0,48.351074,13.755320000000001,64.44961500000001,55.58379,8.979525,11.2037945,not_test +1819,27.0,56.41105,16.48524,62.546806000000004,59.859837,13.326953,13.983095,not_test +1820,29.0,79.27202,20.144722,62.94230699999999,64.88244,14.053262,17.403265,not_test +1821,34.0,69.24101,23.598063,58.579834,67.50964,14.351876999999998,20.480145,not_test +1822,28.0,77.60891,26.347496000000003,55.625553000000004,64.58306999999999,18.976513,22.733873000000003,not_test +1823,22.0,48.254585,28.491001,52.716763,60.39006,29.673775,24.171011,not_test +1824,31.0,20.22585,34.26168,20.098285999999998,21.687923,35.133790000000005,34.826874,not_test +1825,42.0,19.132368,34.326423999999996,20.073595,21.562107,39.460167,33.18222,not_test +1826,44.0,24.862701,33.920654,20.39647,21.991259,41.247284,30.387619,not_test +1827,35.0,25.783379999999998,33.424065,25.464657,25.378296,39.53842,28.060827000000003,not_test +1828,32.0,41.573864,32.978854999999996,27.879406,27.549438000000002,35.661453,27.302376000000002,not_test +1829,34.0,33.863234999999996,32.447495,26.603355,26.25426,32.231316,28.005838,not_test +1830,27.0,33.082695,30.902671999999995,30.98462,31.59403,31.39787,31.912151,not_test +1831,21.0,30.567415000000004,30.446594,24.706135,27.234768,26.30017,31.463984999999997,not_test +1832,21.0,34.693905,29.11913,20.783567,22.404266,26.254328000000005,30.106625,not_test +1833,11.0,26.866703,27.059611999999998,17.478046,18.278942,26.08278,28.145215999999998,not_test +1834,8.0,22.389431,24.609385,17.145184,17.069344,20.382912,26.000992,not_test +1835,10.0,14.683519,22.29734,17.254877,17.16659,8.6914,24.101799,not_test +1836,10.0,7.7202034,15.827417,9.911539,11.753608999999999,14.568826000000001,14.669931,not_test +1837,17.0,8.884188,15.368972,13.609669,12.886034,16.193127,13.869294,not_test +1838,19.0,12.747606,15.287939000000001,19.231758,18.952862,15.352576999999998,13.540979,not_test +1839,34.0,22.032329999999998,15.425614000000001,29.604103000000002,25.546501,13.731638,13.7685375,not_test +1840,40.0,33.83739,15.877908999999999,36.87601,30.831561999999998,14.374926,14.576975,not_test +1841,45.0,47.49516,16.882965,43.174953,38.08468,19.03495,15.865175,not_test +1842,42.0,39.14334,25.080276,48.53118,45.707283000000004,23.654474,26.397771999999996,not_test +1843,46.0,44.69068,27.187103000000004,48.494797,46.099762,26.297256,28.819695,not_test +1844,88.0,55.556458,29.954578,49.467278,46.05298,25.474184,32.30805,not_test +1845,85.0,62.266262,32.481167,47.454876,45.456745,24.805229999999998,35.98816,not_test +1846,61.0,76.28694,34.27592,46.7268,44.384544,28.559616,38.52946,not_test +1847,69.0,52.872204,35.362007,45.01763,43.720577,37.70413,38.866707,not_test +1848,55.0,68.6511,46.435356,61.36190799999999,62.542053,47.183525,46.950943,not_test +1849,56.0,65.51198000000001,44.751774,51.80855,56.967613,43.186840000000004,45.192802,not_test +1850,51.0,64.33652,41.710464,43.885222999999996,52.67649,42.912865000000004,41.908752,not_test +1851,54.0,50.940220000000004,39.044624,39.26848,49.186012,43.898987,38.953125,not_test +1852,41.0,56.447235,37.528015,39.594093,48.156209999999994,41.758858000000004,37.356644,not_test +1853,40.0,44.358467,36.647304999999996,37.975903,43.905834000000006,34.218178,36.802937,not_test +1854,35.0,30.619736,76.97086999999999,28.262736999999998,31.749088,83.38185,79.82068000000001,not_test +1855,36.0,25.053783,72.11137,19.287733,23.557879999999997,74.19086999999999,74.5085,not_test +1856,24.0,24.410276,64.80393000000001,14.735006,19.05617,71.729324,65.67208000000001,not_test +1857,26.0,16.712069,58.161246999999996,11.89942,15.608251999999998,70.901886,57.532917000000005,not_test +1858,23.0,13.336476999999999,53.515537,11.7487755,14.130375,63.2142,52.51846999999999,not_test +1859,21.0,10.436281,50.18009,12.355949,14.185619,44.995483,50.194379999999995,not_test +1860,13.0,16.333437,51.738194,18.647284,18.964956,56.429703,55.43917,not_test +1861,21.0,16.35944,48.966507,19.73556,20.406988000000002,49.1728,53.541340000000005,not_test +1862,23.3125,19.160035999999998,44.662040000000005,24.614843,23.974344,49.877724,49.7576,not_test +1863,25.625,27.542004,40.425315999999995,31.581913,30.275696000000003,52.356438,45.7621,not_test +1864,27.9375,37.435863,37.932014,37.59268,35.27469,48.068577000000005,43.083164000000004,not_test +1865,30.25,51.534040000000005,37.9785,41.793713000000004,41.24755,33.875904,42.2558,not_test +1866,32.5625,27.632541999999997,17.006866,31.630453000000003,31.943182,16.814255,18.577787,not_test +1867,34.875,26.510396999999998,19.788631,33.220135,36.381233,22.78289,20.011136999999998,not_test +1868,37.1875,31.359554,24.425032,34.520046,40.880759999999995,22.912441,23.172491,not_test +1869,39.5,42.02047,28.682575,34.87878,43.574220000000004,22.822138,27.129170000000002,not_test +1870,41.8125,61.236366000000004,31.918910999999998,36.17261,43.14715,30.245341999999997,31.286995,not_test +1871,44.125,44.653403999999995,35.067859999999996,33.073634999999996,41.396606,47.695847,35.363937,not_test +1872,46.4375,41.08444,25.36158,39.666348,47.811386,19.452545,23.550488,not_test +1873,48.75,41.839413,28.774387,36.909145,50.34509,29.552998,26.637451000000002,not_test +1874,51.0625,41.290783000000005,33.301857,36.939034,55.134277000000004,27.716079999999998,30.833452,not_test +1875,53.375,32.628693,36.372409999999995,38.228653,54.154625,21.81705,34.079388,not_test +1876,55.6875,40.03137,37.697926,39.2623,53.693474,25.917076,35.960865000000005,not_test +1877,58.0,35.943996000000006,39.111073,39.09715,48.193657,47.785824,37.639786,not_test +1878,60.0,62.305144999999996,43.713314000000004,57.346123,60.169340000000005,42.287884000000005,44.292877000000004,not_test +1879,59.0,61.23129300000001,42.782726000000004,52.294740000000004,55.334366,43.8609,43.603592,not_test +1880,47.0,58.39585,43.176520000000004,44.84178,44.608513,51.4309,42.97168,not_test +1881,38.0,44.918205,44.477234,34.456123,28.620895,55.1142,42.278168,not_test +1882,38.0,24.41475,45.44688,28.832890000000003,22.575726,47.381954,41.177155,not_test +1883,37.0,17.145784,45.007927,25.73476,19.66139,29.664959000000003,39.516791999999995,not_test +1884,32.0,39.221283,20.875023000000002,35.64501,30.626340000000003,21.42366,22.534399,not_test +1885,30.0,39.396885,20.316523,37.440647,34.604214,23.31542,21.748708999999998,not_test +1886,28.0,38.87511,20.456814,41.85691,39.786716,21.129368,21.101960000000002,not_test +1887,26.0,42.115433,20.919472,48.0615,43.051846000000005,18.323158,20.979443,not_test +1888,23.0,46.741543,21.974298,51.89833,44.939316,20.210554000000002,21.81564,not_test +1889,41.0,60.127219999999994,24.196362,52.27455,48.779720000000005,29.305003999999997,23.674823999999997,not_test +1890,53.0,36.2084,26.227203000000003,36.25255,36.170643,23.239231,22.538921,not_test +1891,69.0,34.13908,30.282696,33.795120000000004,30.442345,28.619602,24.062992,not_test +1892,66.0,33.91363,35.858253000000005,31.669690999999997,28.078671999999997,28.005627,27.84432,not_test +1893,51.0,26.373037,40.825756,30.565191,27.99833,27.296381,33.23615,not_test +1894,69.0,23.513824,43.990944,28.288782,26.2193,34.07868,38.869965,not_test +1895,63.0,22.319166,45.491375,30.718770000000003,26.966393,50.520927,43.136517,not_test +1896,63.0,62.800582999999996,86.544495,57.6653,58.121056,92.51366,87.27173,not_test +1897,58.0,52.868164,83.212425,54.0499,56.190495,86.90547,83.34898000000001,not_test +1898,58.0,51.66279,75.68690500000001,49.740593,54.11449399999999,89.339096,75.67434,not_test +1899,48.0,48.119316,68.47174,47.65555,52.15651,91.01648,68.41433,not_test +1900,47.0,39.814106,63.453396,45.258309999999994,48.166264,79.99593,63.252556000000006,not_test +1901,45.0,35.130962,59.201164,41.424175,41.30115,52.314147999999996,58.882385,not_test +1902,42.0,42.35427,45.284836,40.587036,37.338974,46.475196999999994,48.339737,not_test +1903,37.0,42.965759999999996,44.25934,34.320747,31.3996,43.878265,46.199653999999995,not_test +1904,19.0,35.344066999999995,42.566032,27.14433,24.5289,48.31285,41.94839,not_test +1905,13.0,30.726871000000003,40.372135,24.346329,21.991229999999998,52.89935,36.696354,not_test +1906,12.0,19.313545,38.025333,23.410103,21.400152,49.79437,32.240159999999996,not_test +1907,14.0,24.92981,36.062996000000005,24.868399,22.669725,36.975821999999994,30.142893,not_test +1908,22.0,12.155522999999999,22.175826999999998,13.931768,16.206867000000003,19.547523,21.749825,not_test +1909,29.0,14.238922,21.714949,19.561249,17.79014,22.677868,20.431047,not_test +1910,55.0,20.11288,22.358036,26.464453000000002,26.421513,20.171839000000002,20.254063000000002,not_test +1911,65.0,25.813894,23.630766,31.780779,30.653044,16.707954,21.46741,not_test +1912,64.0,31.875443,25.645134,36.973440000000004,38.341774,19.276215,23.940834,not_test +1913,70.0,45.28482,28.807453000000002,39.284279999999995,45.996704,31.053784999999998,27.10073,not_test +1914,97.0,66.349815,69.51341,67.689705,66.721436,62.033302,66.80351999999999,not_test +1915,98.0,78.133865,73.22006,64.86661,67.85575,76.88696,70.13485,not_test +1916,94.0,73.59891,73.94449,59.98019,65.856316,66.40266,71.52133,not_test +1917,83.0,72.82755,72.49838000000001,55.224163,61.6728,45.90016,70.96248,not_test +1918,72.0,61.96261,70.22215,50.647232,57.691734,39.395920000000004,68.90309,not_test +1919,72.0,55.888687,67.9636,48.397133000000004,55.01739499999999,59.83525,65.92560999999999,not_test +1920,68.0,66.75116,40.11513,62.90651,62.601875,36.899296,38.695187,not_test +1921,68.0,58.53256999999999,41.08279,54.05459200000001,51.424490000000006,44.904755,39.27424,not_test +1922,64.0,58.835919999999994,42.28419,45.222225,49.245308,47.22506,40.472088,not_test +1923,53.0,54.617897,42.94298,41.9914,48.69113,43.81143,41.707347999999996,not_test +1924,52.0,46.653209999999994,42.754677,37.50312,44.19034,39.424664,42.362305,not_test +1925,52.0,39.421528,42.08243,32.41682,39.93199,39.622574,42.195305,not_test +1926,24.0,37.1397,62.52443,31.473862,31.006784000000003,67.405075,66.70271,not_test +1927,16.0,35.244440000000004,62.139230000000005,22.302425,19.869204999999997,59.049965,64.165146,not_test +1928,16.0,27.152508,57.99409,16.872664999999998,16.834114000000003,58.506584,57.575974,not_test +1929,17.0,22.333052,50.68564,16.266125,16.444976999999998,58.414085,48.99788,not_test +1930,22.0,16.615934,41.83331,16.161602,17.141820000000003,49.173225,40.74815,not_test +1931,15.0,20.665632000000002,33.628197,17.485117000000002,19.28458,28.087035999999998,34.460995000000004,not_test +1932,19.0,14.859877,55.321716,14.810093,17.294216,56.64869,55.271119999999996,not_test +1933,21.0,17.924145000000003,51.994537,21.102198,25.448269,59.746265,53.193314,not_test +1934,34.0,24.5969,49.10369,32.01174,34.786892,53.614056000000005,50.60737,not_test +1935,73.0,32.70776,48.142563,40.40255,42.770695,46.733982,49.30941,not_test +1936,79.0,42.379954999999995,49.03933,45.317806,51.681686,49.16853,49.97412,not_test +1937,92.0,64.76061999999999,50.380103999999996,47.194977,59.146843000000004,64.03307,51.706493,not_test +1938,82.0,96.06603,43.780623999999996,88.82739000000001,91.11924,44.602340000000005,43.644740000000006,not_test +1939,76.0,98.04587,44.294018,82.88158,84.838776,48.953765999999995,44.588203,not_test +1940,74.0,83.745224,44.971603,73.68118,75.7955,50.056453999999995,45.771217,not_test +1941,64.0,76.08285500000001,45.61205,66.86205,64.9249,47.010709999999996,45.961983000000004,not_test +1942,57.0,63.355675,46.413826,61.61713,58.052673,42.304058000000005,44.821335,not_test +1943,55.0,53.606804000000004,47.695087,58.884735,55.885773,39.904488,43.201645,not_test +1944,57.0,44.588516,27.45672,43.283604,45.458206,20.927398999999998,25.322326999999998,not_test +1945,55.0,41.21313,29.642128000000003,34.787407,39.32524,25.960564,25.87878,not_test +1946,50.0,35.480404,34.464046,32.506855,39.539640000000006,26.738998,28.210577,not_test +1947,44.0,43.19149,40.050083,33.74184,39.498034999999994,28.145163,32.58948,not_test +1948,39.0,34.304806,44.647472,31.953442,37.430267,36.663376,38.291396999999996,not_test +1949,32.0,30.886004999999997,47.466865999999996,29.271690000000003,33.51158,54.00818,43.621124,not_test +1950,28.0,26.573324,98.55899000000001,28.409035,27.730888,113.07388999999999,100.28911,not_test +1951,22.0,26.284943,100.12208000000001,22.01964,22.627274,111.4633,96.44054399999999,not_test +1952,20.0,21.793997,96.053375,19.499933,19.980864,122.645676,88.30537,not_test +1953,17.0,19.787025,88.55985,19.294353,18.974873000000002,131.0478,80.934586,not_test +1954,15.0,17.223785,80.17868,19.741966,19.909933,118.04154,76.74158,not_test +1955,23.0,22.739898999999998,72.51141,20.838789000000002,22.232048000000002,78.42094,74.330795,not_test +1956,32.0,26.292099,60.88985,29.928496999999997,28.158375,63.813990000000004,65.222,not_test +1957,67.0,29.736259999999998,59.46204,38.604958,38.094516999999996,55.822098,61.59795,not_test +1958,41.0,35.281902,57.292713,48.438908000000005,50.645846999999996,57.93676800000001,57.574047,not_test +1959,42.0,43.38643,54.238266,54.07911,62.497184999999995,63.324276,54.2855,not_test +1960,52.0,56.398685,50.54477,56.383559999999996,69.62331,61.851135,52.132652,not_test +1961,59.0,81.70945999999999,47.074852,59.296913,71.82911999999999,48.92273,50.895924,not_test +1962,80.0,59.48049,15.282726,61.973866,64.10724,12.4099045,15.464664,not_test +1963,126.0,66.29788,15.683628,61.816376,70.34743,13.335720000000002,14.418682,not_test +1964,104.0,67.68693,17.48285,57.20209499999999,73.24794,10.975117,14.370739000000002,not_test +1965,62.5,79.47256999999999,19.100185,54.63318,70.60275,8.746936999999999,15.346046,not_test +1966,21.0,62.165447,20.871298,52.464325,67.35396999999999,12.407188,17.56879,not_test +1967,19.0,69.60324,24.475784,51.927326,64.95732,24.908379,21.079922,not_test +1968,19.0,20.717371,33.14403,23.647568,21.318022,28.427729,31.278538,not_test +1969,20.0,23.06556,41.598713000000004,24.29106,23.312422,38.10119,38.794876,not_test +1970,24.0,22.744158,52.082,29.898758,28.77063,39.130634,49.49157,not_test +1971,34.0,33.113583,60.39650699999999,32.720222,32.252174,40.792809999999996,58.95126,not_test +1972,29.0,29.849247,64.715515,32.00071,30.842676,54.54585,64.47468,not_test +1973,19.0,27.844833,66.105034,30.252434,26.544905,82.89891999999999,66.25466,not_test +1974,19.0,18.625654,76.09323,16.923727,18.43695,76.79518,73.67038000000001,not_test +1975,27.0,15.255247,71.97776,15.206373000000001,14.829904999999998,64.30543,70.47483000000001,not_test +1976,18.0,11.352108,67.11116,15.127403,14.728373000000001,65.670395,66.59906,not_test +1977,17.0,9.125725,63.87262,14.78776,14.886820000000002,72.40854,63.683468000000005,not_test +1978,18.0,11.467682,62.55721,16.17063,16.248617000000003,70.55808,61.894417000000004,not_test +1979,17.0,19.530369,61.602183999999994,17.28117,19.118008,52.953982999999994,60.215816000000004,not_test +1980,21.0,16.974749,53.412502,21.591139000000002,22.5139,61.341568,57.011875,not_test +1981,30.0,19.935848,53.492687,28.741809999999997,26.350111,53.903040000000004,57.75264,not_test +1982,33.0,27.559590000000004,52.090057,39.57485,35.473194,57.012802,56.997935999999996,not_test +1983,42.0,36.606976,48.416496,46.898277,42.17431,61.284893000000004,54.216053,not_test +1984,43.0,47.842773,43.192345,50.864323,50.701694,55.086059999999996,49.807148,not_test +1985,39.0,72.50746,38.507529999999996,53.00666,57.831590000000006,34.96132,45.126656,not_test +1986,40.0,43.145153,21.341324,44.056854,40.193752,22.141014000000002,24.643368,not_test +1987,41.0,44.83923,23.160470999999998,44.125366,41.28781,26.512817,24.74175,not_test +1988,33.0,43.28829,26.689713,42.59225,41.28052,26.592670000000002,25.29924,not_test +1989,26.0,47.2579,30.250828000000002,43.1041,39.746790000000004,27.192353999999998,26.683815000000003,not_test +1990,31.0,32.519077,33.526092999999996,40.002753999999996,38.607655,34.5559,29.454134000000003,not_test +1991,52.0,39.23807,37.329643,41.931705,37.360516,50.33345,33.604735999999995,not_test +1992,48.0,56.353264,80.719376,57.127487,50.3886,78.08096,83.14859,not_test +1993,36.0,53.182953000000005,88.71414,54.28705,47.444965,97.3026,90.779106,not_test +1994,43.0,51.7379,92.770096,52.34552,46.755604,101.646225,95.21715,not_test +1995,39.0,59.60264599999999,92.42633000000001,51.50862,47.24877,91.20998,95.55185,not_test +1996,28.0,45.3823,89.056885,51.236557,44.851578,76.14033,92.518585,not_test +1997,24.0,40.51661,84.64899,48.39226,41.305797999999996,68.554955,87.78786,not_test +1998,18.0,23.289955,113.58117,19.026617,23.709507000000002,119.13498,119.43613400000001,not_test +1999,14.0,23.346884,104.46939,16.71777,21.251657,97.40013,107.22435,not_test +2000,14.0,19.926085999999998,91.5552,15.745438,18.486525,90.12291,91.40727,not_test +2001,17.0,19.76512,81.57673,15.711163,17.245783,91.529816,79.35338,not_test +2002,22.0,15.713556,76.15948,16.541811,18.379292,85.93733,73.249725,not_test +2003,26.0,21.35634,71.783325,17.632996,20.716993,62.47976,69.8383,not_test +2004,33.0,30.578976,26.983053,31.410335999999997,29.827659999999998,28.674187,27.021897999999997,not_test +2005,30.0,28.400425,26.771618,37.063606,33.85382,29.15648,26.311718,not_test +2006,38.0,33.51882,26.459215000000004,43.819023,39.66428,28.743879999999997,25.25774,not_test +2007,42.0,37.955982,25.74438,49.390163,44.97039,25.33221,23.387232,not_test +2008,51.0,46.813644000000004,25.648885999999997,51.88355,49.990807000000004,19.810484,21.663034,not_test +2009,56.0,64.1887,27.642884999999996,54.279015,52.799769999999995,15.713409,21.82724,not_test +2010,67.0,55.83789399999999,15.086073,56.558783999999996,49.244774,12.8843155,13.134433999999999,not_test +2011,81.0,51.077396,16.10865,55.522903,43.621056,15.9800415,13.480843,not_test +2012,68.0,45.436314,18.652174,50.984590000000004,39.891705,12.620495,15.222429,not_test +2013,74.0,46.597775,22.160275,49.355034,36.391999999999996,10.770897,18.415873,not_test +2014,80.0,31.54187,26.405415,47.287426,35.534240000000004,19.363773000000002,22.736279,not_test +2015,74.0,39.47785,31.177038,47.72917,35.83551,40.077690000000004,27.27518,not_test +2016,64.0,65.51711999999999,39.107864,65.31617,64.56036,37.43517,39.958675,not_test +2017,57.0,58.222480000000004,39.884007000000004,59.55418,60.162383999999996,47.88343,40.739734999999996,not_test +2018,52.0,52.532607999999996,42.143406,53.465714,55.25062,41.349773,43.592632,not_test +2019,55.0,53.063159999999996,45.347996,50.94269,52.3523,32.183033,47.159317,not_test +2020,49.0,42.561214,48.674175,48.224197,49.304115,38.896570000000004,49.83041,not_test +2021,41.0,38.103485,51.345459999999996,44.160328,45.336052,67.94176999999999,50.756756,not_test +2022,43.5,37.14308,27.568785,37.553757,41.4185,28.836159000000002,31.975267,not_test +2023,46.0,43.210854,25.347069,28.05456,41.040817,32.93677,30.14916,not_test +2024,55.0,37.72072,24.233805,22.078024,36.723396,30.613094,30.690285,not_test +2025,60.0,39.556313,24.426298000000003,21.55559,33.46,26.460424,34.178096999999994,not_test +2026,59.0,25.933588,25.584223,21.605985999999998,30.559288000000002,27.693232000000002,38.585064,not_test +2027,28.0,31.49258,27.123734000000002,22.652882,31.788513000000002,37.900673,40.665184,not_test +2028,30.0,26.077285999999997,39.968143,35.987217,28.638298,43.85223,43.963190000000004,not_test +2029,35.0,26.120745,38.481064,37.901573,30.714440000000003,48.70922,41.831886,not_test +2030,39.0,31.648421999999997,36.04337,44.658970000000004,36.1494,52.916472999999996,37.392883000000005,not_test +2031,50.0,36.265537,33.478706,54.760909999999996,42.05734,51.191334000000005,32.903915000000005,not_test +2032,62.0,42.68456,31.401701,58.696568000000006,48.46776,41.728,30.193323,not_test +2033,71.0,55.572345999999996,30.012074,62.631606999999995,53.452746999999995,28.174374,29.575329999999997,not_test +2034,78.0,70.45947,15.397425,74.67969000000001,70.4192,13.604444500000001,12.97312,not_test +2035,66.0,70.62250999999999,14.084122,72.63276,72.680435,15.446060000000001,14.397306,not_test +2036,47.0,59.66444,14.817067999999999,68.42095,73.680916,13.013458,16.656591,not_test +2037,42.0,60.326797,17.39174,63.813835,70.690506,11.547991,18.981415,not_test +2038,57.0,43.757008,21.419495,58.89135,67.269035,17.46513,21.071337,not_test +2039,101.0,47.296409999999995,26.318665000000003,56.257183,65.44278,32.475964000000005,23.02042,not_test +2040,87.0,91.74670400000001,44.035393,88.803,94.176254,44.94689,42.665215,not_test +2041,78.0,85.09210999999999,47.62348,79.9688,84.67198,51.513386,43.820473,not_test +2042,73.0,77.28976999999999,49.38552,73.61153,79.48532,58.142807,43.620506,not_test +2043,71.0,68.99698000000001,48.70169,69.561806,74.189224,60.63984,42.815052,not_test +2044,71.0,59.425830000000005,45.984478,65.13705,72.73994,56.36365,41.896305,not_test +2045,69.0,49.723656,42.400032,58.966568,66.27686,46.37509,40.760857,not_test +2046,65.0,71.06479,60.031815,67.49164,66.473564,63.4031,60.6392,not_test +2047,63.0,63.527080000000005,57.35234499999999,57.41684,63.730819999999994,59.922066,59.255905000000006,not_test +2048,28.0,57.242695,53.40619,41.124928000000004,53.348580000000005,59.679726,55.628730000000004,not_test +2049,21.0,47.72149,49.63605,32.451570000000004,39.100809999999996,59.39501,51.329277000000005,not_test +2050,20.0,36.798874,46.441257,29.452095,31.758152000000003,54.500793,47.548836,not_test +2051,23.0,46.066933,43.38093,30.613190000000003,32.399147,43.544724,44.621696,not_test +2052,24.0,25.334845,53.023697,27.176258,26.432985,58.284583999999995,53.65008,not_test +2053,33.0,25.811182000000002,49.53978,32.787647,29.184164000000003,48.299686,52.0725,not_test +2054,26.0,30.602673,44.515137,38.876015,35.456866999999995,47.983242,47.628284,not_test +2055,48.0,35.541748,39.441154,44.847167999999996,40.005028,50.634377,42.30107,not_test +2056,45.0,39.493988,35.646446000000005,50.683876,46.742477,46.12162,38.150566,not_test +2057,91.0,47.59446,33.788467,52.10357,53.386919999999996,30.125187,36.14698,not_test +2058,95.0,95.52466,51.467796,80.50639,90.24904000000001,56.417809999999996,55.45941,not_test +2059,82.0,84.07729,50.786625,70.03331,83.73573,56.71751999999999,51.60275,not_test +2060,82.5,76.74791,49.60045,62.523163000000004,75.66288,44.322697,47.106556,not_test +2061,83.0,59.687973,49.204594,56.498259999999995,68.36726,31.537933000000002,44.598735999999995,not_test +2062,79.0,49.955566,50.36828,53.1171,65.16060999999999,32.116153999999995,45.076336,not_test +2063,82.0,37.249733,52.67885,49.613976,60.124106999999995,50.099517999999996,47.341145000000004,not_test +2064,80.0,79.77712,64.64779,72.55422,70.35473,62.804030000000004,65.34418000000001,not_test +2065,73.0,72.1209,66.21905500000001,70.29975,62.966652,70.01489000000001,65.56695,not_test +2066,68.0,68.7444,66.57408000000001,67.24374399999999,57.739113,61.413999999999994,64.34302,not_test +2067,51.0,62.093086,66.05096999999999,63.354916,54.227036,48.608955,62.64505,not_test +2068,43.0,60.218227,65.10707,57.61625,49.70016,47.18012,61.426269999999995,not_test +2069,36.0,48.006126,63.986366000000004,51.54613,46.130688,63.79168000000001,60.996292000000004,not_test +2070,26.0,35.66387,60.691578,27.93828,33.020638,59.950787,58.77826700000001,not_test +2071,18.0,31.192762,60.294143999999996,22.24466,30.227526,63.419777,58.82186,not_test +2072,17.0,28.204756,59.376755,22.312448999999997,25.870998,67.70294,58.60554499999999,not_test +2073,19.0,21.003033,58.1169,22.0834,25.99118,68.22815,57.808930000000004,not_test +2074,23.0,27.154646000000003,56.486427,23.582619,28.232645,62.506817000000005,56.12220799999999,not_test +2075,28.0,31.165476,54.47515,27.460253,31.123617,52.432766,53.6704,not_test +2076,26.0,28.404397999999997,66.225,35.25439,32.50206,65.84845,61.52939,not_test +2077,25.0,33.031242,63.06443,46.120266,42.219887,68.97326,55.27665699999999,not_test +2078,37.0,38.733368,57.90460600000001,54.616645999999996,48.92947,70.41932,47.84032,not_test +2079,40.0,44.847815999999995,52.483185,58.982365,55.729,64.17251999999999,42.486626,not_test +2080,57.0,58.412918000000005,48.39247,61.8671,64.32753000000001,49.322205,41.25632,not_test +2081,51.0,77.13721,46.37643,59.53524399999999,70.50506,31.865215000000003,43.824707000000004,not_test +2082,47.0,50.81981,23.606037,58.201606999999996,49.69004,21.804756,21.450756,not_test +2083,46.0,55.993835,24.015304999999998,56.593678000000004,59.60735699999999,23.493679999999998,19.76292,not_test +2084,89.0,63.436577,26.031057,56.060726,68.41991,20.849342,18.880898000000002,not_test +2085,108.0,49.18509,28.451759999999997,54.602837,70.74684,18.195606,18.608494,not_test +2086,89.0,53.063255000000005,31.467691,55.08136700000001,71.30439,22.433384,19.640976000000002,not_test +2087,61.0,38.002663,36.11342,53.715509999999995,67.424614,36.870804,22.92595,not_test +2088,52.0,55.299217000000006,55.287186,55.164574,56.905388,50.562798,52.068596,not_test +2089,59.0,53.475609999999996,59.641059999999996,50.71202,53.39884,62.046074,54.201885,not_test +2090,55.0,61.107468000000004,63.77575,50.525368,53.891212,61.16175,57.054455000000004,not_test +2091,48.0,48.744021999999994,66.164604,49.944767,52.263702,60.19464,59.987553000000005,not_test +2092,51.0,45.39521,66.390915,47.501244,49.060547,72.80711,62.004898,not_test +2093,36.0,37.72461,65.20175,43.7035,45.99219,101.19429000000001,62.25905,not_test +2094,32.0,35.39702,75.73857,36.34819,31.323304999999998,75.24105,75.31591999999999,not_test +2095,30.0,31.359721999999998,71.89609,25.870186,28.794166999999998,68.183914,71.21366,not_test +2096,29.0,39.435486,67.85300000000001,24.566042000000003,23.962364,73.16341,66.61014,not_test +2097,25.0,27.971764,65.29779,23.804884,24.07929,79.70022,63.44029200000001,not_test +2098,27.0,36.575386,64.28446,25.347803,26.656212,75.17069000000001,62.291042000000004,not_test +2099,23.0,38.374313,63.58825699999999,29.481844,29.751675,55.837821999999996,62.32869,not_test +2100,28.0,26.609046999999997,40.979027,31.391865000000003,28.409934999999997,45.40553,40.625763,not_test +2101,45.0,31.995583,39.119667,40.909884999999996,34.26831,44.310806,38.709686,not_test +2102,25.0,36.683876,36.866386,49.61225,40.295177,43.089447,36.298115,not_test +2103,41.0,42.404564,34.03112,54.14430600000001,46.955,39.19166,33.837322,not_test +2104,66.0,52.965225,32.0362,56.37751,52.915558,32.43036,32.26763,not_test +2105,26.0,61.53382,32.979713000000004,54.698315,56.93290699999999,25.739693,32.486959999999996,not_test +2106,32.0,22.775370000000002,25.266644,28.606382,25.546814,24.823342999999998,26.884645000000003,not_test +2107,40.0,20.551764000000002,29.449834999999997,28.560292999999998,24.664991,31.20797,29.119304999999997,not_test +2108,29.0,27.970444,37.807808,29.484928000000004,25.01913,31.673763,33.891422,not_test +2109,18.0,23.495834,47.463640000000005,26.490291999999997,22.963060000000002,33.436584,40.159904,not_test +2110,44.0,22.511364,55.850334,28.024796999999996,24.811409,44.85776,46.488853000000006,not_test +2111,54.0,20.120146,61.72124,27.991953000000002,24.857645,67.23053,51.464504,not_test +2112,54.0,53.920230000000004,69.89478000000001,54.71781,51.69303,72.50603000000001,69.73758000000001,not_test +2113,62.0,55.159714,76.723526,52.250717,49.002163,90.66013000000001,75.33185,not_test +2114,39.0,59.7044,80.948715,51.966915,49.648685,88.02821999999999,79.916084,not_test +2115,42.0,49.426453,81.18418,51.58275,48.239273,76.18145,81.94693000000001,not_test +2116,50.0,44.960503,78.09286,49.221092,45.270798,73.93888000000001,80.96529,not_test +2117,41.0,37.56971,73.74864000000001,46.529755,42.30592,91.25148,77.7559,not_test +2118,28.0,45.35987,76.61133000000001,39.3365,34.026653,81.65786999999999,78.18289,not_test +2119,23.0,39.45035,72.717674,31.684509999999996,27.917494,71.038574,74.799194,not_test +2120,24.0,44.59196,67.74744,30.59266,22.194204,70.72059,70.35338,not_test +2121,35.0,28.581831,63.49864,29.245417,22.868294,74.66333,66.061386,not_test +2122,53.0,38.738255,60.05941,30.193471999999996,25.061927999999998,71.92381,61.87158,not_test +2123,55.0,35.591515,56.37285,33.554054,27.5997,56.493080000000006,57.157337,not_test +2124,67.0,65.875244,44.84179,59.012195999999996,55.288864000000004,47.49885,48.489883,not_test +2125,74.0,72.5996,42.890648,62.46089,61.330380000000005,41.858115999999995,44.337036,not_test +2126,69.0,76.25305,40.463844,64.021805,61.054565000000004,39.244633,37.465004,not_test +2127,57.0,75.88331,38.600464,63.039055000000005,63.311554,37.599236,31.044292,not_test +2128,42.0,81.99582,38.425255,64.86938,67.81349,34.54296,28.016592,not_test +2129,37.0,48.879932000000004,40.354659999999996,61.862766,72.15275,29.886046999999998,29.228115000000003,not_test +2130,35.0,38.365982,29.956707,42.34802,35.14155,29.143183,29.927172,not_test +2131,37.0,36.4826,33.277992,42.91388,32.058746,34.953037,31.672735,not_test +2132,30.0,42.52884,38.23912,43.833595,30.337546999999997,34.898438,35.263855,not_test +2133,27.0,34.570972,43.70037,41.369865000000004,28.059272999999997,35.64689,40.041714,not_test +2134,36.0,32.398163000000004,48.88796,43.458434999999994,29.997524,44.705887,44.988403000000005,not_test +2135,32.0,25.951698,53.318172,43.032856,29.54024,63.173573,48.968146999999995,not_test +2136,26.0,33.16861,67.15756,34.627487,32.52098,63.457703,70.59624000000001,not_test +2137,35.0,37.792065,68.42029000000001,39.0073,37.2828,71.169235,70.32825,not_test +2138,35.0,50.31578,68.551704,40.91594,39.609787,62.261642,70.53339,not_test +2139,40.0,42.311176,67.91682,40.564957,38.456856,51.388855,71.15521,not_test +2140,35.0,41.50268,66.675186,39.90879,34.508934,55.97539499999999,71.13665999999999,not_test +2141,31.0,34.480385,64.75457,36.666637,31.108009999999997,81.28386,69.35879,not_test +2142,27.0,33.352352,51.18023,26.71351,28.744659999999996,56.346325,51.633583,not_test +2143,20.0,28.901958,50.357845000000005,21.603317,25.596429999999998,55.631817000000005,48.187927,not_test +2144,27.0,33.644634,49.12468,21.60685,21.932226,62.1539,46.553665,not_test +2145,27.0,24.865292,47.694534000000004,21.552065,22.45384,66.26308399999999,47.24496,not_test +2146,20.0,30.531769,45.838524,22.900135000000002,24.89275,58.739487,48.46904,not_test +2147,25.0,31.209728000000002,43.316074,26.93005,27.4744,38.951846999999994,47.723045,not_test +2148,42.0,32.337753,33.386196000000005,28.776721999999996,32.038807,31.475723,37.492584,not_test +2149,57.0,36.837524,31.250505,38.920097,41.477604,27.001371000000002,34.019577000000005,not_test +2150,60.0,38.690956,29.223776,47.494186,46.93262,18.496257999999997,30.248608,not_test +2151,57.0,43.56625,28.041107,51.471542,52.098557,12.098652000000001,27.919132,not_test +2152,47.0,53.683640000000004,28.382181,53.606453,55.842093999999996,14.232994,28.007070000000002,not_test +2153,47.0,60.02255,30.395706,51.883583,58.99720799999999,26.444662,30.127695000000003,not_test +2154,48.0,45.187218,53.914593,51.4363,45.23492,53.058296,53.54014,not_test +2155,47.0,47.519465999999994,54.76268,46.368317,44.00258,59.650259999999996,52.29923,not_test +2156,47.5,48.23597,54.407703000000005,45.336407,40.387015999999996,48.245007,50.14951,not_test +2157,48.0,37.880726,53.516940000000005,42.70212,38.036713,33.543083,48.380634,not_test +2158,50.0,36.296690000000005,52.797043,44.443806,38.297503999999996,33.955566,47.45875,not_test +2159,44.0,28.704508,52.461964,43.67564,36.794693,56.29296,46.842037,not_test +2160,47.0,40.649796,36.736473,37.91505,38.107002,38.461872,36.91823,not_test +2161,48.0,41.068142,36.2512,37.46575,37.78662,40.76225,37.09727,not_test +2162,38.0,49.61892,36.889114,38.58352,38.822598,34.667374,38.103123,not_test +2163,26.0,41.02514,38.35948,37.66653,36.5975,28.291489000000002,39.867996000000005,not_test +2164,20.0,38.788887,40.398483,36.227641999999996,32.436054,31.7981,42.208687,not_test +2165,12.0,30.927929,42.815937,33.117484999999995,30.546352000000002,48.685608,44.743828,not_test +2166,9.0,10.450892999999999,34.912155,10.459392999999999,12.160061,34.751816,34.39707,not_test +2167,8.0,9.807625,35.426315,10.398273,11.273937,40.030506,34.39868,not_test +2168,7.0,5.26894,36.17333,11.33527,12.452259,36.615707,34.571777000000004,not_test +2169,6.0,8.711922,36.48103,13.516151,13.808069,29.063599,34.318333,not_test +2170,7.0,12.716084,36.366806,15.030373,16.56205,26.127234,33.591824,not_test +2171,10.0,16.080920000000003,36.47323,20.974173,21.355473999999997,33.55766,32.97755,not_test +2172,12.0,16.391657000000002,32.798120000000004,19.774366,20.628149,31.511809999999997,32.207726,not_test +2173,34.0,24.1036,32.353770000000004,36.086163,37.99964,33.912537,33.27807,not_test +2174,83.0,33.966995000000004,34.744890000000005,50.97676,57.029408,31.467793,36.915737,not_test +2175,94.0,44.750057,39.080425,62.186012,69.19205500000001,29.443008000000003,42.30871,not_test +2176,98.0,63.162262,43.72591,74.075226,70.16741999999999,34.363045,47.38771,not_test +2177,85.0,68.86211,47.223763,67.6307,67.99254,48.11979,49.986015,not_test +2178,73.0,80.28912,30.256778999999998,73.917854,76.07851,28.47597,27.859901,not_test +2179,66.0,75.0126,32.90363,62.865883,60.376785,29.863613,28.683445000000003,not_test +2180,62.0,79.83118,35.380913,55.357513,48.355988,31.58499,29.488998,not_test +2181,53.0,61.408134,36.090633000000004,47.958057000000004,45.79525,31.716076,29.387767999999998,not_test +2182,51.0,58.63219,34.97312,45.84961,46.90961,29.85472,28.423628000000004,not_test +2183,44.0,39.713352,33.447734999999994,42.513424,45.753067,27.467765999999997,27.533669,not_test +2184,44.0,38.12227,44.496887,38.918743,38.389862,42.231792,41.655159999999995,not_test +2185,47.0,39.01198,41.102005,37.013676000000004,37.67355,44.377567,38.311794,not_test +2186,48.0,50.504787,37.940094,38.14929,39.295937,39.952084,34.703274,not_test +2187,36.0,41.038222999999995,36.265236,37.024887,37.037945,34.90788,32.513424,not_test +2188,30.0,38.409996,36.16688,35.386726,32.466694,36.539547,32.318042999999996,not_test +2189,32.0,30.069164,36.73988,32.27901,30.472225,47.30149,33.358703999999996,not_test +2190,29.0,33.933212,44.915905,28.009481,28.56278,46.38228,47.98237,not_test +2191,22.0,29.517508000000003,45.613354,25.065042000000002,25.48011,45.728207,48.555679999999995,not_test +2192,25.0,29.168383000000002,45.254985999999995,25.178593,23.44603,48.912113,48.00647,not_test +2193,25.0,22.14385,43.618809999999996,25.003045999999998,23.9347,50.708996,46.652,not_test +2194,23.0,28.121845,41.229896999999994,26.364935,26.355545000000003,46.152515,45.099052,not_test +2195,26.0,30.986725,39.103466,30.204556,28.696309999999997,34.99125,43.870616999999996,not_test +2196,31.0,30.277632,9.452436,31.557003,32.784584,8.365767,10.825775,not_test +2197,47.0,34.595573,9.443006500000001,40.009266,39.46092,10.35668,11.059935000000001,not_test +2198,58.0,37.851284,11.00164,47.436873999999996,44.685978000000006,10.573105,12.241475999999999,not_test +2199,101.0,43.84189,13.133078,51.80393,50.456112,10.725269,14.117245,not_test +2200,116.0,54.990680000000005,16.011597000000002,53.947277,58.462723,14.501209,16.878467999999998,not_test +2201,110.0,62.127678,20.496841,52.489219999999996,64.9433,24.04358,20.678923,not_test +2202,122.0,97.46909000000001,19.4802,101.470474,99.39255,14.796923000000001,17.101285999999998,not_test +2203,123.0,87.073105,23.702103,90.767944,84.67865,21.768072,20.634892,not_test +2204,115.0,81.501114,28.385746,79.23236,70.02754,22.507755,24.807577,not_test +2205,107.0,68.88646,31.374338,71.31801,59.007445999999995,22.304968,27.936775,not_test +2206,94.0,59.16628000000001,32.001296999999994,65.01978000000001,53.10698299999999,28.739279999999997,29.14987,not_test +2207,85.0,42.724323,31.27158,58.179134,48.725623999999996,44.491608,28.728724,not_test +2208,79.0,77.92975,64.10961,73.38507,74.31204,62.539963,62.67799399999999,not_test +2209,81.0,72.173,57.009285,67.615204,66.77734,51.27438,57.02159,not_test +2210,72.0,69.94713,49.532276,64.96091,60.140602,50.794834,49.756820000000005,not_test +2211,75.0,64.76486,44.785896,62.393097,55.317809999999994,54.344078,43.66348,not_test +2212,77.0,64.28908,43.070763,57.276752,49.693474,51.144465999999994,40.158283000000004,not_test +2213,80.0,50.696000000000005,42.323159999999994,56.5385,45.173466,36.11831,38.861332,not_test +2214,76.0,73.99956999999999,40.666668,70.1056,74.00026,43.327183000000005,42.095993,not_test +2215,60.0,57.877182,37.305264,50.411125,56.097225,33.267994,39.578907,not_test +2216,70.0,54.6504,32.306259999999995,36.389584,35.391090000000005,31.767445000000002,35.855415,not_test +2217,90.0,38.208595,27.061697,28.948759999999996,26.153202,33.50135,31.646328000000004,not_test +2218,97.0,41.56757,23.627691,28.812414,28.306068,30.419157000000002,28.058987,not_test +2219,100.0,33.15831,23.54685,32.69719,35.630390000000006,19.142256,26.15558,not_test +2220,87.0,103.90626,27.837132,100.09212,114.81397,27.66447,29.148983,not_test +2221,87.0,113.22,28.247257,99.796646,121.48643500000001,31.495827000000002,27.890717,not_test +2222,60.0,109.15715,30.063862,98.98231,118.67898000000001,26.473571999999997,27.075119,not_test +2223,68.0,107.49258999999999,33.09587,96.16804499999999,102.99503,21.958546,27.988121000000003,not_test +2224,83.0,116.3531,37.38375,97.91539,82.70689399999999,28.80664,31.204456,not_test +2225,104.0,92.97724000000001,42.72963,89.145615,71.2854,49.728188,35.900845000000004,not_test +2226,93.0,96.849625,43.12198,88.45195,95.97437,32.832806,40.29421,not_test +2227,89.0,94.10470600000001,51.40958,70.32269000000001,77.011566,46.45946,46.77192,not_test +2228,83.0,70.14646,59.883545,54.667118,60.37283299999999,47.201285999999996,53.9068,not_test +2229,79.0,71.06383000000001,65.19433599999999,45.539513,51.360462,43.29182,58.79035,not_test +2230,76.0,57.363,66.4777,39.183372,43.98928,48.715973,60.506966000000006,not_test +2231,74.0,48.845848,65.42256,36.18867,41.971146000000005,70.511765,60.314278,not_test +2232,66.0,74.69368,110.54151999999999,72.037994,73.13704,113.41075,112.96495,not_test +2233,63.0,70.47327,103.03931999999999,68.88446,71.47145,93.29694,103.59241,not_test +2234,53.0,65.7198,92.35885999999999,64.46191,65.93723,85.74428,90.577484,not_test +2235,51.0,68.66104,83.361946,58.902058,60.194527,86.02641,79.51451,not_test +2236,49.0,56.402440000000006,77.14558000000001,54.521652,52.96474,80.67099,72.49811,not_test +2237,46.0,48.38882,71.37976,53.373016,45.85499,60.25414,67.80923,not_test +2238,48.0,41.97367,73.20789,37.797577000000004,40.832977,77.93355600000001,75.09193,not_test +2239,44.0,43.87576,69.71869000000001,28.050583000000003,37.807159999999996,63.686676,71.32543000000001,not_test +2240,44.0,33.751290000000004,64.37179,25.059639999999998,33.97157,65.2038,65.56069000000001,not_test +2241,56.0,36.04103,58.883922999999996,26.602518,34.070114000000004,71.40263,59.90844,not_test +2242,64.0,36.177223,54.733288,30.753297999999997,36.41449,66.550934,55.9308,not_test +2243,69.0,41.507553,52.581830000000004,35.815329999999996,40.0976,44.311695,54.001090000000005,not_test +2244,69.0,82.053024,56.04355,74.34940999999999,73.62411,54.7666,53.698467,not_test +2245,78.0,81.27983,54.215374,74.61134,77.36567,60.45025,51.51487,not_test +2246,102.0,92.613396,52.9544,74.9683,74.3761,53.71671,49.07855,not_test +2247,99.0,59.110985,53.26991999999999,70.6552,73.055374,44.290092,48.41146,not_test +2248,52.0,69.28496,56.06318,69.61287,73.93225,46.13459,50.89785,not_test +2249,37.0,50.8105,61.23777,62.187374,75.05798,65.60399,56.06985,not_test +2250,36.75,30.842827000000003,93.73373000000001,39.810806,29.800646,95.48356,93.33713,not_test +2251,36.5,27.887445,100.951584,38.122456,27.419424,109.64865,99.63336,not_test +2252,36.25,28.020933000000003,107.02637,40.44435,29.94428,103.57636,105.46448000000001,not_test +2253,40.0,38.133476,109.544495,41.135765,30.243779999999997,93.131004,109.27876,not_test +2254,44.0,36.081715,108.43306000000001,46.736877,34.855183000000004,99.28223,110.22542,not_test +2255,49.0,54.774536,105.72757,48.711525,36.9588,129.75621,108.45951000000001,not_test +2256,60.0,49.700783,87.36774399999999,49.363575,54.06486999999999,88.1726,88.47896999999999,not_test +2257,52.0,49.978120000000004,86.410324,45.085365,52.944542000000006,79.90335999999999,86.7688,not_test +2258,47.0,44.802505,84.228325,40.35675,52.300278000000006,86.35905,84.28415,not_test +2259,41.0,51.859806,81.471695,38.780304,48.587463,93.219955,81.88883,not_test +2260,35.0,41.951668,79.10575,34.562984,42.110107,85.19453399999999,80.17306500000001,not_test +2261,43.0,36.405464,77.914986,33.896122,34.4824,59.559204,79.280624,not_test +2262,48.0,36.442333000000005,65.87435,40.32125,41.512894,63.19331999999999,65.783394,not_test +2263,51.0,38.993390000000005,65.78224,38.75183,43.514472999999995,67.48926,64.55797,not_test +2264,48.0,45.443943,66.70119,43.83161,46.122036,60.7954,63.638011999999996,not_test +2265,43.0,45.54919,67.93247,48.81646,51.73429,52.146156,63.498203000000004,not_test +2266,41.0,53.303233999999996,69.49958000000001,54.615154000000004,58.25521,54.61379,64.59633000000001,not_test +2267,52.0,56.939663,71.94530999999999,60.213303,64.67532,74.15951,66.94784,not_test +2268,103.0,51.941303000000005,50.713425,64.52615,55.581880000000005,48.99358,51.003273,not_test +2269,149.0,57.08031,54.97759,66.37295999999999,60.772247,53.51944,53.034440000000004,not_test +2270,138.0,64.56175,60.364883,64.40101999999999,62.379093000000005,54.944427000000005,55.27619,not_test +2271,128.0,83.80636,64.243416,64.99703000000001,61.315243,57.05831,56.37396999999999,not_test +2272,67.0,65.83501,66.08993000000001,60.63208,60.2318,64.464264,56.832840000000004,not_test +2273,28.0,75.35436999999999,67.39801,59.45836,59.164715,77.86941999999999,58.339024,not_test +2274,28.0,22.012651,71.26603,28.607121999999997,21.887875,71.07079,66.60436999999999,not_test +2275,49.0,19.760273,73.8005,29.189827,22.869343,74.43386,67.73097,not_test +2276,59.0,20.718788,77.05402,29.350178000000003,24.689073999999998,70.03331999999999,70.63407,not_test +2277,77.0,21.295856,79.42514,36.64322,30.557515999999996,65.684235,73.69313000000001,not_test +2278,69.0,36.948555,79.794205,39.324253000000006,33.68975,70.32833000000001,75.10133,not_test +2279,62.0,33.043,78.233765,38.049126,32.664143,86.1764,74.11283,not_test +2280,64.0,58.884890000000006,42.581154,54.982519999999994,51.153984,40.425583,40.04788,not_test +2281,48.0,53.59194599999999,43.5493,42.55592,45.119633,43.210976,41.675552,not_test +2282,77.0,59.94555,45.417915,34.212612,38.459526000000004,42.260094,44.971985,not_test +2283,61.0,49.356045,46.681129999999996,26.05359,32.775146,40.1203,47.25632,not_test +2284,56.0,41.71852,47.37595,25.229078,29.270965999999998,42.543682000000004,47.534264,not_test +2285,46.0,29.155765999999996,48.838295,24.961706,28.75889,53.319984,47.086964,not_test +2286,46.0,34.549202,48.764359999999996,38.867302,39.190975,51.373238,48.1697,not_test +2287,44.0,35.32685,45.804840000000006,43.231834,42.594494,51.658234,46.612840000000006,not_test +2288,47.0,38.32895,43.419357,49.442795000000004,46.275402,44.96588,44.42243,not_test +2289,59.0,44.703674,42.119133000000005,56.546654000000004,52.90159,37.628395000000005,42.131393,not_test +2290,70.0,52.377544,42.73134,62.30860500000001,57.844635,38.02006,40.699455,not_test +2291,90.0,65.80651,45.790646,64.810745,62.627186,49.680465999999996,40.911644,not_test +2292,145.0,103.94991,49.58352,90.880615,94.53218000000001,50.977990000000005,50.974647999999995,not_test +2293,156.0,96.85808,52.166996000000005,80.795296,88.18132,56.139990000000004,53.30753000000001,not_test +2294,153.0,102.32938,56.654230000000005,74.68296,84.72906,55.570009999999996,56.92369,not_test +2295,143.0,85.41044000000001,61.25488000000001,63.192145999999994,81.78514,55.711163,60.775753,not_test +2296,102.5,83.75565999999999,64.62619000000001,58.784252,77.18216,63.646980000000006,63.886288,not_test +2297,62.0,67.17659,66.47439,53.012978000000004,70.35189,80.35316999999999,65.69999,not_test +2298,39.0,58.7836,139.02136000000002,60.24616999999999,62.678215,152.50974,145.91577,not_test +2299,42.0,58.681377000000005,132.8354,59.152359999999994,61.294669999999996,137.35805,141.06287,not_test +2300,34.0,58.074516,119.66158999999999,61.152609999999996,63.800087,133.33676,125.556145,not_test +2301,45.0,51.53812,107.57185,63.56636999999999,62.868843000000005,133.8291,110.71896000000001,not_test +2302,42.0,66.47818000000001,100.30746500000001,64.9164,63.05921,123.36315,103.72578,not_test +2303,34.0,53.04557,95.544174,65.195206,60.51021,92.2682,103.01876,not_test +2304,33.0,34.073370000000004,49.361523,29.24793,33.062020000000004,53.16158000000001,55.95259,not_test +2305,35.0,27.461678000000003,52.8061,23.032612,29.214334,70.07667,56.55595400000001,not_test +2306,38.0,27.217363,56.58481,17.925262,26.792634999999997,63.506783,57.25125,not_test +2307,42.0,21.076885,58.254158,16.027271,24.540737,50.692436,57.541990000000006,not_test +2308,38.0,17.37748,57.49565,15.995312,24.242905,55.736683,57.366558,not_test +2309,43.0,15.371128,56.189640000000004,17.81186,25.719753,88.60906,57.113234999999996,not_test +2310,49.0,40.81838,57.040592000000004,37.03255,43.289543,58.38649,48.494625,not_test +2311,56.0,41.390575,52.150303,38.765353999999995,46.526413,60.7771,39.624527,not_test +2312,62.0,40.573677,46.781357,44.675507,51.624584000000006,43.94863,32.09601,not_test +2313,37.0,47.915146,43.592834,53.969875,61.41908299999999,25.321426000000002,29.263916,not_test +2314,36.0,42.231590000000004,43.71817,51.333484999999996,64.35174599999999,25.889591,31.830444,not_test +2315,36.0,64.99962,46.155937,51.762159999999994,64.39284,53.040627,37.592773,not_test +2316,21.0,35.568123,44.926421999999995,31.266440000000003,32.751526,44.489445,45.919132,not_test +2317,30.0,34.14762,43.038709999999995,32.934525,35.244408,53.089172,45.087559999999996,not_test +2318,22.0,30.827457,45.308865000000004,33.778835,35.18223,46.424690000000005,45.192245,not_test +2319,29.0,36.845929999999996,51.02388,34.50889,35.82843,37.54156,46.28243,not_test +2320,42.0,33.682037,58.975353000000005,41.680557,40.75125,45.487072,49.012592,not_test +2321,45.0,53.52655,67.79841,44.94741,43.510334,78.55187,53.865696,not_test +2322,56.0,40.599014000000004,145.23682,41.9733,42.492313,159.67356999999998,150.1977,not_test +2323,55.0,36.756409999999995,139.56564,37.128334,35.111744,124.31553999999998,144.07407,not_test +2324,54.0,30.862108000000003,125.52368999999999,32.00926,29.835579,125.52082,130.48512,not_test +2325,56.0,30.701746000000004,111.18768999999999,28.738325,27.941435,143.49303999999998,117.72317,not_test +2326,50.0,22.28032,101.38396999999999,24.815166,26.280005,140.03386,110.20369,not_test +2327,44.0,16.553955,95.26082,24.735756,25.190967999999998,92.2074,106.19063,not_test +2328,34.0,35.290817,46.410233000000005,37.043803999999994,40.7407,49.623272,44.69912,not_test +2329,41.0,38.17553,51.587875,34.002037,39.564438,68.4807,46.9305,not_test +2330,48.0,40.56727,57.28885699999999,38.892544,42.00926,59.657066,50.40995,not_test +2331,57.0,43.653393,59.836254000000004,45.683212,46.66663,45.061028,51.514922999999996,not_test +2332,73.0,57.637809999999995,59.43448299999999,53.67639499999999,53.95856,55.253043999999996,49.92403,not_test +2333,96.0,77.476524,59.622818,63.06715,63.114105,102.57372,48.756386,not_test +2334,78.0,99.27215600000001,41.7922,100.17763000000001,94.83654,36.0965,34.68639,not_test +2335,78.0,89.09267,39.466606,97.294495,91.39972,48.40356,36.556396,not_test +2336,82.0,88.85611,37.253215999999995,95.739685,86.12810999999999,41.301277,37.991547,not_test +2337,82.0,71.37744,35.30833,87.538635,83.53662,25.488979999999998,37.964943,not_test +2338,76.0,71.53806,35.026474,81.57204,78.893486,21.2305,36.985455,not_test +2339,70.0,48.335784999999994,37.994053,76.498184,73.28662,41.43354,36.57846,not_test +2340,75.0,60.489304000000004,60.007862,63.62291,66.7118,59.99896,58.55419499999999,not_test +2341,12.0,60.237080000000006,63.151695,56.44542,63.889506999999995,68.90151,60.756393,not_test +2342,16.0,55.57505,70.434586,54.436386,63.472088,62.498633999999996,63.746356999999996,not_test +2343,13.0,48.6714,78.61865999999999,56.5317,62.55774,56.27053000000001,66.80436,not_test +2344,15.0,64.05349,84.756325,58.754242000000005,62.675034,69.145065,69.98573,not_test +2345,14.0,52.007003999999995,87.82976,57.843376,60.16639,106.460945,73.63676,not_test +2346,10.0,10.108772,46.990814,12.543716,13.949604,46.825584,40.551421999999995,not_test +2347,10.0,4.490608,49.683659999999996,10.180748,10.447399,42.891870000000004,42.193794,not_test +2348,10.0,1.3537063999999999,50.967743,6.9400826,9.355774,48.443993,43.238003000000006,not_test +2349,10.0,1.8460846000000002,49.395332,6.5004845,8.965031,53.234607999999994,40.770264000000005,not_test +2350,10.0,0.0,46.14953,8.738392,9.701138,47.509014,35.336338,not_test +2351,10.5,0.0,44.14058,12.296745,11.314892,30.548065,30.767313,not_test +2352,11.0,5.6746063,25.859254999999997,11.929985,16.172214999999998,20.634117,23.452479999999998,not_test +2353,18.0,6.2583237,25.628505999999998,16.747695999999998,24.0281,27.269352,21.66137,not_test +2354,25.0,11.236561,28.013813,25.893432999999998,35.128029999999995,24.832653,20.780487,not_test +2355,32.0,24.463478,31.255665000000004,43.774483000000004,52.58461,20.48048,21.606479999999998,not_test +2356,41.0,38.989853000000004,34.136955,52.28731,66.494934,25.617483,24.332878,not_test +2357,40.0,62.150259999999996,36.65039,57.495365,82.61323,45.6865,28.199818,not_test +2358,31.0,38.11039,55.52665699999999,40.046463,43.828598,51.78521,57.087967000000006,not_test +2359,40.0,34.56227,57.68342,37.95765,41.847836,67.3789,59.73457,not_test +2360,54.0,39.852818,58.766090000000005,37.418929999999996,38.75844,67.05844,62.816919999999996,not_test +2361,51.333332,34.860535,59.012024,37.021027000000004,40.054221999999996,60.833916,65.43764,not_test +2362,48.666668,48.428222999999996,59.230297,38.98636,42.102996999999995,64.15186,66.88295,not_test +2363,46.0,34.307724,60.006725,34.572792,37.5754,84.13108000000001,66.91224,not_test +2364,50.0,34.723488,56.260906000000006,37.94402,41.4598,53.40044,54.281452,not_test +2365,54.0,30.82055,58.20571999999999,33.65902,38.34686,69.80421,61.350019999999994,not_test +2366,55.0,34.495384,59.19398,32.09796,35.651413,72.98604,67.55875,not_test +2367,53.0,33.538067,59.500416,37.663740000000004,39.494713,68.136475,71.36156,not_test +2368,35.0,48.987021999999996,59.446312,40.392883000000005,40.803955,67.01379,72.188835,not_test +2369,26.0,40.928616,59.059387,38.57568,39.50631,77.5017,70.42959599999999,not_test +2370,24.285715,24.900135000000002,69.5659,21.550545,21.381134,71.63377,68.59517,not_test +2371,22.571428,18.546383,62.016804,18.520641,16.452637,64.8269,60.80274,not_test +2372,20.857143,15.817863000000001,52.944880000000005,14.597347000000001,15.196106,63.400909999999996,50.745102,not_test +2373,19.142857,9.908363,46.566,13.385319,15.022658999999999,62.062836,43.256783,not_test +2374,17.428572,5.325618700000001,44.622166,13.819851000000002,15.472439000000001,54.2367,40.907596999999996,not_test +2375,15.714285999999998,6.954082499999999,45.6909,16.044231,17.476882999999997,38.526703000000005,42.67702,not_test +2376,14.0,18.359894,26.615444,16.398903,22.50455,23.925234,24.687624,not_test +2377,33.666668,20.480076,30.859625,20.540157,25.527485000000002,28.468832,26.788171999999996,not_test +2378,53.33333199999999,24.770252,36.158553999999995,31.978462,35.031985999999996,27.856833,29.09042,not_test +2379,73.0,38.647729999999996,39.352455,53.47636800000001,46.45649,26.716070000000002,29.881208,not_test +2380,87.0,54.381446999999994,40.08853,64.34263,57.979015000000004,32.485382,29.507137,not_test +2381,90.0,76.663475,40.693203000000004,70.23751999999999,71.67499000000001,48.515209999999996,29.929655,not_test +2382,94.0,101.45299,15.804617000000002,90.121765,95.53256,9.017857000000001,14.636123999999999,not_test +2383,58.0,93.38274399999999,17.313914999999998,80.556885,86.37092,16.772346,15.820112,not_test +2384,52.0,100.95727,21.042896,77.08731,84.35481,18.740660000000002,17.618824,not_test +2385,46.0,83.28186,25.928007,71.274765,80.101776,19.728613,19.772213,not_test +2386,43.0,86.14922,31.108796999999996,69.62286,76.19273000000001,27.746632,22.311514000000003,not_test +2387,44.0,64.7814,36.00592,67.74138,71.5863,46.25042,25.161018,not_test +2388,41.0,45.882346999999996,47.537791999999996,47.148559999999996,46.607826,42.831585,42.223440000000004,not_test +2389,38.0,49.286762,51.9367,48.0371,46.847412,52.54744,44.161102,not_test +2390,50.0,53.0244,56.44623000000001,47.648,44.976753,48.98556,46.33592,not_test +2391,66.0,47.743415999999996,58.93316,44.320957,40.715134,43.064972,48.118843,not_test +2392,74.0,51.47157,58.805096,42.734184,36.227684,49.50765,49.27048,not_test +2393,36.0,38.779990000000005,57.230731999999996,37.89393,34.001064,73.73597,49.913902,not_test +2394,38.0,22.727604,51.842667,30.013855,26.349337,52.048367,53.696426,not_test +2395,37.0,19.802094,49.424236,26.373375,25.631557,40.110046000000004,50.88534,not_test +2396,35.0,26.616984999999996,44.240584999999996,28.179209999999998,27.61647,38.043713000000004,46.424137,not_test +2397,45.666668,31.739959999999996,37.97551,32.911995000000005,30.498734999999996,38.938109999999995,40.537758000000004,not_test +2398,56.33333199999999,37.398272999999996,32.663498,38.415465999999995,35.24476,33.034588,34.162827,not_test +2399,67.0,49.251583000000004,29.687775,45.676586,43.420662,16.86525,28.918373,not_test +2400,87.0,74.074455,72.18084,81.66765600000001,77.56657,79.10715,76.082306,not_test +2401,99.0,78.35795,70.04579,81.484215,87.382385,71.41164,70.75473000000001,not_test +2402,101.0,98.30249,64.01612,83.605644,96.65608,76.78061,60.0639,not_test +2403,131.0,95.2738,56.497640000000004,79.87386,100.858246,82.265785,48.59175,not_test +2404,131.0,121.69055,49.517258,80.99654,102.501816,71.70232,40.100163,not_test +2405,117.0,91.43138,43.92089,74.77028,101.39502,40.26497,35.649727,not_test +2406,86.0,105.15323000000001,53.017315,101.57428,105.91881599999999,55.905663,58.81364,not_test +2407,85.0,86.24195,54.129940000000005,94.35766600000001,93.93543000000001,56.21406999999999,60.23591999999999,not_test +2408,93.0,91.9906,55.496993999999994,85.71279,88.67334,47.420918,60.851227,not_test +2409,99.0,75.07311999999999,56.59186,76.83364,82.2072,39.301003,60.979232999999994,not_test +2410,96.0,63.314769999999996,57.507515000000005,70.85169,80.01538000000001,42.586104999999996,60.78161600000001,not_test +2411,78.0,47.941097,58.745532999999995,65.871635,75.541115,59.992313,60.09927,not_test +2412,76.0,78.30963,40.243813,77.65377,78.058044,37.47485,38.574642,not_test +2413,85.0,70.687454,41.72627,74.50972,75.85185,44.816513,40.096920000000004,not_test +2414,86.0,67.46202,43.393879999999996,68.45059,68.30306,39.229496000000005,41.506029999999996,not_test +2415,60.0,62.10544,44.19794,62.354133999999995,60.34649,30.307734999999997,41.24171,not_test +2416,56.0,64.21076,44.341557,58.364635,52.739143000000006,32.260036,39.522575,not_test +2417,46.0,47.855903999999995,44.977965999999995,52.137190000000004,42.443645000000004,51.747677,38.19741,not_test +2418,51.0,42.977165,42.12251,39.96843,44.461000000000006,37.093975,39.58016,not_test +2419,54.0,29.367620000000002,42.12105,34.682303999999995,45.929961999999996,41.555126,38.012367,not_test +2420,54.0,40.657276,44.734646000000005,34.127975,45.942448,38.455677,40.001877,not_test +2421,47.0,43.213028,49.92926,38.338493,48.790863,35.861755,45.71112,not_test +2422,73.0,50.691223,56.728019999999994,44.76072,55.26765,44.280815000000004,53.200511999999996,not_test +2423,83.0,68.28217,63.40065,52.437775,67.72544,67.07605,59.435875,not_test +2424,119.0,96.19391999999999,93.348,96.819855,84.370384,95.378845,95.53296,not_test +2425,114.0,112.67703999999999,93.45211,95.81084,88.24769599999999,85.11522,93.65144000000001,not_test +2426,122.0,125.35516000000001,90.52013000000001,98.88434000000001,84.43714,85.17823,89.54033000000001,not_test +2427,123.0,110.72818000000001,85.34900999999999,95.048004,82.97041,88.52869399999999,85.51546,not_test +2428,125.0,110.78263000000001,79.01165999999999,94.54127,81.59496,83.79704,82.56444,not_test +2429,105.0,83.881424,72.62979,86.9102,83.37808000000001,65.6157,80.04001,not_test +2430,118.0,96.60611,84.76308,96.53035,95.38109,86.55849,85.58938,not_test +2431,131.0,78.69261999999999,79.060425,91.089066,86.22278,75.58066600000001,78.61362,not_test +2432,113.0,76.90245,70.80020999999999,86.74150999999999,81.32526999999999,74.56262,69.12275,not_test +2433,113.0,67.778595,62.98893399999999,77.85933,76.839584,76.117165,61.054855,not_test +2434,114.0,58.25544,58.214819999999996,70.66832,72.767746,69.79326999999999,57.123830000000005,not_test +2435,106.0,45.868053,57.36036,67.24336,66.796616,51.794483,57.439163,not_test +2436,98.0,95.892235,84.05476999999999,101.21446999999999,99.10538000000001,79.42515,88.6348,not_test +2437,96.0,90.930954,81.43556,99.61296,98.94606,78.46149,85.8324,not_test +2438,95.0,90.56521,77.126205,95.91595500000001,93.176834,84.65156,78.95536,not_test +2439,85.0,85.94951,72.11703,94.86058,91.66467,85.995255,71.59751999999999,not_test +2440,80.0,87.487465,67.90565,90.93019,88.84651,73.07963000000001,67.05034,not_test +2441,105.0,63.57588199999999,65.82427,83.45591,84.760345,47.842674,66.26755,not_test +2442,94.0,110.185005,55.360065000000006,103.38469,95.57318000000001,52.730072,55.496166,not_test +2443,57.0,95.03805,60.862080000000006,99.12125,94.88035,61.76110500000001,59.19493000000001,not_test +2444,56.0,107.392044,70.066986,91.74011,98.20477,61.885765,65.136215,not_test +2445,60.0,96.89184,79.02226,104.27801,103.25347,61.58262,71.32564,not_test +2446,69.0,123.87433999999999,85.09747,117.4729,107.323975,72.52044000000001,76.46019,not_test +2447,70.0,128.95862,88.18222,125.04954,117.44125,98.531166,80.25984,not_test +2448,73.0,82.53969599999999,123.37918,83.97009,71.55887,121.75186000000001,122.340195,not_test +2449,152.0,81.33555600000001,122.02138000000001,85.68431,80.00671,113.83296000000001,120.21388,not_test +2450,175.0,88.71553,117.77763,82.1156,79.21941,119.23381,116.17598000000001,not_test +2451,158.0,83.67866,112.73376499999999,78.03094499999999,81.03728000000001,125.79176000000001,112.9312,not_test +2452,163.0,100.25799599999999,107.79881,77.11796,84.87971999999999,117.64031000000001,111.103195,not_test +2453,127.0,76.279335,102.62799,69.48826600000001,86.65939,89.342606,109.163086,not_test +2454,86.0,113.97601999999999,107.412186,111.94828999999999,112.45381,107.54873,110.16578999999999,not_test +2455,73.0,104.007515,103.13704,103.30059,95.45109599999999,96.13398000000001,103.90467,not_test +2456,75.0,101.553696,97.190155,98.37829599999999,90.555984,97.702286,96.563705,not_test +2457,57.0,97.96443000000001,91.788,90.62973000000001,85.31302,102.17503,91.03872,not_test +2458,72.0,83.12989,88.09146,84.418526,79.40899,96.334946,88.3822,not_test +2459,78.0,63.861206,85.920525,80.93424,71.46687,75.7387,87.6333,not_test +2460,90.0,87.61684,83.998436,81.58504,76.58543399999999,80.85165,81.68481,not_test +2461,74.0,79.13405,82.42313,77.62951,75.68665,83.31042,79.35356999999999,not_test +2462,63.0,76.33869,80.313324,73.428154,72.51187,79.45430999999999,75.759,not_test +2463,72.0,71.07757600000001,77.735794,72.21118,69.90522,72.581665,73.02659,not_test +2464,50.0,82.11610999999999,75.81285,69.531364,68.459076,69.40078000000001,72.88455,not_test +2465,46.0,64.15641,76.040634,63.021632999999994,63.170376,74.68926,75.41627,not_test +2466,42.0,53.919136,69.064285,42.21118,47.502853,64.83543,68.883965,not_test +2467,52.0,42.278940000000006,80.4111,35.770435,56.685706999999994,74.0674,79.054276,not_test +2468,60.0,63.075222,94.47319,36.248512,65.46433,75.54423,94.173615,not_test +2469,75.0,73.353516,105.20595,46.348816,70.77598,76.977135,108.64153999999999,not_test +2470,80.0,90.74983,110.12903999999999,68.276825,76.765915,88.808266,117.31813999999999,not_test +2471,86.0,106.68971,111.118645,84.971016,93.57539,114.08837,118.269196,not_test +2472,105.0,102.27954,146.54224,102.84337,84.51254,146.71667,147.67035,not_test +2473,103.0,101.31425,143.19513,102.35852,87.925255,136.83328,141.90071,not_test +2474,110.0,109.79156499999999,136.41263999999998,100.15207,81.66046,140.86118000000002,133.12407,not_test +2475,90.0,105.67108,129.5434,96.83887,79.36615,147.02698,125.94183000000001,not_test +2476,52.0,110.55955,124.31608999999999,93.65202,77.80830999999999,139.11553999999998,122.42518600000001,not_test +2477,58.0,86.61728000000001,120.260025,85.781715,72.29613,111.00468400000001,121.25901999999999,not_test +2478,62.0,56.96801,61.519695,50.811134,54.035423,57.3559,59.047219999999996,not_test +2479,66.0,56.328876,64.99736999999999,43.265747,58.483990000000006,67.43358,58.9741,not_test +2480,63.0,58.970528,70.007866,44.64159,60.037285,61.372890000000005,60.827328,not_test +2481,94.0,47.297062,73.19922,42.958046,68.22584,49.24654,62.16843000000001,not_test +2482,89.0,56.131935,74.38920999999999,42.30553,60.819412,49.807945000000004,62.589024,not_test +2483,77.0,41.010414000000004,76.27299000000001,47.649853,58.042366,74.45879000000001,63.892242,not_test +2484,72.0,82.12892,74.68809499999999,76.62182,74.67368,70.55859,74.29162600000001,not_test +2485,64.0,73.00785,72.91283,70.785995,73.73898,78.35956999999999,72.96475,not_test +2486,56.0,71.732605,69.92195,66.439545,70.952095,70.90561,70.82131,not_test +2487,47.0,65.218025,66.45262,64.0642,68.99000500000001,58.44865,68.7159,not_test +2488,39.0,77.66847,64.429886,62.24175,67.26954,57.47656,67.84081,not_test +2489,30.0,60.68141,65.63754,55.852013,60.16916,76.87526,68.87465,not_test +2490,31.0,30.578765999999998,85.99891,26.620552000000004,30.931704999999997,80.77696999999999,84.3905,not_test +2491,25.0,29.147034,93.68925,23.842625,31.725689000000003,93.25308000000001,91.50326,not_test +2492,21.0,36.387985,104.104385,27.440617,35.736336,92.94071,100.75588,not_test +2493,36.0,42.17002,112.491875,32.85115,39.742508,91.62205,108.41838,not_test +2494,46.0,47.76014,116.35746,42.482085999999995,46.20794,105.23815,112.69108999999999,not_test +2495,90.0,64.46839,116.62874,51.596832,56.31994,138.94464,114.296875,not_test +2496,162.0,101.21406999999999,88.728775,103.38089000000001,85.40585,87.976524,84.996895,not_test +2497,146.0,83.09277,87.77338,99.56746,81.93686,85.530464,85.11434,not_test +2498,154.0,80.048164,86.40146,96.58388000000001,74.33854000000001,87.060936,85.62861,not_test +2499,89.0,61.560703000000004,84.9817,91.8532,71.32356999999999,87.753006,86.33854000000001,not_test +2500,29.0,66.33765,83.43549,90.45141600000001,70.339424,83.32061,86.47622,not_test +2501,26.0,44.356629999999996,81.52044000000001,78.118866,64.049355,73.97153,85.31076,not_test +2502,26.0,35.36466,91.64406,26.511271999999998,29.032883,92.04924,84.28003000000001,not_test +2503,27.0,33.223446,93.58507,25.382782000000002,26.903488,93.35515,85.50177,not_test +2504,26.0,32.607445,94.031586,26.962646000000003,27.871966999999998,96.71634,87.46123,not_test +2505,23.0,34.241287,92.041084,26.609108000000003,26.321509999999996,97.25769,88.61649,not_test +2506,31.0,36.111153,87.739876,26.810863,26.961116999999998,91.250046,87.36345,not_test +2507,28.0,35.49086,82.504425,30.94878,29.783298,79.57366,83.375336,not_test +2508,28.0,37.346596000000005,36.87662,28.387096000000003,31.721508,36.486626,39.1025,not_test +2509,32.0,36.585495,36.050247,27.151783000000002,31.927497999999996,37.39978,38.444824,not_test +2510,32.0,35.142754,37.81713,23.910145,30.602203000000003,34.943542,39.523365000000005,not_test +2511,36.0,27.437565000000003,41.244686,20.866219,26.275166,35.164845,42.830875,not_test +2512,42.0,20.690929999999998,46.47521,17.275032,23.156319,44.909847,48.368313,not_test +2513,48.0,14.142117,54.08328,14.995445000000002,20.924961,65.26493,55.11615,not_test +2514,51.0,53.7257,55.609802,40.933014,47.916428,56.419674,52.51859,not_test +2515,57.0,40.705956,60.607113,32.62299,47.837723,63.518795,55.460606000000006,not_test +2516,51.0,42.744507,65.86143,35.004677,49.90106,58.450962,59.18781,not_test +2517,48.0,44.30298,69.21,43.083313000000004,54.198356999999994,55.033104,61.63770699999999,not_test +2518,54.0,49.422314,70.00189,52.022728,59.218807,67.89820999999999,62.152972999999996,not_test +2519,58.0,69.86216,69.21248,59.850277,71.33498399999999,99.07669,61.7311,not_test +2520,54.0,54.606453,32.421482,65.79879,57.90461,26.512333,27.481983000000003,not_test +2521,50.0,55.352782999999995,34.96438,58.811066000000004,55.959324,36.38107,34.192375,not_test +2522,49.0,57.658424,41.90518,53.675842,52.042972999999996,33.009876,46.403786,not_test +2523,44.0,51.492477,48.079994,52.153282,47.095093,29.82106,57.522845999999994,not_test +2524,42.0,59.578003,50.8349,50.395355,45.712486,45.842754,62.853019999999994,not_test +2525,45.0,32.53026,51.650414000000005,46.79943,43.760757,88.07519,62.403130000000004,not_test +2526,41.0,47.007427,27.321129,44.985275,45.845259999999996,37.696144,29.487602000000003,not_test +2527,37.0,44.235214,27.302742,37.894875,42.930355,39.466362,30.017784000000002,not_test +2528,32.0,44.186623,25.440310999999998,39.144936,41.830544,27.088058,31.438923,not_test +2529,41.0,38.78345,21.384613,37.85405,38.864384,12.049175,30.446009999999998,not_test +2530,43.0,40.799026,18.229912,37.295326,38.810207,10.48275,26.39637,not_test +2531,45.0,34.40307,20.141598000000002,43.79071,42.700455,30.05048,22.038353,not_test +2532,37.0,52.97739,40.880783,42.3463,47.919715999999994,45.05346,47.173615000000005,not_test +2533,36.0,51.475229999999996,39.60314,40.848114,46.755577,51.2663,45.402687,not_test +2534,37.0,51.94832,40.905426,38.54679,42.541115000000005,43.429344,44.229576,not_test +2535,35.0,42.386672999999995,44.811516,35.79808,37.832314000000004,36.12527,46.156456,not_test +2536,32.0,44.25223,50.8051,32.184616,33.940384,46.56955,51.855995,not_test +2537,28.0,33.53268,57.75595,28.484679999999997,31.192875,79.35065,59.228840000000005,not_test +2538,31.0,30.660294,63.199619999999996,27.663459999999997,28.021202000000002,62.331867,64.27306999999999,not_test +2539,34.0,28.886421000000002,71.29853,24.555122,31.707195000000002,77.21797,68.4886,not_test +2540,33.0,33.994209999999995,76.59801999999999,29.24707,33.570446000000004,93.71452,70.8483,not_test +2541,39.0,39.77387,76.23087,33.83106,38.263405,95.35233000000001,69.13753,not_test +2542,47.0,45.979298,71.15745,42.867188,41.75251,75.20284000000001,64.56439,not_test +2543,56.0,62.328068,65.322266,52.548664,51.073063,42.229294,60.884403000000006,not_test +2544,87.0,61.141785,41.95431,83.36749,64.10813,30.156607,29.777987,not_test +2545,93.0,63.42909,38.578796000000004,82.7714,70.86735999999999,33.749970000000005,26.145231,not_test +2546,86.0,70.52524,39.32877,77.717964,72.18566,29.523127000000002,22.557157999999998,not_test +2547,78.0,67.344185,42.681885,75.83818000000001,78.13095,24.958285999999998,20.714798000000002,not_test +2548,81.0,73.94605,45.71206,73.16758,79.49063000000001,30.547953000000003,21.331235999999997,not_test +2549,68.0,61.761776,46.380309999999994,66.08510600000001,77.319725,50.500374,23.691431,not_test +2550,52.0,70.13039,44.63511,66.06106,61.729859999999995,43.485367,51.885902,not_test +2551,53.0,64.14496,46.71133,59.804775,57.667473,43.968697,55.029033999999996,not_test +2552,59.0,60.459892,48.90653,61.843509999999995,58.403076,37.480385,57.769073,not_test +2553,59.0,50.9853,50.24661,59.08218000000001,56.6351,32.317894,58.611965000000005,not_test +2554,62.0,53.172134,50.583523,57.54639399999999,55.125217000000006,37.534737,57.132732,not_test +2555,64.0,42.611202,50.541000000000004,61.591324,56.010487,55.09965,54.254419999999996,not_test +2556,61.0,64.29255,34.634678,59.582359999999994,63.6922,32.419259999999994,30.48037,not_test +2557,54.0,60.609386,38.402813,55.195457,61.652836,45.39648,34.44782,not_test +2558,50.0,61.626175,44.304759999999995,53.365738,59.319363,44.354393,41.672844,not_test +2559,47.0,52.143208,50.14007,51.088786999999996,57.113567,39.807179999999995,50.439796,not_test +2560,47.0,59.892387,54.465164,48.633140000000004,54.61131999999999,47.360397,58.300647999999995,not_test +2561,46.0,46.107544,57.11411,43.586132,48.718533,73.56161999999999,63.097664,not_test +2562,47.0,44.550606,54.157436,39.911163,45.136925,55.35596999999999,54.90426,not_test +2563,45.0,37.062714,53.252342000000006,35.41607,46.546356,50.18138,53.675,not_test +2564,51.0,42.906628000000005,51.307190000000006,39.258224,47.576653,50.619846,51.733894,not_test +2565,54.0,52.406815,49.056957000000004,46.004932000000004,52.132896,52.57281,49.93049,not_test +2566,65.0,63.086575,46.834663,54.755653,57.66228,49.88993,48.356846000000004,not_test +2567,65.0,93.82512,44.59428,62.4291,64.97856,39.931328,46.529633000000004,not_test +2568,64.0,58.878986,59.34605,68.32146,63.034992,60.444916000000006,61.194786,not_test +2569,63.0,56.559166000000005,56.886776,62.550934,59.871178,58.65615,58.792706,not_test +2570,39.0,55.836059999999996,54.11419,58.434204,54.833180000000006,58.938990000000004,54.344280000000005,not_test +2571,32.0,51.730484000000004,51.91921,57.604813,49.780357,57.00988,49.649715,not_test +2572,28.0,57.622528,50.582687,56.48894,48.743179999999995,49.59365,46.510490000000004,not_test +2573,31.0,38.308279999999996,49.854637,53.348890000000004,47.068870000000004,37.835359999999994,45.72353,not_test +2574,34.5,38.77597,57.868846999999995,32.46051,31.512184,59.51693,60.363735,not_test +2575,38.0,36.970207,56.29433,31.353474,31.120895,56.29805,57.874123,not_test +2576,45.0,36.05254,53.374134,32.930084,33.91778,56.392677,54.311980000000005,not_test +2577,44.0,38.337517,50.28581,32.71277,33.525729999999996,56.144142,51.112034,not_test +2578,45.0,39.677174,48.338577,32.954727,34.680763,51.56136,49.08672,not_test +2579,50.0,39.430479999999996,48.190117,37.689423,38.662056,42.156659999999995,48.128772999999995,not_test +2580,51.0,53.260796,45.036842,47.22368,49.730920000000005,46.530556,47.145775,not_test +2581,49.0,48.814087,46.335476,45.090965000000004,48.582565,50.378040000000006,46.301790000000004,not_test +2582,45.0,46.949946999999995,49.108146999999995,42.85015,44.20077,48.109856,46.201363,not_test +2583,48.0,38.502753999999996,52.581284,39.971443,39.524986,45.8908,47.82842,not_test +2584,52.0,33.576225,56.181587,36.729332,35.913994,51.388785999999996,51.417792999999996,not_test +2585,53.0,26.865672999999997,59.585213,33.196636,33.664165000000004,66.82696999999999,56.0017,not_test +2586,56.0,39.63241,66.41086999999999,45.595665000000004,44.844013000000004,63.892483,66.34395,not_test +2587,56.0,35.800255,67.96494,39.013474,40.374126000000004,69.39849,67.31869,not_test +2588,57.0,38.944206,69.149734,41.017513,39.249275,76.46105,67.57514,not_test +2589,60.0,43.27422,69.26037,49.577904,43.67344,77.72,67.187996,not_test +2590,64.0,48.546974,68.09914,56.97074,49.89455,69.51695,66.48943,not_test +2591,61.0,64.78161999999999,66.16518,63.835876,58.380936,55.198547,65.83556,not_test +2592,60.0,61.34093000000001,35.240303000000004,71.00641,61.091305000000006,31.815174,34.130157000000004,not_test +2593,61.0,61.08915699999999,37.099957,67.97406,61.273556000000006,36.919715999999994,34.37475,not_test +2594,45.0,63.88442,40.763374,63.253223,60.342525,36.849228000000004,36.094654,not_test +2595,16.0,57.424225,43.935146,61.362152,58.163433,35.411278,39.0123,not_test +2596,17.0,64.1304,45.562267,60.59636999999999,57.63330500000001,39.272217,42.431507,not_test +2597,16.0,40.890846,46.3634,55.87008,56.866837,51.828693,45.451965,not_test +2598,16.0,21.060131,51.605595,15.235653,18.700222,51.56147,49.71286,not_test +2599,13.0,19.434364000000002,48.883545,16.760704,19.641922,55.45618,45.844066999999995,not_test +2600,13.0,18.201995999999998,44.98086,17.789085,22.109623000000003,53.41828,40.86891,not_test +2601,14.0,19.816166,41.538723,18.755531,23.816001999999997,46.92579,37.20288,not_test +2602,22.0,25.507381,39.723106,19.058147,24.816494,40.870315999999995,36.380226,not_test +2603,23.0,25.345585,39.619403999999996,22.78706,29.029419,39.85965,38.123325,not_test +2604,22.0,23.439949,57.286724,23.553204,24.559914000000003,56.76648,56.120148,not_test +2605,18.0,29.021865999999996,58.238914,24.837536,26.083873999999998,61.70456,56.438430000000004,not_test +2606,16.0,23.45205,59.43139,21.361347,25.213620000000002,60.570473,57.070736,not_test +2607,13.0,19.286476,60.246952,18.790546,22.289382999999997,57.292137,57.852074,not_test +2608,12.0,11.430027,60.23511,14.875874,20.058777,57.935584999999996,58.44911999999999,not_test +2609,12.0,9.251327499999999,59.426506,12.741676,18.78864,65.43395,58.563736,not_test +2610,11.0,7.757103,57.23267,11.122767999999999,9.856125,59.55661,56.894245,not_test +2611,13.0,12.313152,54.064625,12.057888,12.274277,54.460359999999994,54.80816,not_test +2612,13.0,17.981388,50.037033,14.551642999999999,17.02282,54.59255600000001,51.542156,not_test +2613,17.0,24.786652,46.8984,17.774887,24.976582,56.411186,48.530105999999996,not_test +2614,25.0,32.325714000000005,45.820465000000006,26.589340000000004,33.34514,54.527069999999995,46.810333,not_test +2615,60.0,46.201427,46.751076,38.284225,45.82732,46.559353,46.48017,not_test +2616,77.0,60.624947,20.554153,80.84753,81.01767,19.017329999999998,19.684061,not_test +2617,77.0,61.86065,24.157267,80.14931999999999,80.76383,22.320917,20.699675,not_test +2618,76.0,69.68438,30.132873999999997,78.17774,88.187294,21.516304,23.644897,not_test +2619,68.0,63.42130699999999,35.44839,76.46027,97.5605,21.301556,27.286757,not_test +2620,68.0,69.08378,38.705276,75.93678,88.85311999999999,27.828505,30.932603999999998,not_test +2621,62.5,61.635783999999994,40.674459999999996,70.80861,76.22339000000001,42.880844,34.5339,not_test +2622,60.0,61.672245,24.983063,61.638619999999996,55.89069,22.017328,22.460236,not_test +2623,57.0,60.400955,27.003296000000002,60.988780000000006,56.097122,23.1593,23.505207000000002,not_test +2624,60.0,53.17021,29.388972999999996,57.479126,52.68841,21.553133,24.465708,not_test +2625,58.0,49.845406,31.155514,55.879837,51.864807,20.611351000000003,24.892029,not_test +2626,42.0,43.1334,32.054905,57.853095999999994,51.54188,24.44924,24.910864,not_test +2627,41.0,49.155388,32.535095,58.539013,52.418644,34.099940000000004,24.995511999999998,not_test +2628,37.0,43.015021999999995,17.596313000000002,44.62342,43.793859999999995,12.452875,12.986944,not_test +2629,37.0,43.73413,20.177174,44.067,42.11415,16.15387,14.401836,not_test +2630,45.0,38.61605,23.522793,44.17218,40.409294,15.598999,16.507776,not_test +2631,60.0,44.468784,25.559544,41.36861,40.238945,13.660145000000002,17.858316000000002,not_test +2632,86.0,33.563972,25.572353,37.443573,36.813293,15.926043,18.163853,not_test +2633,52.0,51.414062,24.565355,38.50665,33.20717,25.659110000000002,18.338210999999998,not_test +2634,37.0,39.2857,72.49068,44.399704,49.46305,74.89538,72.83565,not_test +2635,26.0,43.452847,67.47589,42.634315,60.494580000000006,61.38381,70.09053,not_test +2636,30.0,49.224514,59.027694999999994,57.6261,70.42662,60.110977,63.81875,not_test +2637,44.0,61.111422999999995,51.42092,78.15496999999999,86.99410999999999,63.927498,57.12124,not_test +2638,66.0,80.036156,46.259293,86.86461,98.36784,59.375614,51.365134999999995,not_test +2639,77.0,102.22714,42.085772999999996,90.168304,103.19977,38.91653,45.874184,not_test +2640,84.0,81.19591,50.001265999999994,82.66608000000001,78.81641,49.861571999999995,54.667515,not_test +2641,83.0,77.0739,48.495956,81.30675,80.93263,46.942917,54.361656,not_test +2642,80.0,74.67703,46.55705,80.10155,75.64215,47.209568,52.05588,not_test +2643,78.0,73.21327,44.66579,78.47706600000001,69.96992,46.918118,49.002796000000004,not_test +2644,81.0,70.9281,43.114758,74.3994,62.947956000000005,42.298874,46.388077,not_test +2645,66.0,61.490869999999994,42.032795,68.68163,58.91805,33.203045,44.663498,not_test +2646,61.0,62.23214,33.63655,63.651740000000004,61.0863,37.792088,33.475708000000004,not_test +2647,55.0,56.98895600000001,32.312233,58.56675,56.07416,41.787586,30.804495000000003,not_test +2648,53.0,50.031105,31.000875,54.787052,53.82518,38.133583,28.739615999999998,not_test +2649,55.0,41.58446,29.693179999999998,54.998566000000004,51.484077,29.535908000000003,28.142792,not_test +2650,54.0,46.982918,29.056261,55.71161,50.33808,23.200052,29.013253999999996,not_test +2651,54.0,44.219162,30.000728999999996,54.903828000000004,47.281079999999996,25.272015,30.573791999999997,not_test +2652,51.0,55.38685600000001,33.436646,55.740223,57.152027000000004,34.944990000000004,33.451965,not_test +2653,55.0,53.897564,37.341685999999996,54.873272,57.29719,39.083656,38.319466,not_test +2654,61.0,58.580276,44.51787,53.63,54.600322999999996,36.130295000000004,51.491875,not_test +2655,74.0,49.850570000000005,52.30211,50.947303999999995,52.45828,37.549656,68.13376,not_test +2656,91.0,57.858364,58.607834,50.22082,48.897842,53.925217,80.48814399999999,not_test +2657,101.0,44.70505,62.802277000000004,51.88337,44.440323,84.71327,82.80449,not_test +2658,116.0,92.71502,77.63844,89.14555,112.20806999999999,77.24095,80.44745999999999,not_test +2659,108.0,91.70506,78.346214,98.64372,112.721375,69.26217,78.489456,not_test +2660,117.0,97.23064000000001,76.68675,103.09408,111.37187,69.73060600000001,75.601715,not_test +2661,134.0,110.33662,73.49685,105.68812,115.42308,73.07245,73.41225,not_test +2662,131.0,117.27193999999999,69.753975,107.221855,119.690475,70.33776999999999,72.13905,not_test +2663,125.0,114.54796,66.14784,106.05841000000001,117.964355,57.238335,70.75375,not_test +2664,112.0,115.87785,58.067890000000006,119.28053,127.27141,59.29825,59.653862,not_test +2665,106.0,117.77743500000001,55.178219999999996,115.48125,120.48489,56.03593000000001,55.69169,not_test +2666,100.0,108.79323600000001,50.785804999999996,107.079605,119.78098999999999,56.459495999999994,50.34668,not_test +2667,94.5,108.53905,46.65753,98.0926,106.83883999999999,55.330605000000006,45.555428000000006,not_test +2668,89.0,97.38425,44.77659,92.0847,99.04923000000001,48.376670000000004,42.928543,not_test +2669,86.0,78.88853,46.080692,88.81651,98.39152,36.53025,42.937236999999996,not_test +2670,78.0,83.31749,54.315884,82.832924,81.041306,50.85975,52.911359999999995,not_test +2671,77.0,81.8923,53.375965,78.9472,73.729805,53.124786,50.324946999999995,not_test +2672,68.0,83.56723000000001,51.528145,76.64506,72.32836999999999,49.58825,46.406566999999995,not_test +2673,65.0,77.19475600000001,48.77381,73.44702,69.03549,43.630103999999996,42.414825,not_test +2674,61.0,77.46706999999999,46.287758000000004,69.09303,65.22237,41.121117,40.312084000000006,not_test +2675,54.0,71.104294,45.709614,66.60887,60.834755,45.726967,41.488106,not_test +2676,33.0,53.35819,98.93117,56.929885999999996,57.438652000000005,98.7666,99.94501,not_test +2677,63.0,59.980740000000004,102.75650999999999,56.416363,57.705734,111.11833,104.2918,not_test +2678,60.0,50.928641999999996,105.04283999999998,54.803425,55.79591,117.961525,106.33095,not_test +2679,60.0,58.785442,105.61721999999999,52.724373,56.716457,116.09839,106.485,not_test +2680,65.0,40.910206,103.76439,54.319405,53.00206800000001,106.79442,104.34783,not_test +2681,62.0,68.43264,98.84924000000001,54.251503,64.71299,94.87634,99.06914,not_test +2682,61.0,66.87569,112.020325,72.46635400000001,59.211777000000005,115.07413999999999,115.46664399999999,not_test +2683,70.0,64.428505,108.24666599999999,80.08538,68.71395,102.61815,111.76359,not_test +2684,82.0,69.054214,102.619156,84.70245,78.212975,100.366646,104.52954,not_test +2685,93.0,88.04645,97.14353,87.54267,87.05468,101.98763000000001,96.88601,not_test +2686,78.0,99.8132,92.51315,87.05284,89.00683000000001,96.675735,91.16346999999999,not_test +2687,65.0,112.234604,88.306564,87.13484,89.70419,79.20976,87.85956999999999,not_test +2688,67.0,56.387980000000006,80.86125,64.55020999999999,58.747402,81.87041500000001,85.69188,not_test +2689,64.0,55.107727000000004,77.58145,61.970837,52.476967,87.26207,84.715164,not_test +2690,65.0,46.36203,73.28627,56.661033999999994,48.54991,89.08847,82.48188,not_test +2691,67.0,49.169616999999995,69.43883000000001,55.138034999999995,44.504364,83.62619000000001,79.79051,not_test +2692,68.0,40.041909999999994,67.77176,51.973465000000004,38.52642,72.54248,77.53843,not_test +2693,46.0,36.22187,69.21459,54.20215,36.705288,62.122135,76.27655,not_test +2694,68.0,38.158974,55.328030000000005,41.267616,43.407536,54.241640000000004,55.652542000000004,not_test +2695,71.0,38.840263,59.601997,39.548737,40.2602,61.030876,57.24225,not_test +2696,70.0,38.582336,66.80151,43.33664,39.6445,61.654219999999995,61.439358,not_test +2697,69.0,47.776752,74.6289,43.672340000000005,38.07718,62.636604000000005,67.30243,not_test +2698,69.0,42.085567,81.71094000000001,42.215286,35.442955,72.80719,73.71229,not_test +2699,67.0,41.056442,87.75348000000001,40.935154,32.476627,94.76619000000001,79.56642,not_test +2700,65.0,67.30742,68.0915,69.45264399999999,67.42314,63.247738,63.841717,not_test +2701,68.0,66.53938000000001,70.58292,68.37164,67.54354000000001,68.98777,64.541985,not_test +2702,72.0,58.061073,74.42586,64.90996,64.358795,67.40862,66.02658000000001,not_test +2703,76.0,64.129395,77.448524,64.00094,64.06333000000001,65.8884,66.97816999999999,not_test +2704,42.0,51.883404,78.92411,66.56884000000001,58.553909999999995,74.06192,67.62998,not_test +2705,33.0,70.09687,79.82935,66.377716,67.57218,94.89714000000001,69.4183,not_test +2706,37.0,37.412659999999995,68.797646,40.60317,37.906665999999994,64.14389,64.6404,not_test +2707,51.0,38.189820000000005,68.612305,52.88933000000001,48.074825,72.06364,64.844376,not_test +2708,68.0,48.034440000000004,69.47578,62.264614,62.519034999999995,69.4443,66.19998000000001,not_test +2709,72.0,50.56343,70.52948,66.90698,70.67246,64.629486,68.03516,not_test +2710,82.0,56.39518,70.99565,65.56643000000001,73.94534,69.521385,69.353386,not_test +2711,100.0,76.174385,70.75151,60.843327,71.87016,88.96725,69.47895,not_test +2712,101.0,96.34624000000001,44.17471,103.78668,92.23814,46.082485,45.96691,not_test +2713,95.0,91.42895,44.410683,101.393074,86.40033000000001,45.069946,45.045296,not_test +2714,91.0,84.0898,45.63225,95.24641,82.022385,40.22558,43.986073,not_test +2715,89.0,74.30685,46.341286,90.362625,73.69058000000001,35.735336,42.680285999999995,not_test +2716,87.0,65.197075,46.918213,84.941055,65.617294,37.722977,42.105206,not_test +2717,85.0,54.20928000000001,49.134537,82.507416,61.538998,49.076570000000004,43.560913,not_test +2718,74.0,81.20275,65.00128000000001,82.63419,81.06219499999999,65.97525,63.978653,not_test +2719,71.0,74.24645,65.021,79.33706,74.69079599999999,69.28379,64.44763,not_test +2720,65.0,75.00154,65.95264399999999,76.142975,72.84943,67.83223000000001,65.50554,not_test +2721,62.0,68.20818,67.68091,73.25523000000001,68.72313,65.9309,67.26836999999999,not_test +2722,64.0,69.53693,69.96328000000001,70.73841999999999,65.25152,69.15575,69.56178,not_test +2723,68.0,67.08608000000001,72.40569,69.050415,62.51706,79.32985,71.81163000000001,not_test +2724,73.0,70.83256,37.435143,73.46167,71.90999000000001,34.044056,36.16806,not_test +2725,76.0,70.163376,40.660315999999995,72.52842,71.759384,37.913918,37.999621999999995,not_test +2726,70.0,63.53208000000001,45.428696,69.80665,67.59314,38.11347,41.791004,not_test +2727,78.0,68.31754000000001,48.77101,67.83845500000001,66.310295,37.643383,44.94771,not_test +2728,87.0,55.910582999999995,50.12632,69.82453000000001,61.338654000000005,42.253883,46.702040000000004,not_test +2729,103.0,81.477,51.375957,69.89933,71.39131,55.040764,48.36204,not_test +2730,136.0,102.88141999999999,95.83830999999999,106.88481000000002,121.156204,92.69665,98.7319,not_test +2731,115.0,100.43611,91.91416,111.71736000000001,120.95767,87.52421,93.89672,not_test +2732,82.0,116.74072,86.00960500000001,115.92773400000002,124.20536000000001,82.15179,85.97088000000001,not_test +2733,96.0,122.58729,81.30558,118.2137,128.50603,74.96473,79.5952,not_test +2734,123.0,116.54531999999999,78.74642,117.67473000000001,126.56053999999999,64.37423000000001,77.00508,not_test +2735,150.0,127.80513,76.85367600000001,117.90078999999999,126.75188,51.403940000000006,76.86192,not_test +2736,135.0,133.17535,72.6264,132.97787,141.3823,68.548416,71.67218000000001,not_test +2737,145.0,130.25048999999999,72.92823,130.40118,134.52916000000002,72.088844,71.50983000000001,not_test +2738,151.0,122.01971,73.31534599999999,124.21452,133.44794,75.13087,71.140564,not_test +2739,129.0,118.05058000000001,73.43408000000001,113.52273600000001,119.3918,74.127235,70.53107,not_test +2740,113.0,111.163086,73.26523,106.76626,104.81366,68.82199,69.99629,not_test +2741,104.0,89.15267,73.14125,102.96126,100.77651999999999,62.65745,69.99712,not_test +2742,99.0,94.93862,71.12496999999999,94.77037,96.88728,70.15231,70.85746999999999,not_test +2743,94.0,93.30660999999999,69.30962,90.953316,88.320625,76.93355600000001,69.78435999999999,not_test +2744,92.0,95.84036,66.820274,88.82952,87.940636,79.4066,68.26037,not_test +2745,89.0,85.11650999999999,64.42911,86.02665999999999,83.266594,76.33414,66.845116,not_test +2746,97.0,84.61711,63.026276,80.96313,78.31294,70.60406,65.82103000000001,not_test +2747,94.0,82.76507600000001,63.128322999999995,78.3005,73.18236,66.94516,65.12861,not_test +2748,96.0,92.83537,133.01128,90.3149,90.985855,136.78778,138.84798999999998,not_test +2749,74.0,89.20156,133.67967,87.84528,90.08351,132.15778999999998,140.05191000000002,not_test +2750,72.0,85.24002,131.76962,81.87732,83.14974000000001,136.50848,134.81133,not_test +2751,101.0,90.49514,128.84338,78.48637,81.27537,140.56696000000002,128.19846,not_test +2752,140.0,70.37139,124.72381599999999,77.00355,80.220665,131.92928999999998,123.32921999999999,not_test +2753,106.0,103.3771,118.15235,75.82283000000001,82.00397,106.28204,119.42311000000001,not_test +2754,79.0,100.77499399999999,117.79297,103.03828399999999,120.93376,127.69951999999999,121.07243000000001,not_test +2755,115.0,108.98348999999999,114.10844399999999,113.66112,125.72596000000001,119.65723999999999,117.96565,not_test +2756,201.0,119.51323000000001,108.2812,122.76311499999998,136.90048000000002,121.38733,111.24483500000001,not_test +2757,192.0,140.58432,103.022865,127.095825,137.34828000000002,125.45536000000001,104.008606,not_test +2758,182.0,140.18423,99.61941,123.1749,131.65368999999998,120.03971999999999,98.76325,not_test +2759,171.0,147.46631000000002,97.51526,120.931335,127.25,99.589005,96.14336999999999,not_test +2760,162.0,148.33801,92.80702,159.72931,142.31238000000002,94.60386,96.97759,not_test +2761,151.0,145.17006999999998,91.20555,155.2042,132.50327,101.998634,96.29278599999999,not_test +2762,149.0,136.63896,89.27823000000001,143.07562,124.314415,92.23318499999999,94.344215,not_test +2763,132.0,132.80742,87.75214,128.29887,116.79523999999999,76.44540400000001,91.76815,not_test +2764,115.0,108.77703000000001,87.57236,118.32061999999999,107.67163000000001,72.15974399999999,89.570564,not_test +2765,109.0,119.71928,89.245094,112.52573000000001,104.68251,88.98111,88.56799000000001,not_test +2766,83.0,103.90087,97.05771999999999,103.19881,102.37244,95.07026,99.383736,not_test +2767,78.0,100.21695,97.9751,98.30171,93.52376600000001,100.80954,98.04956,not_test +2768,77.0,93.66467,99.27243,95.594604,90.894035,93.0708,97.75147,not_test +2769,76.0,86.88600000000001,101.44023,91.76728,83.03296999999999,85.236725,99.87205,not_test +2770,87.0,84.16655,104.62496,87.62101,79.18871,92.61121999999999,104.06305,not_test +2771,90.0,83.99077,108.18417,85.00073,76.66346999999999,119.04871999999999,108.27168999999999,not_test +2772,93.0,94.22756,78.85805,92.01188,95.04875,76.14795,80.29215,not_test +2773,103.0,93.05948000000001,79.67349,91.02231,95.42560999999999,81.009834,80.13722,not_test +2774,104.0,79.83375500000001,83.63254,87.14535500000001,87.652824,75.89617,82.512405,not_test +2775,105.0,87.50832,88.83823000000001,85.66084000000001,87.22216,72.263336,86.57432,not_test +2776,111.0,70.92084,94.074745,89.057045,91.30216999999999,84.09642,91.42214,not_test +2777,112.0,103.19634,99.2215,87.96048,95.05718,115.16806000000001,96.36128000000001,not_test +2778,119.0,119.03845,148.22028999999998,122.32883500000001,119.89227,152.85985,148.23802,not_test +2779,124.0,111.153725,144.08337,128.09055,133.84566,138.06606000000002,143.89336,not_test +2780,113.0,108.15158000000001,138.34433,133.75024,143.60464,138.39693,137.62576,not_test +2781,116.0,138.93417,133.14543,137.89072,145.00104,142.0449,131.35738999999998,not_test +2782,128.0,130.27039,129.22648999999998,137.56311000000002,142.5155,133.02097,126.2562,not_test +2783,121.0,151.7493,126.03589,138.42691000000002,139.45605,105.84456000000002,122.59743,not_test +2784,113.0,117.95653999999999,75.77087399999999,124.83717,108.28971999999999,76.40276999999999,77.600716,not_test +2785,103.0,103.682755,75.89067,121.478775,99.18807,77.23921,75.57745,not_test +2786,92.0,101.60936,77.407265,115.41627,86.02450999999999,70.78278,74.08931,not_test +2787,88.0,92.41823000000001,78.14433000000001,107.896515,74.904976,65.274124,72.780464,not_test +2788,85.0,78.9056,78.983475,99.188286,65.99599,71.489136,72.83255,not_test +2789,84.0,68.31316,82.90732,93.79939,63.418119999999995,93.31035,76.02179,not_test +2790,81.0,82.31704,109.609604,81.6109,80.95069000000001,105.54191000000002,105.99566000000002,not_test +2791,72.0,81.07648499999999,113.45326999999999,78.36288499999999,74.2992,110.857506,107.23286999999999,not_test +2792,67.0,77.55388,116.9042,80.14536,74.46944,99.958664,109.59273999999999,not_test +2793,71.0,79.930824,118.58458,80.694496,69.99185,92.44424000000001,112.48293999999999,not_test +2794,69.0,79.40874000000001,118.81676000000002,80.328026,66.883286,108.022675,115.01021000000001,not_test +2795,68.0,81.26301600000001,119.08166499999999,79.92396,63.446495,148.8971,116.39113,not_test +2796,60.0,68.901505,127.676216,67.94426,70.32964,118.17193999999999,127.10365,not_test +2797,48.0,72.767296,134.71489,65.68015,72.35840999999999,137.55647,133.46596,not_test +2798,38.0,63.897213,141.06989,59.897526,71.816185,136.26349,138.98123,not_test +2799,35.0,82.363304,143.35782,59.769819999999996,74.44089,125.05698000000001,141.28898999999998,not_test +2800,29.0,62.89669,140.83035,56.29646700000001,73.80975,124.30821,139.96255,not_test +2801,30.0,77.26413000000001,135.786,59.99013000000001,84.65133,146.32265,136.60255,not_test +2802,32.0,37.662265999999995,92.94745,34.790279999999996,41.301109999999994,88.35273000000001,89.27865600000001,not_test +2803,41.0,40.888435,89.80089,44.106396000000004,53.45596999999999,93.20394,86.941925,not_test +2804,60.0,53.081154000000005,86.29956,63.04553000000001,67.36215,86.428,84.29671,not_test +2805,72.0,60.523773,82.96016999999999,80.11443,72.362076,75.95636,81.869,not_test +2806,90.0,79.35421,81.35516,91.31267,78.27436999999999,74.74633,80.44748,not_test +2807,97.0,89.59251,83.09630600000001,87.396416,77.83061,90.00931,80.66444399999999,not_test +2808,88.0,106.54758500000001,74.25747,102.73266,93.93169,71.76642,77.23042,not_test +2809,74.0,99.388336,76.70657,100.53475,92.19691,77.41026,79.41156,not_test +2810,72.0,94.194565,82.63600000000001,91.51196999999999,87.44266999999999,77.02786,83.311356,not_test +2811,67.0,83.787384,89.18794,88.94386999999999,84.30489,76.37929,87.14165,not_test +2812,62.0,73.7125,94.44804,85.180786,77.400764,84.290436,90.15435,not_test +2813,60.0,67.55965,98.27799999999999,87.26966999999999,78.030396,104.34267,92.76042,not_test +2814,59.0,63.985380000000006,41.64217,58.570023,57.946075,36.343964,38.117020000000004,not_test +2815,56.0,60.623259999999995,45.210403,58.175762,62.604084,42.1161,40.989585999999996,not_test +2816,53.0,59.900794999999995,52.964,63.938469999999995,66.41888399999999,44.562546000000005,47.464832,not_test +2817,49.0,69.18725,61.413745999999996,64.75394399999999,66.44722,47.655777,55.046825,not_test +2818,48.0,63.377327,69.0155,63.15896,64.18446,58.399593,62.53120799999999,not_test +2819,47.0,59.986275,76.35495999999999,61.60098299999999,60.853127,79.68082,69.951584,not_test +2820,32.0,48.670815000000005,72.53389,44.103043,46.093422,80.01759,75.50601999999999,not_test +2821,32.0,42.25407,72.582726,42.186375,44.00587,86.6365,74.74608,not_test +2822,38.0,39.573440000000005,72.31031,42.7713,42.26096,76.72951,72.75811999999999,not_test +2823,32.0,37.094387,71.563126,42.94216,44.20104,62.29662,70.33369,not_test +2824,41.0,40.002514,70.30293,42.620525,46.688891999999996,60.204280000000004,68.02559000000001,not_test +2825,45.0,51.47929,68.73115,44.90653,50.562305,78.26903,65.91968,not_test +2826,40.0,54.55372,59.161118,48.135056,48.896370000000005,58.353363,55.827034,not_test +2827,45.0,57.48181999999999,58.91385,59.990044,58.835587,61.135605000000005,54.287926,not_test +2828,94.0,71.411736,60.548027000000005,76.20863,70.21261,54.696259999999995,53.89734,not_test +2829,111.0,79.64227,62.668395999999994,87.59783,72.155975,46.798603,55.111366000000004,not_test +2830,114.0,94.66017,64.421936,92.95969000000001,73.53556,48.407913,58.111534,not_test +2831,84.0,100.70176,65.98205,90.92824,77.82843000000001,64.42406,62.42816,not_test +2832,61.0,82.68706999999999,51.13745,80.32297,76.40727,50.663779999999996,50.055496000000005,not_test +2833,54.0,83.98559,50.47998,78.08886,77.875786,53.69826,48.378708,not_test +2834,53.0,75.46688,50.332027000000004,74.19731,71.76211500000001,48.154987,46.81472,not_test +2835,46.0,74.25955,50.11383,73.8846,66.35521,41.534225,45.643284,not_test +2836,69.0,63.763016,50.05352,69.77244,58.061172,44.215546,45.348988,not_test +2837,66.0,63.809677,50.981632,72.51080999999999,57.099674,60.55981,46.310432,not_test +2838,61.0,65.49455,44.18963,60.756130000000006,62.361686999999996,44.169975,42.56433,not_test +2839,66.0,61.69294,46.54882,58.79399,64.63228000000001,49.66961,44.126633,not_test +2840,68.0,60.862007,53.141631999999994,64.36561999999999,67.10441,50.02717,48.017967,not_test +2841,70.0,69.35425,61.39974599999999,65.13116,67.444824,50.825787,54.176792000000006,not_test +2842,67.0,63.218742000000006,68.49006999999999,63.576440000000005,64.33279399999999,59.350280000000005,61.281994,not_test +2843,64.0,59.885985999999995,72.78580500000001,62.409668,56.7747,77.55543,67.07396999999999,not_test +2844,68.0,68.87189000000001,108.87741000000001,67.41711,65.31714000000001,111.62603999999999,108.57855,not_test +2845,73.0,71.93476,105.005264,65.246605,69.86003000000001,97.13221999999999,105.32313500000001,not_test +2846,75.0,65.37308,97.53181500000001,60.197502,68.77185,95.2711,98.58178000000001,not_test +2847,77.0,84.18519,90.85942,61.22288,70.92479,99.30542,92.12491,not_test +2848,86.0,63.920013,86.97758,55.32800699999999,68.24011,95.33201600000001,87.92519,not_test +2849,92.0,83.107315,84.59300999999999,58.916374,71.53558000000001,74.92275,85.27275,not_test +2850,95.0,104.399506,65.48958,100.92907,89.79463,69.929085,69.1822,not_test +2851,101.0,92.419235,64.74721,107.032555,94.569374,63.86834,68.966064,not_test +2852,103.0,94.98909,62.012730000000005,111.69053999999998,94.29526,65.72774,68.06636,not_test +2853,102.0,110.37215,57.820374,114.51111999999999,95.32233000000001,68.23676999999999,66.22659,not_test +2854,101.0,118.18053,53.639763,112.36792,102.25259399999999,62.532738,63.249565000000004,not_test +2855,97.0,138.2142,51.105835,112.27887,106.25408999999999,46.223724,59.454792000000005,not_test +2856,100.0,95.87581,61.31521600000001,100.10565,86.867294,63.576317,65.07531999999999,not_test +2857,95.0,92.04381,58.133340000000004,97.76292,85.18845999999999,61.22469,59.39059,not_test +2858,89.0,86.330925,53.323555000000006,88.88639,82.43884,65.78585,50.124153,not_test +2859,86.0,83.4792,48.68092,85.637215,80.860855,65.96929,41.94042,not_test +2860,83.0,74.692924,46.05704,81.48366999999999,72.292725,52.72541999999999,38.727959999999996,not_test +2861,82.0,69.30346999999999,46.290188,83.56449,66.9962,27.831103999999996,41.114174,not_test +2862,80.0,83.66226,85.9507,78.45567,79.76218,89.06734499999999,85.84315500000001,not_test +2863,79.0,78.63712,88.89409,76.73210999999999,77.42268,101.73046,86.94265,not_test +2864,77.0,74.93296,90.998924,79.54658,79.57149,103.17211999999999,88.112526,not_test +2865,81.0,78.27981,91.64231,79.90850999999999,78.247856,95.536316,89.52152,not_test +2866,88.0,75.71984,90.95295,79.56664,76.54433399999999,87.44884,90.36775,not_test +2867,82.0,77.71427,89.64149499999999,79.145996,72.94136,86.97313,89.4598,not_test +2868,83.0,83.27525,93.7171,79.22353000000001,79.14107,102.35802,98.837204,not_test +2869,85.0,89.670715,90.08278,76.18462,80.877884,94.55496,96.44174,not_test +2870,81.0,79.3282,85.359955,71.333244,79.38521,98.61,92.0397,not_test +2871,105.0,90.45416999999999,81.94961500000001,71.52109499999999,80.58035,104.25493,88.47206,not_test +2872,131.0,74.72935,80.640945,67.61641999999999,82.18515,98.2479,87.048325,not_test +2873,111.0,91.900925,80.38847,70.081436,92.55296,76.14533,86.85631,not_test +2874,107.0,110.85593999999999,79.04354000000001,115.52378999999999,113.48111999999999,80.48411,81.07491999999999,not_test +2875,118.0,101.8381,77.78973,120.93132,125.22357,83.51961999999999,78.98215,not_test +2876,124.0,99.74288,76.1824,124.57416,137.15012,78.0783,77.09778,not_test +2877,113.0,120.269806,74.987946,127.03561,142.53076000000001,66.98041500000001,76.26815,not_test +2878,115.0,126.09563,74.99975,125.382645,143.69485,58.447266000000006,76.54708000000001,not_test +2879,122.0,143.20479,76.47756,125.84666399999999,141.37149,59.942577,77.280624,not_test +2880,118.0,122.19128400000001,80.924515,124.61067,122.463104,78.75607,80.01389,not_test +2881,116.0,110.64596,79.81201999999999,120.094444,116.65952,80.529205,79.44404,not_test +2882,123.0,101.14255,78.782845,109.80681000000001,106.92047,72.255615,78.62859,not_test +2883,119.0,105.39896,78.2725,100.35687,93.06752,63.28061700000001,78.32751999999999,not_test +2884,108.0,86.20992,78.78400400000001,86.90959000000001,80.58283,65.3593,79.13358000000001,not_test +2885,108.0,80.82981,80.496414,81.80206,75.102936,82.826195,80.96457,not_test +2886,77.0,103.959816,103.938515,94.156296,97.003174,103.94971,105.99051999999999,not_test +2887,32.0,97.555756,103.62420999999999,83.0323,85.54731,100.9662,105.01975,not_test +2888,35.0,87.20224,102.534645,77.345955,83.1209,104.58225999999999,103.73453,not_test +2889,44.0,81.10836,101.12131,79.35812,76.402435,107.40614,103.0623,not_test +2890,43.0,77.76315,99.64041,76.85058599999999,70.89816,101.72951,102.90828,not_test +2891,47.0,79.41129000000001,98.146935,74.17152,64.52422,86.45486,102.37849399999999,not_test +2892,54.0,53.693523,113.70366000000001,48.70367,46.24947,117.20168999999999,115.57891000000001,not_test +2893,52.0,49.188686,110.32098400000001,44.615353000000006,47.021815999999994,107.66568000000001,111.44569399999999,not_test +2894,53.0,44.6332,104.41019,44.182716,45.521076,105.88298999999999,105.14872,not_test +2895,59.0,43.609283000000005,98.271385,44.253124,46.394882,107.17482,99.01581,not_test +2896,63.0,45.299583,93.78349,44.11515,47.155434,103.43207,94.852486,not_test +2897,69.0,56.990294999999996,91.54299999999999,46.872494,48.988823,90.639946,93.155975,not_test +2898,67.0,79.39123000000001,103.63203399999999,77.27234,76.95017,107.524666,106.16711399999998,not_test +2899,65.0,81.3134,101.579155,85.98603,85.30875,104.13981,104.84866,not_test +2900,60.0,91.322296,98.79128,92.2016,93.22115,106.617805,102.21184000000001,not_test +2901,65.0,90.21325,96.27035500000001,98.52441400000001,99.633156,107.8634,99.58156,not_test +2902,62.0,101.041664,94.90241,100.993385,105.13291000000001,100.85348,98.03011,not_test +2903,58.0,108.81568999999999,94.99391999999999,102.4187,99.5366,85.13195,97.75133000000001,not_test +2904,57.0,60.065833999999995,50.16789,48.36456,55.930138,51.382664,51.4257,not_test +2905,62.0,59.049603000000005,53.01667,49.391933,56.43739,51.705535999999995,53.03725,not_test +2906,57.0,55.179733,57.53264,48.165577,55.689186,45.81135,55.145576,not_test +2907,55.0,61.90545,60.975669999999994,48.51012,54.80033,41.175396,56.315254,not_test +2908,53.0,54.99711,63.20004300000001,46.984062,52.001205,47.07884,57.042343,not_test +2909,48.0,53.28768,66.27029399999999,48.20443,54.135436999999996,66.460464,59.0676,not_test +2910,31.0,53.523582,79.8594,45.048396999999994,47.245674,74.96725,74.21429,not_test +2911,21.0,49.885784,85.74648,45.51894,49.457553999999995,83.85493000000001,77.01935999999999,not_test +2912,21.0,50.174034000000006,90.84312,49.748077,55.877807999999995,81.51509,79.40465999999999,not_test +2913,26.0,57.774356999999995,92.628174,51.15256,59.165623,76.8888,81.37163000000001,not_test +2914,31.0,57.285323999999996,90.60354,49.412136,56.645775,82.231636,82.83404,not_test +2915,44.0,51.936237,86.49478,45.28242,52.386509999999994,102.1315,83.36961,not_test +2916,42.0,51.796555,63.127559999999995,42.960297,43.08579,59.750780000000006,60.207066000000005,not_test +2917,52.0,49.454918,65.15581,39.3693,43.74883,65.77739,61.840237,not_test +2918,50.0,45.128322999999995,67.41396999999999,38.819187,40.261517,63.1847,63.587646,not_test +2919,59.0,43.299892,68.09585,39.200794,40.707397,57.402443000000005,63.213528000000004,not_test +2920,64.0,39.534859999999995,66.83159,38.70153,43.129690000000004,58.211890000000004,60.51896,not_test +2921,65.0,50.919235,64.912605,42.052338,47.20371,71.28350999999999,57.55538000000001,not_test +2922,74.0,78.666824,32.019172999999995,72.263626,65.12945,27.741394,30.660728000000002,not_test +2923,77.0,78.17349,31.574543,78.04458000000001,68.10094000000001,30.545761,30.559115999999996,not_test +2924,62.0,85.494675,34.020171999999995,83.4748,74.57897,31.011947999999997,32.253265,not_test +2925,61.0,80.597015,37.329838,89.599754,75.1326,31.831229999999998,35.43303,not_test +2926,52.0,89.4263,40.547028000000005,92.15326,76.15074,37.920353000000006,39.575798,not_test +2927,58.0,90.80319,44.17262,94.06229,75.7798,51.600586,43.926871999999996,not_test +2928,62.0,63.47886999999999,51.119213,45.358565999999996,55.19262,47.856968,46.256405,not_test +2929,64.0,65.46101999999999,57.301987,46.019054,55.836456000000005,57.910378,51.631912,not_test +2930,62.0,54.482673999999996,64.15428,44.24139,52.568016,58.42726999999999,58.996864,not_test +2931,57.0,60.811214,69.23603,45.08663,50.48639,59.880188000000004,65.55122,not_test +2932,49.0,50.813026,71.78301,43.55422,47.24089,73.67974,69.46394000000001,not_test +2933,41.0,47.091029999999996,72.673645,44.720802,49.33409,101.11003000000001,70.62214,not_test +2934,31.0,43.238262,74.64517,37.25608,39.75388,71.50948000000001,74.45006,not_test +2935,30.0,41.77636,74.33027,38.437664,42.406002,77.5343,74.803345,not_test +2936,34.0,42.00275,73.18336500000001,42.60492,48.412827,83.65531999999999,73.61675,not_test +2937,30.0,50.564087,72.112274,43.95515,52.210968,83.9108,71.759384,not_test +2938,26.0,49.41015,71.18247,42.02766,49.586566999999995,75.47268000000001,69.92469,not_test +2939,17.0,44.05628,69.73459,38.099712,44.787773,61.305080000000004,68.25417,not_test +2940,13.0,19.691727,60.447002000000005,16.208370000000002,17.538418,65.74427,60.515330000000006,not_test +2941,10.0,14.478992000000002,58.79071999999999,14.967861,17.87891,57.11306999999999,58.949543000000006,not_test +2942,12.0,16.933739000000003,54.902668000000006,13.562393,16.611801,53.567387,54.504321999999995,not_test +2943,15.0,11.519531,49.57761,15.760810999999999,17.738087,51.83064,47.76554,not_test +2944,16.0,15.955708,44.547215,14.715469,21.16819,46.570156,41.147903,not_test +2945,17.0,17.326885,41.626232,18.44141,25.35204,35.731544,37.599804,not_test +2946,20.0,17.488613,29.675228000000004,16.894558,25.31931,28.134014,31.894262,not_test +2947,27.0,19.671745,30.623632,27.443909,37.984413,30.680286,32.02221,not_test +2948,35.0,29.905205,33.2406,45.801605,48.887688,31.026217,33.35719,not_test +2949,38.0,40.48992,36.303585,61.63020699999999,53.455627,32.03332,35.579124,not_test +2950,45.0,55.361422999999995,39.342453000000006,72.56707,56.75844,37.584379999999996,38.43565,not_test +2951,49.0,69.55067,42.632545,69.40375,61.34220500000001,48.744423,41.644344,not_test +2952,47.0,51.753838,18.925375,51.999023,47.525496999999994,13.120472,14.749985,not_test +2953,43.0,54.25403000000001,19.301647,53.850147,50.393837,13.762027999999999,14.623363500000002,not_test +2954,44.0,54.290558,20.191177,52.215263,48.672813,11.353535,15.266364999999999,not_test +2955,43.0,58.451763,20.57079,51.864914,46.265859999999996,9.409325,15.279137,not_test +2956,42.0,51.16867,21.252489999999998,48.588993,42.559334,13.383614000000001,14.976142999999999,not_test +2957,40.0,52.086796,24.042652,50.358383,44.18695,25.768711,16.065422,not_test +2958,38.0,42.6539,22.842257,42.669098,38.35333,21.581457,21.064457,not_test +2959,31.0,41.370934000000005,23.476578,42.776592,42.000027,26.098244,21.53378,not_test +2960,35.0,44.29609,25.429062,48.756737,45.870293,24.800894,22.331999999999997,not_test +2961,31.0,52.064809999999994,27.561037,49.384116999999996,46.880795,22.255638,23.233763,not_test +2962,26.0,52.02538,29.0219,48.256233,44.49447,25.674639000000003,24.305398999999998,not_test +2963,25.0,49.509926,29.723377000000003,47.69792,40.920776000000004,38.421603999999995,25.66526,not_test +2964,24.0,27.222728999999998,45.31578,18.922161,20.356216,45.453064000000005,46.308594,not_test +2965,23.0,19.991789999999998,43.487953000000005,17.757820000000002,20.776851999999998,41.595585,44.948727000000005,not_test +2966,28.0,19.105083,40.750324,18.36819,19.68478,43.61698,42.41356,not_test +2967,29.0,16.243586999999998,38.048935,18.871048000000002,18.97559,45.439840000000004,39.446987,not_test +2968,33.0,18.807869,35.866516,18.667267000000002,20.296936,40.378826000000004,36.676117,not_test +2969,40.0,27.454921999999996,34.157123999999996,20.599094,26.4707,27.212711,34.44084,not_test +2970,50.0,45.756275,29.439228000000004,50.060925,47.848793,31.933761999999998,30.314049,not_test +2971,57.0,48.437670000000004,28.495026,59.927162,61.178665,31.6212,29.457705999999998,not_test +2972,59.0,59.565690000000004,27.788095000000002,67.80897,71.5589,27.17595,27.953415000000003,not_test +2973,60.0,62.74834,27.127232,73.77399,76.33799,22.590157,26.276615000000003,not_test +2974,65.0,75.515236,26.818021999999996,75.72724000000001,82.80679,22.819838,25.355267,not_test +2975,64.0,85.06111999999999,27.46997,75.65505999999999,85.81201,29.752127,25.92519,not_test +2976,59.0,60.313572,22.627563000000002,66.10463,57.45418000000001,23.23004,23.428814000000003,not_test +2977,72.0,65.70975,23.513302,65.55847,53.77085,25.758910999999998,22.852985,not_test +2978,65.0,62.634018000000005,25.312431,64.3151,50.886395,25.170552999999998,22.181667,not_test +2979,51.0,55.177634999999995,27.538162,60.53029,45.413418,24.516144,22.369987,not_test +2980,51.0,53.106487,29.912810999999998,62.2216,46.612858,27.778129999999997,24.149801,not_test +2981,53.0,44.52935,32.300686,59.09412,44.295494,36.179992999999996,27.296622999999997,not_test +2982,47.0,52.10796,56.570126,56.388107,55.168655,53.07510799999999,58.421580000000006,not_test +2983,49.0,61.36598000000001,56.42241,56.477230000000006,56.592003000000005,53.40485,58.85145,not_test +2984,55.0,56.08336,54.752959999999995,56.045593000000004,56.334430000000005,55.680305000000004,57.236053000000005,not_test +2985,68.0,50.07139,52.85335500000001,57.388690000000004,52.77973000000001,56.000693999999996,54.76303000000001,not_test +2986,67.0,50.514477,51.441868,55.78086999999999,51.184174,50.943740000000005,52.351414,not_test +2987,76.0,40.156513000000004,50.28881,51.628124,48.317513,40.78482,50.165787,not_test +2988,88.0,86.06173000000001,65.37647,80.44686999999999,73.39494,68.049446,67.79634,not_test +2989,89.0,68.42397,61.284348,80.06378000000001,75.25693000000001,58.787415,63.120922,not_test +2990,90.0,80.99181999999999,55.629498,76.85315,73.79876999999999,55.738409999999995,57.03596999999999,not_test +2991,87.0,77.58458,50.895546,85.826965,76.345085,55.815918,52.286263,not_test +2992,85.0,85.71423,47.962444,94.503716,81.200096,52.492946999999994,49.790565,not_test +2993,92.0,80.0679,45.991787,99.44493,86.54176,42.011375,48.495018,not_test +2994,94.0,90.83225,44.40361,102.00742,96.544495,46.703384,43.975646999999995,not_test +2995,91.0,90.46976,42.571827,101.32692,99.68909000000001,43.195586999999996,43.024246000000005,not_test +2996,88.0,92.10762,40.092445,100.4115,96.20749,45.02172,41.515896000000005,not_test +2997,87.0,87.57821,37.84117,98.029465,96.29956999999999,46.538868,39.97118,not_test +2998,67.0,86.19287,36.69717,93.506996,88.48176600000001,41.749058000000005,38.845104,not_test +2999,64.0,65.49262,37.043803999999994,88.017914,78.96355,29.778137,38.32385,not_test +3000,48.0,60.72251,63.817319999999995,56.512325,64.897446,66.25734,65.788025,not_test +3001,47.0,58.797484999999995,64.94415,54.96625,59.023518,70.3738,66.70496999999999,not_test +3002,45.0,55.437336,65.91393000000001,57.59058,60.419903000000005,62.38231700000001,68.49237,not_test +3003,52.0,59.69031,67.3214,58.216724,58.99926800000001,55.064181999999995,71.87498000000001,not_test +3004,78.0,59.932438,69.15475500000001,57.89359,57.13245,61.379523999999996,75.43054000000001,not_test +3005,82.0,60.48925,70.62713000000001,57.424843,54.920425,83.25173000000001,76.45815,not_test +3006,90.0,85.85344,79.89716,81.143814,79.48919000000001,81.55581,82.11831,not_test +3007,101.0,81.4227,77.79266,78.63314,78.83861999999999,75.84703,80.331795,not_test +3008,103.0,72.619736,74.865944,72.226814,73.04085,75.84178,76.945175,not_test +3009,136.0,77.709946,72.37708,69.553024,70.15026,77.065704,73.53439,not_test +3010,158.0,65.15899999999999,70.69710500000001,66.3114,63.14759399999999,73.45364000000001,71.19724000000001,not_test +3011,105.0,91.56555,69.35562,69.03102,73.97469,62.95749,70.05269,not_test +3012,89.0,71.88164,72.74504,80.35501,100.85483599999999,76.56651,76.41473,not_test +3013,82.0,77.82179000000001,69.65477,96.23814399999999,110.93048,69.399254,74.75245,not_test +3014,95.0,96.34591999999999,65.19884499999999,107.30521999999999,119.339325,69.56912,71.689125,not_test +3015,90.0,116.11442,60.82936,108.2331,123.86487,71.08845500000001,68.40845,not_test +3016,91.0,118.47632,58.08088000000001,99.46924,122.97193999999999,66.314095,65.829285,not_test +3017,88.0,124.98401000000001,57.767540000000004,93.55866999999999,121.53459,52.987926,64.235794,not_test +3018,88.0,90.21599599999999,46.5342,91.856285,85.578125,45.883595,47.459705,not_test +3019,90.0,91.07745,48.91591,88.85374,85.664116,51.050644,48.1559,not_test +3020,90.0,83.620605,53.40663000000001,80.46367,77.83991,51.089077,50.037766,not_test +3021,85.0,83.10448000000001,57.844303000000004,73.95759,69.56541999999999,50.32549,52.471835999999996,not_test +3022,82.0,66.68124399999999,61.119724,64.96647,61.11728000000001,55.39153,55.268227,not_test +3023,87.0,63.61260600000001,63.57761800000001,63.00215,54.987072,69.029915,58.50411,not_test +3024,85.0,83.78947,103.56348,83.65605,83.35011,102.995094,104.59496999999999,not_test +3025,78.0,78.53067,105.14842,77.64671,72.803116,107.05748,103.97734,not_test +3026,65.0,66.74425,104.07713000000001,74.32911,71.82855,111.23488600000002,101.45873,not_test +3027,47.0,62.703384,101.04406,73.02939,64.93347,111.05013000000001,99.0491,not_test +3028,46.0,55.888847,96.99271,70.92639,61.96143299999999,103.38972,97.48808000000001,not_test +3029,33.0,50.92804,92.701996,69.13656,58.904509999999995,89.51165999999999,95.93047,not_test +3030,22.0,30.592823,94.01923000000001,24.579956,28.35572,94.600876,93.16255,not_test +3031,25.0,24.04181,93.29389,22.170033,25.253666,91.96656999999999,90.985794,not_test +3032,22.0,21.035206,91.88826999999999,22.128857,22.87716,97.59755,88.91237,not_test +3033,27.0,18.61959,89.40211500000001,22.525608,21.591537,102.9096,86.94096,not_test +3034,35.0,21.116463,85.73356,22.074253,26.030731,98.446434,84.90483,not_test +3035,41.0,31.488692999999998,81.55879,23.963745,29.494507000000002,82.08864,82.94265,not_test +3036,48.0,40.486603,85.01379399999999,39.920227000000004,45.615906,85.04618,81.88003499999999,not_test +3037,52.0,40.849334999999996,80.81423000000001,47.78764,55.817184,87.03326,75.65420999999999,not_test +3038,62.0,49.244858,75.66918000000001,57.750065,63.092285,88.18943,68.4922,not_test +3039,67.0,53.144676000000004,71.5358,65.09365,69.67636,83.20955,63.415123,not_test +3040,66.0,65.50679000000001,69.83497,66.83272,80.19351,71.02396,62.10675,not_test +3041,65.0,71.4549,70.71176,63.73785,78.10589,56.563213,64.06317,not_test +3042,55.0,59.99216,66.50683000000001,64.20536,57.735783,64.286835,66.76451,not_test +3043,56.0,64.64329000000001,72.6472,64.68493000000001,54.75974,69.64583,70.25385,not_test +3044,68.0,63.35745,81.81251999999999,61.750995999999994,52.09381,70.2313,76.45803000000001,not_test +3045,59.5,67.12621999999999,89.76664,61.253613,49.752903,72.44668,82.54961,not_test +3046,51.0,55.84060699999999,94.71455999999999,58.093937,43.688057,84.224846,87.00333,not_test +3047,43.0,57.003240000000005,97.86245,60.788113,42.705765,107.17505,90.16113,not_test +3048,38.0,39.991135,26.142223,43.614517,40.566452000000005,27.414478000000003,24.838226000000002,not_test +3049,46.0,38.09388,28.717113,42.370365,42.01784,30.675034000000004,28.071815,not_test +3050,57.0,39.548546,31.282394,47.459816,44.87857,26.493168,31.274544,not_test +3051,61.0,48.578682,31.290267999999998,48.080845000000004,45.91091,20.363506,31.962321999999997,not_test +3052,61.0,45.109609999999996,30.09927,46.623394,43.941895,22.007057,30.592391999999997,not_test +3053,60.0,43.085335,31.64883,45.62216,39.542908000000004,37.01449,29.962826,not_test +3054,63.0,58.178143000000006,66.81897,56.106277,58.173446999999996,67.71065,65.31914,not_test +3055,64.0,62.8265,66.34049,49.055298,57.229735999999995,71.83852399999999,63.349585999999995,not_test +3056,64.0,52.826427,65.69066,42.49134,53.450855000000004,63.43935,60.45612,not_test +3057,62.0,46.831547,64.804695,42.64286,50.368072999999995,52.17115,57.38596999999999,not_test +3058,62.0,34.079475,63.75982,39.882496,48.006645,51.277091999999996,54.592354,not_test +3059,64.0,39.771538,62.831269999999996,42.47697,50.20256,66.640686,52.211227,not_test +3060,60.0,59.59052,67.20193,70.22303000000001,59.759464,66.84074,69.50305,not_test +3061,59.0,48.793724,67.62182,76.8533,61.173077,65.830055,69.30503,not_test +3062,54.0,56.4743,66.52655,83.0676,61.866364000000004,66.61259,67.96037,not_test +3063,56.0,47.366856,63.85491,86.44743000000001,62.86481,65.0522,65.20609,not_test +3064,53.0,56.94935,60.61185,85.32254,62.954330000000006,58.33545,61.75147,not_test +3065,48.0,60.605225,58.29829399999999,84.763214,64.70344,47.85801,58.994057,not_test +3066,45.0,43.12117,59.82604,47.030434,46.196987,60.077343000000006,59.15664,not_test +3067,47.0,44.149464,56.86705,45.330659999999995,45.417084,62.358288,56.234984999999995,not_test +3068,50.0,38.443905,53.353855,44.014038,41.806107,57.528,52.070457,not_test +3069,50.0,42.83245,50.723633,43.68241,39.333954,50.733646,48.464405,not_test +3070,54.0,37.468647,49.891853000000005,41.232876,35.50201,49.392265,46.51549,not_test +3071,32.0,35.875954,50.77025,42.308884,36.534264,57.147774,46.091087,not_test +3072,30.0,27.026304,59.546890000000005,27.144045000000002,29.56346,58.243862,63.516636,not_test +3073,32.0,27.804127,62.209927,27.860224,31.422190000000004,62.803622999999995,65.90092,not_test +3074,25.0,28.395782,65.214264,30.115216999999998,36.51702,59.3844,68.135864,not_test +3075,28.0,31.564621000000002,67.57199,30.666864,40.0529,56.80645,69.85144,not_test +3076,26.0,33.18452,68.93616999999999,28.820913,38.23182,64.57259,70.67349,not_test +3077,19.0,29.468874,69.59964000000001,25.59154,34.221603,84.23057,70.33102,not_test +3078,17.0,15.609848000000001,59.246124,15.205521,18.275803,57.345604,56.931625,not_test +3079,10.0,9.908272,60.61428000000001,14.309021,18.736263,64.98899,58.1648,not_test +3080,10.0,11.689689999999999,62.59948000000001,14.588451000000001,18.217636,67.04248,60.31564300000001,not_test +3081,9.0,7.412071000000001,64.77077,15.290539,17.820529999999998,64.53555,62.412136,not_test +3082,8.0,10.640617,66.61792,15.114094,18.45985,62.276424,63.505069999999996,not_test +3083,9.0,12.238289,67.7248,16.90604,20.795876,64.6624,63.269165,not_test +3084,16.0,6.631397200000001,48.840508,7.933712,15.080029000000001,46.477768,48.21974,not_test +3085,22.0,7.921219000000001,48.49892,13.834755,27.91361,48.465137,47.0285,not_test +3086,36.0,15.721184,49.19122,24.719334,39.00077,44.577746999999995,47.53518,not_test +3087,59.0,23.405825,50.580303,35.929140000000004,46.44044,39.692802,49.843136,not_test +3088,63.0,32.711544,52.18015,51.51153,59.41494399999999,40.780518,52.815777000000004,not_test +3089,37.0,49.733727,53.61184,47.636990000000004,63.559277,51.00412,54.813625,not_test +3090,49.0,34.716286,31.780191,36.527252000000004,35.58113,30.159319,31.7029,not_test +3091,61.0,34.972159999999995,32.262596,31.169268,35.485924,31.492590000000003,31.756791999999997,not_test +3092,67.0,30.066282,32.891624,28.397509999999997,32.029526000000004,29.313315999999997,31.627253000000003,not_test +3093,65.5,35.926147,32.87737,28.157213,30.646488,26.919113,30.967153999999997,not_test +3094,64.0,30.712513,32.766033,25.773523,28.067543,29.096186,30.448645000000003,not_test +3095,61.0,29.374374,33.908913,27.247265000000002,30.234545,37.9082,31.198765,not_test +3096,60.0,60.040985,11.512733,58.614025,57.640007,9.264641000000001,8.758583,not_test +3097,60.0,57.120456999999995,12.519173,55.140190000000004,51.889763,12.178299,9.432888,not_test +3098,58.0,52.76004399999999,14.540159,55.43042,53.540780000000005,13.173046,10.85228,not_test +3099,57.0,53.950084999999994,16.087282000000002,56.13353299999999,52.585705000000004,13.457897,11.979542,not_test +3100,55.0,54.538959999999996,17.188776,55.582275,51.985878,16.498768,12.779525999999999,not_test +3101,54.0,53.544307999999994,19.106335,54.92193,49.939254999999996,24.653982,14.025951000000001,not_test +3102,52.0,55.425971999999994,61.176795999999996,56.036021999999996,54.49450699999999,61.72790500000001,61.82999399999999,not_test +3103,39.0,60.143919999999994,59.235825,53.646164,54.04966999999999,64.70749,59.41419200000001,not_test +3104,33.0,52.560986,54.818397999999995,50.017845,50.711452,60.862926,54.315697,not_test +3105,23.0,62.776897,50.12063,49.447865,47.718605,52.939285,49.5966,not_test +3106,26.0,46.8614,46.382164,46.805637,44.639507,45.70398,46.766315000000006,not_test +3107,39.0,70.235,43.40204,48.787434000000005,44.801224,42.581447999999995,45.0347,not_test +3108,38.0,42.69829,56.398476,40.289402,45.286552,57.629597,58.227608,not_test +3109,46.0,41.550007,53.484140000000004,50.149643,52.775204,52.259808,56.695440000000005,not_test +3110,48.0,50.595875,49.651825,58.821994999999994,59.036182,53.969475,53.032192,not_test +3111,54.0,50.772835,46.58876,64.23678000000001,61.163902,56.547077,49.072884,not_test +3112,60.0,60.614543999999995,44.756622,64.79774499999999,66.31197,51.7546,46.11538,not_test +3113,68.0,65.46223,43.41448,62.890730000000005,73.05121,36.78092,44.27525,not_test +3114,73.0,70.26995,46.871147,73.96023000000001,64.20192,49.262276,48.511520000000004,not_test +3115,73.0,64.486855,42.71338,71.91595,59.924473,44.534954,45.089897,not_test +3116,70.0,63.386154000000005,37.71264,64.11213000000001,55.505832999999996,43.12106,39.460957,not_test +3117,62.0,59.279114,33.764637,60.39043,53.29314399999999,41.287495,34.337322,not_test +3118,65.0,51.224937,32.146893,56.771786,50.191720000000004,35.172540000000005,31.808083,not_test +3119,68.0,48.040268,32.89287,58.113181999999995,48.301105,24.739822,32.104122,not_test +3120,68.0,70.82429,27.065224,68.12343,65.73255,26.515971999999998,27.867043,not_test +3121,70.0,66.72366,29.709473,63.593212,61.386154000000005,31.262259000000004,28.821640000000002,not_test +3122,67.0,65.80484,34.541138000000004,61.15948,61.08749,31.762123,32.135826,not_test +3123,65.0,63.979893000000004,40.183636,60.82447,56.621124,32.60348,37.636112,not_test +3124,64.0,60.377247,45.444763,59.632090000000005,54.284187,39.63495,43.87092,not_test +3125,70.0,55.222190000000005,49.628937,58.19065500000001,52.076840000000004,54.293130000000005,48.675564,not_test +3126,75.0,73.24635,62.048269999999995,74.3504,71.35545,60.22599,63.209267000000004,not_test +3127,79.0,69.50635,63.78409,72.66812,72.79959000000001,66.60555,63.677204,not_test +3128,83.0,62.967372999999995,64.21619399999999,67.977905,70.74696,61.840336,62.933234999999996,not_test +3129,78.0,68.24261,63.27483,66.09639,70.856606,55.095367,61.586075,not_test +3130,28.0,56.759117,61.281975,65.07552,62.887974,57.575340000000004,60.054145999999996,not_test +3131,13.0,80.439964,58.81126999999999,65.71164,63.812509999999996,72.89174,58.40139,not_test +3132,20.0,16.47322,63.276030000000006,14.291732999999999,18.025856,58.571312,64.19263000000001,not_test +3133,21.0,19.436096,62.09737,18.851485999999998,23.488026,61.70210600000001,62.724136,not_test +3134,12.0,21.190254,61.17816,25.942053,42.394794,66.11896,61.264244,not_test +3135,17.0,24.037468,60.790165,31.492783000000003,50.914658,69.51756,60.330048,not_test +3136,15.0,30.430618,60.322277,45.43441,58.602,70.02979,59.6169,not_test +3137,10.0,28.3366,58.939209999999996,41.521164,58.97744,67.50883499999999,58.449886,not_test +3138,10.0,8.923847,59.321404,9.608307,12.860408999999999,65.27569,60.09690500000001,not_test +3139,10.0,8.32114,55.520428,11.641663000000001,12.744614,54.463919999999995,57.559315000000005,not_test +3140,7.0,7.7485657,50.157074,11.196461,10.804492999999999,50.550156,53.568130000000004,not_test +3141,2.0,15.616504999999998,45.16758,11.320568,12.347118,49.25671,49.681446,not_test +3142,7.0,15.150626999999998,42.358078000000006,9.971492999999999,10.489246000000001,43.597584000000005,46.971493,not_test +3143,5.0,11.674332000000001,42.42852,12.006344,12.653454,30.718003999999997,45.577793,not_test +3144,9.0,8.039261,20.861057000000002,5.747139,10.656089999999999,22.074684,22.421547,not_test +3145,10.0,8.496395,22.540134,7.358074,13.307915,22.904896,23.22475,not_test +3146,16.0,8.661613000000001,25.716086999999998,8.710792999999999,18.81953,21.389614,25.976925,not_test +3147,19.0,17.944172000000002,28.260091999999997,8.530674000000001,22.548168,20.346611,29.1825,not_test +3148,14.0,22.295135000000002,30.808084,8.042637,22.131298,25.054726000000002,32.622875,not_test +3149,10.0,15.977184,35.792007,5.837314599999999,17.601059,38.4035,37.08506,not_test +3150,11.0,8.163853,20.71477,6.0222435,8.756511999999999,17.283466,15.908852,not_test +3151,9.0,2.0665283,22.901222,5.6242485,9.31493,21.237362,17.678982,not_test +3152,8.0,4.362049,25.102095000000002,5.784061400000001,8.284271,19.063202,19.269917,not_test +3153,7.0,0.0,25.38169,6.693199000000001,7.479183,15.518547,18.849941,not_test +3154,8.0,3.3107947999999996,24.614494,5.6875230000000006,8.066417999999999,18.399464000000002,17.17315,not_test +3155,10.0,4.495468,25.592243,7.6257095,11.550327000000001,31.644470000000002,16.897663,not_test +3156,15.0,6.3294373,12.735006,9.027389999999999,14.399872,11.053352,9.419083,not_test +3157,26.0,7.1917800000000005,13.771999,16.328175,28.643704999999997,16.87774,9.574950999999999,not_test +3158,42.0,18.318157,15.962419500000001,30.853035,38.727191999999995,15.010546,9.76482,not_test +3159,47.0,23.399513,17.841465,44.66835,46.30278,11.081997,9.810036,not_test +3160,59.0,37.62621,19.351785999999997,55.411930000000005,60.831534999999995,14.66474,10.329224,not_test +3161,56.0,50.64362,21.597038,52.42289,65.346436,30.72278,12.077488,not_test +3162,49.0,54.931396,18.440325,58.206672999999995,51.077076,12.090133999999999,12.873486,not_test +3163,43.0,59.984832999999995,18.667036,57.719566,49.131847,17.313032,13.262444,not_test +3164,60.0,57.345383,18.567854,54.58594,48.612854,14.915429999999999,13.179556,not_test +3165,67.0,59.331825,17.553028,53.66519,47.11476,9.223656,11.669089999999999,not_test +3166,65.0,50.520171999999995,16.226387,55.383625,46.204679999999996,9.087311,9.396142999999999,not_test +3167,66.0,41.460583,15.935125,53.195103,43.50477,20.273674,8.184788000000001,not_test +3168,67.0,62.801269999999995,12.328655,66.6477,62.512283,10.315645,11.4734745,not_test +3169,66.0,56.748253000000005,13.329378,64.425865,59.930656000000006,14.803505,14.514889000000002,not_test +3170,65.0,58.163943999999994,16.67709,60.926840000000006,59.160895999999994,14.995445000000002,18.981094,not_test +3171,60.0,53.730858,20.456787,58.253315,59.169594,14.240798999999999,23.339077,not_test +3172,49.0,51.162563,22.953808,57.27574,56.86585,17.913603,25.849749,not_test +3173,49.0,40.856384000000006,23.705568,59.46338299999999,54.179672,28.40158,25.539488000000002,not_test +3174,61.0,52.589367,54.212414,53.523906999999994,49.104828000000005,55.35805500000001,58.77144200000001,not_test +3175,55.0,47.69833,50.277496,51.2734,48.201878,53.367577000000004,55.05911,not_test +3176,41.0,57.909966000000004,44.213276,52.34245,46.657486,56.374336,47.286736,not_test +3177,41.0,47.735240000000005,39.64022,56.587559999999996,45.975266,56.9524,40.124306,not_test +3178,43.0,67.1785,37.723576,55.855938,50.79978,47.434868,36.482574,not_test +3179,47.0,70.84854,36.748177,70.26978000000001,53.327698,27.127111,35.811954,not_test +3180,57.0,52.12894,59.843517000000006,58.199364,52.37553,61.608913,66.96042,not_test +3181,58.0,59.142295999999995,58.019363,70.77718,60.172913,53.822235,65.070465,not_test +3182,64.0,61.628322999999995,54.476845,72.56051,62.249522999999996,55.15599,59.619637,not_test +3183,69.0,64.26461,51.530159999999995,67.87483,62.56304,57.912098,54.371483,not_test +3184,86.0,71.48018,50.02452,63.69001,61.064365,51.599823,51.381541999999996,not_test +3185,87.0,66.25546,49.001312,59.191880000000005,60.31997,32.530975,49.84247,not_test +3186,87.0,88.77463,50.228817,84.93336500000001,81.92073,55.32728,53.244369999999996,not_test +3187,94.0,87.21228,46.771313,82.080315,79.35455,50.0457,49.775475,not_test +3188,2.0,80.96797,41.799362,77.665764,75.72289,50.47768,42.484573,not_test +3189,82.0,77.63223,37.33487,74.49587,67.82588,50.444435,35.159172,not_test +3190,79.0,76.55287,34.922436,73.487045,65.87546,43.018925,31.174366,not_test +3191,78.0,58.940605000000005,34.844982,71.52014,61.48665,27.13372,31.393271999999996,not_test +3192,75.0,78.38578000000001,40.376106,75.24121,70.10177,41.17739,42.064125,not_test +3193,70.0,76.75237,43.53032,73.47941999999999,68.38000500000001,46.6323,44.950043,not_test +3194,67.0,71.31275,47.523632,70.53656,61.594765,43.13098,49.273563,not_test +3195,69.0,73.30891,51.09816,67.643036,58.855140000000006,39.755035,54.45864,not_test +3196,69.0,67.05540500000001,53.530593999999994,67.815186,53.118237,47.027294,58.910522,not_test +3197,75.0,51.523094,54.81839,71.17820999999999,51.165943,67.42806999999999,60.789519999999996,not_test +3198,92.0,75.7003,68.832,76.238235,75.85945,67.08304,69.81115,not_test +3199,109.0,63.04441,69.316986,72.96346,71.1566,72.465775,68.779434,not_test +3200,95.0,61.39680500000001,68.88535999999999,70.48191,60.51885,67.662125,67.289505,not_test +3201,95.0,50.274359999999994,67.92394,70.84062,54.553814,60.703934,66.60692,not_test +3202,78.0,71.77788000000001,66.5018,68.42976,61.285168000000006,61.720516,66.73299,not_test +3203,94.0,64.579926,64.47368,78.55481,62.7042,74.36588,66.54267,not_test +3204,102.333336,102.826706,88.98601,98.15015,108.350204,100.09708,89.57393,not_test +3205,110.66666399999998,107.54472,86.50625600000001,102.19766,115.10851000000001,95.078835,84.6167,not_test +3206,119.0,106.1097,82.24719,103.4194,119.61538,99.46265,78.22319,not_test +3207,117.0,105.92586499999999,77.87241999999999,102.17881,117.17555,101.86986999999999,72.83734,not_test +3208,115.0,108.41723999999999,73.86272,101.20700000000001,116.19141,89.7355,69.0499,not_test +3209,112.0,93.68051,69.73801,96.918495,113.42719,60.917477000000005,65.86569,not_test +3210,109.0,108.971954,64.36516,108.33434,104.722824,60.49276999999999,61.552387,not_test +3211,102.0,106.29378,60.975190000000005,102.91618000000001,99.10176,61.13256,58.014773999999996,not_test +3212,104.0,99.78531,56.675465,95.48253000000001,91.58511,60.009533,53.25663,not_test +3213,113.0,94.62524,52.939080000000004,89.82526,84.969604,55.20097,49.28999,not_test +3214,112.0,94.23356,50.782486,86.906296,89.18655,47.742397,47.610046000000004,not_test +3215,101.0,85.07578000000001,50.352654,83.53764,82.76136,41.36692,48.357845000000005,not_test +3216,88.0,90.95424,91.717804,91.82558,93.0172,92.54086,90.90135,not_test +3217,81.0,91.93464,89.76395,87.87697,89.32885999999999,97.49625999999999,89.9119,not_test +3218,84.0,87.99765,86.69459499999999,84.50038,86.52824,88.214745,87.50938000000001,not_test +3219,89.0,96.69566,84.30242,82.00511999999999,86.90658,76.74886,85.247665,not_test +3220,100.0,93.65541,83.54042,82.14787,82.70198,77.48127,83.95961,not_test +3221,104.0,78.16544,84.01264,84.96463,82.947716,95.182724,83.32613,not_test +3222,108.0,108.02275,105.03738,102.98691600000001,105.78732,103.81104,106.96762,not_test +3223,124.0,98.58423,100.995926,94.73573,101.89346,98.99662,108.20728999999999,not_test +3224,164.0,108.36932,94.72986,88.83503,95.566055,101.13551,106.95464,not_test +3225,183.0,109.7256,89.73485,86.95288000000001,97.3712,104.34769399999999,105.10947,not_test +3226,154.0,108.34941,87.93375,83.05863000000001,101.797714,100.7039,103.84621,not_test +3227,145.0,87.76486,88.61327,94.34958,102.46623000000001,87.31396,102.80716,not_test +3228,144.0,143.61604,94.3852,136.9311,151.15376,98.30308000000001,97.94895,not_test +3229,141.0,144.83423,92.36525,140.25404,153.50173999999998,101.04438,95.401566,not_test +3230,142.0,144.72769,89.455605,141.44858,155.70291,103.936035,91.27635,not_test +3231,131.0,141.13423,86.8427,140.55238,151.64966,103.5744,88.12989,not_test +3232,117.0,143.81335,85.65259,140.60947,150.69116,98.20578,87.556206,not_test +3233,107.0,124.296295,86.2873,136.60748,143.97887,89.45237,89.1607,not_test +3234,103.0,106.29796999999999,104.99721000000001,105.97673999999999,109.97825,100.956436,105.74081399999999,not_test +3235,97.0,111.41232,106.40321000000002,102.90496999999999,104.47203,105.66096999999999,103.44112,not_test +3236,99.0,102.19524,106.72885,98.71358000000001,95.30027,96.01584,99.497574,not_test +3237,108.0,105.86511000000002,106.25186000000001,96.54649,95.56558000000001,82.79723,96.00350999999999,not_test +3238,111.0,100.74209599999999,105.33769,93.11225,93.84044,80.83012,94.4198,not_test +3239,112.0,74.142136,104.18205999999999,94.0992,93.67206,96.87481,94.72646999999999,not_test +3240,110.0,104.73128,139.85246,109.16739,111.505974,141.49036,138.63846999999998,not_test +3241,125.0,112.1266,137.89768999999998,108.175255,113.32538000000001,136.30356,138.08865,not_test +3242,157.0,113.88653000000001,134.21527,104.51253,107.82031,138.32506999999998,135.3519,not_test +3243,144.0,111.00993000000001,129.82808,106.053375,104.96578999999998,139.01648,132.34695,not_test +3244,146.0,107.302704,125.21967,103.69394,100.04937,129.03848,129.85092,not_test +3245,151.0,73.39378,120.57652,99.04251,95.06388000000001,107.06296499999999,127.25287,not_test +3246,163.0,153.5077,106.46361499999999,133.11324,156.6268,105.97916000000001,107.45527,not_test +3247,196.0,146.56302,106.15032,123.17958,148.65793,105.78343999999998,107.40118400000001,not_test +3248,182.0,144.95752,104.66135,113.24718,140.87294,109.404274,106.65999,not_test +3249,137.0,150.28142,101.77257,126.48851,138.30196999999998,110.45546000000002,104.58544,not_test +3250,126.0,159.33598,98.85603,137.59537,138.99971000000002,104.52955,101.75899,not_test +3251,121.0,167.57234,98.00929000000001,144.47745,147.45663000000002,93.23657,99.76333000000001,not_test +3252,120.0,118.52925,112.88821999999999,127.86124,122.592476,109.27056999999999,115.608696,not_test +3253,134.0,121.73495,111.34228999999999,124.525925,118.849884,114.21524,112.48427,not_test +3254,132.0,123.17943000000001,110.09598500000001,122.00908000000001,117.32451,108.57938,110.21606399999999,not_test +3255,133.0,119.221695,110.69927,117.27153999999999,114.04076,102.36183,110.57203,not_test +3256,134.0,110.26257,113.83746000000001,113.4962,111.830505,107.723175,113.3234,not_test +3257,127.0,95.29833,118.60408999999999,109.4612,107.329346,128.35388,116.412155,not_test +3258,126.0,120.58273999999999,148.07816,115.68801,117.73735,141.67596,149.30867,not_test +3259,125.0,109.76517,151.718,110.66828999999998,107.79633999999999,152.67891,154.02322,not_test +3260,126.0,102.2427,153.34322,106.96603999999999,105.02078,159.96437,156.99053999999998,not_test +3261,125.0,100.270454,152.33571,100.809494,101.237335,158.00897,157.81531999999999,not_test +3262,123.0,92.91849,149.3153,96.29869000000001,98.35252,147.59995,156.36887,not_test +3263,119.0,70.05456,145.75083999999998,97.74767,89.00546999999999,135.39784,152.82863,not_test +3264,113.0,116.44853,124.90288000000001,117.2991,111.45188,124.0986,127.96716,not_test +3265,101.0,104.60444,123.64101399999998,115.08085,105.59703,120.80878999999999,125.4251,not_test +3266,104.0,101.444244,121.61475,111.28671999999999,99.43233000000001,125.23331,121.85558,not_test +3267,97.0,87.33923,118.77961,110.812546,95.495834,127.08506000000001,118.027725,not_test +3268,75.0,99.49434000000001,116.14737,107.11608999999999,89.128586,118.18188,115.11336999999999,not_test +3269,84.0,73.66931,115.24963999999999,100.16935,78.86599,99.964325,114.15213,not_test +3270,71.0,65.694824,127.27518,72.433235,73.29310600000001,128.86008999999999,131.84505,not_test +3271,70.0,48.482037,123.300545,72.09000999999999,71.751366,129.25203,132.24636999999998,not_test +3272,76.0,53.69238000000001,118.114456,71.57996999999999,68.37736,130.10213000000002,130.2894,not_test +3273,85.0,56.702369999999995,113.83823000000001,94.26688,79.27497,126.53456000000001,126.40683,not_test +3274,99.0,71.13928,112.46712,113.73773,95.93683,116.57356999999999,122.15893999999999,not_test +3275,120.0,77.48584,114.60799999999999,121.35026599999999,98.894936,103.55298,119.32218,not_test +3276,111.0,130.52289,123.16815,132.863,122.45485,119.802704,124.35677,not_test +3277,64.0,132.57901,129.30946,130.31606000000002,120.22045,123.886475,127.94075,not_test +3278,58.0,128.89919,136.92406,127.30977,116.14698999999999,122.19133000000001,133.15236000000002,not_test +3279,56.0,121.26781000000001,142.76816000000002,123.51866000000001,110.72001999999999,120.77224,138.25766000000002,not_test +3280,64.0,117.11333,145.53462,120.13285,108.69308500000001,127.47151000000001,142.0588,not_test +3281,69.0,100.56235,146.2473,116.30698999999998,103.14511999999999,144.68708999999998,144.28336000000002,not_test +3282,56.0,64.624306,77.05315,66.20756,67.7396,69.38314,74.722565,not_test +3283,43.0,66.20896,81.83658,62.639053000000004,63.895171999999995,78.05333,78.7251,not_test +3284,41.0,70.959496,86.71849,65.52816999999999,61.965004,76.49760400000001,82.98653399999999,not_test +3285,36.0,57.453903000000004,87.67333,63.555096,53.147335,71.14694,84.06773000000001,not_test +3286,42.0,62.9404,85.671265,62.62523,48.051956,75.1224,82.44633499999999,not_test +3287,50.0,52.343662,85.5858,66.67087,50.291767,96.54733,81.8684,not_test +3288,53.0,59.7901,104.07258,50.53505,48.830223,102.40664,100.883156,not_test +3289,51.0,60.646736,104.26709,49.90402,49.37508,107.04749,102.601776,not_test +3290,43.0,58.374474,105.434044,47.50584,45.51253,102.4834,105.06405,not_test +3291,35.0,48.354507,106.68703000000001,45.199894,41.446335,97.46431,106.36999499999999,not_test +3292,37.0,49.15759,107.27463999999999,41.772755,37.835484,103.106964,105.17528999999999,not_test +3293,35.0,37.397312,107.0867,37.79896,34.23977,123.04805,101.71811,not_test +3294,38.0,37.42795,66.98356,35.346558,31.320107,64.684135,65.636894,not_test +3295,49.0,35.73792,67.95,32.99623,36.698055,69.366196,66.98165999999999,not_test +3296,51.0,41.901173,70.7191,38.404266,38.403214,67.37075,69.43321999999999,not_test +3297,62.0,48.201107,73.45872,47.803467,45.241116,65.34387,71.33031,not_test +3298,68.0,57.635943999999995,76.16535999999999,62.557686,51.46733,73.22601999999999,73.02632,not_test +3299,74.0,70.359276,80.22244,71.31626999999999,64.84351,95.063385,76.21181,not_test +3300,81.0,71.975235,60.28388,84.00086,75.306946,52.78566,54.25127,not_test +3301,90.0,79.84268,62.505627000000004,82.89389,76.19714,58.240803,56.329075,not_test +3302,67.0,86.64854,66.87124,80.78435,79.784065,56.80198299999999,59.780519999999996,not_test +3303,96.0,80.73666999999999,70.911865,80.92811999999999,79.53868,54.458843,63.188359999999996,not_test +3304,99.0,87.07361999999999,73.38434000000001,80.71321999999999,79.59968,61.04127,65.683,not_test +3305,69.0,70.01839,74.81151,76.106224,78.39168000000001,81.19398000000001,67.17778,not_test +3306,78.0,67.66328,37.98258,66.00498,66.03119000000001,35.71093,34.703327,not_test +3307,81.0,69.0088,36.8188,61.909583999999995,64.46087,38.842175,33.75712,not_test +3308,80.0,74.43474599999999,39.468056,65.03730999999999,67.33201,37.89332,33.790207,not_test +3309,78.0,62.62966,44.756479999999996,63.038284,66.34808000000001,37.25855,35.605034,not_test +3310,79.0,67.94978,51.362606,62.255478000000004,63.807896,44.127390000000005,40.479217999999996,not_test +3311,73.0,55.108596999999996,58.253043999999996,66.2491,65.64065,61.71763000000001,48.61417,not_test +3312,64.0,71.5352,78.57741,67.13553,67.63356,75.3063,75.27201,not_test +3313,58.0,65.51758000000001,80.22887,58.492293999999994,66.76961,85.22104,74.88563,not_test +3314,41.0,64.56189,81.17171,56.53978000000001,63.134983,89.44839499999999,74.08261999999999,not_test +3315,15.0,52.6339,81.4215,51.17286,59.622566000000006,86.989655,73.399895,not_test +3316,13.0,53.561707,80.65111,46.181408000000005,55.479027,81.31827,72.6719,not_test +3317,14.0,40.155986999999996,78.44893,41.41239,50.57373,77.42123000000001,71.262695,not_test +3318,10.0,7.712890600000001,60.51316,8.850997999999999,14.092483499999998,60.157948,59.925793000000006,not_test +3319,10.0,8.963379,57.487930000000006,6.0719376,17.285759,62.900826,58.65823,not_test +3320,12.0,12.302811,56.38247,11.369301,19.889076,57.7296,60.08865,not_test +3321,17.0,20.386719,57.33141,17.21944,24.642403,52.652004000000005,64.71757,not_test +3322,20.0,31.194878000000003,59.562836,26.570304999999998,36.451546,57.138259999999995,70.44991999999999,not_test +3323,40.0,43.584423,61.998856,36.55988,40.130390000000006,73.87294,73.88748000000001,not_test +3324,62.0,34.50525,70.89734,38.03042,38.597107,72.48904399999999,71.53571,not_test +3325,59.0,43.286316,68.120476,35.18016,39.445675,69.531296,69.17268,not_test +3326,46.0,41.170475,64.101265,34.922385999999996,37.849808,67.89575,63.26185600000001,not_test +3327,47.0,48.517963,60.186203000000006,35.441185,36.343353,65.167114,57.269127000000005,not_test +3328,52.0,50.914944,57.861323999999996,35.949146,37.025166,59.38154599999999,54.580245999999995,not_test +3329,63.0,30.290287,57.925959999999996,32.64431,36.067753,51.310356,56.16835,not_test +3330,61.0,66.98867,16.858532,64.49497,64.535065,17.004326000000002,18.282825,not_test +3331,59.0,64.00385,20.03584,58.591705000000005,62.032852,21.842415,19.828873,not_test +3332,59.0,65.54194,26.703816999999997,60.26939,60.945840000000004,21.862041,23.712357,not_test +3333,56.0,55.473,33.346733,58.64657,57.863690000000005,22.219832999999998,28.401518,not_test +3334,66.0,61.942733999999994,38.561203000000006,57.932014,56.20794,30.712384999999998,33.42937,not_test +3335,66.0,51.187225,43.401585,62.925438,59.90555,50.310783,39.126095,not_test +3336,63.0,67.762726,52.91448199999999,69.4155,66.93585,49.1926,49.033882,not_test +3337,65.0,72.329926,57.77997,68.38958000000001,68.51804,58.70522,52.70029,not_test +3338,67.0,71.9625,61.70991,66.946686,67.09996,53.444297999999996,55.101893999999994,not_test +3339,47.0,64.49401999999999,62.899795999999995,66.7965,64.88653599999999,46.444379999999995,56.02956999999999,not_test +3340,40.666668,66.32135,61.019566000000005,64.89793,63.030075,53.65269,55.49912,not_test +3341,34.333332,52.14829,57.34619,62.071663,59.982330000000005,79.79593,53.56375,not_test +3342,28.0,35.770615,64.201515,37.601409999999994,37.73005,54.550532999999994,61.05321,not_test +3343,31.0,38.29598,62.005897999999995,34.395621999999996,40.529545,62.691113,58.956104,not_test +3344,34.0,45.697243,60.187957999999995,39.355366,43.832127,70.56378000000001,57.435505000000006,not_test +3345,48.0,52.376000000000005,59.3728,46.161606,49.768295,72.51359000000001,56.839565,not_test +3346,64.0,61.402977,58.959564,58.352830000000004,55.478072999999995,67.0261,56.347023,not_test +3347,80.0,73.60573000000001,57.826416,68.52754,67.66545,57.875893000000005,54.831005000000005,not_test +3348,92.0,82.42188,58.368954,90.900795,84.97936,59.62313,62.01551,not_test +3349,96.0,87.66611,53.558975,90.20661,83.05297,53.598983999999994,60.02984,not_test +3350,94.0,90.855446,47.25233,87.351616,84.3355,53.667114,54.584988,not_test +3351,89.0,86.98137,41.50892,87.362564,83.801575,54.0283,47.365044,not_test +3352,82.0,90.23026,37.891709999999996,86.25406,83.634056,47.62636,40.79379,not_test +3353,86.0,76.85555,36.82533,81.969666,81.8929,32.79562,36.79441,not_test +3354,87.0,78.66183000000001,32.080690000000004,80.399254,86.317276,32.101223,35.56243,not_test +3355,89.0,78.20238,32.787865000000004,78.05122,81.549545,35.761590000000005,35.822952,not_test +3356,84.0,80.69315,35.718426,80.90536,84.41643,34.69426,37.10573,not_test +3357,72.0,71.52681,40.12426,78.56264499999999,82.21441,34.70145,39.571135999999996,not_test +3358,71.0,77.62102,45.054386,77.6969,79.71306,42.743484,42.743885,not_test +3359,70.0,65.412254,49.60765,79.83,80.7464,60.323166,45.584796999999995,not_test +3360,71.0,73.09483,90.79437,73.09971999999999,74.13775,87.45409000000001,94.68021,not_test +3361,82.0,75.534515,90.69107,71.94643,78.85665,88.68695,93.49011,not_test +3362,92.0,76.13906999999999,88.32528,70.81015,79.408295,94.30418,90.620804,not_test +3363,106.0,68.1962,85.604095,70.69216999999999,79.3636,96.50595,87.69501,not_test +3364,118.0,78.474205,83.535,68.78586,78.44398000000001,88.23993,84.96474,not_test +3365,122.0,60.00303,81.717995,66.28933,75.86121999999999,69.6028,81.54227,not_test +3366,118.0,120.73395,76.10211,118.656944,111.87206,72.306946,76.212975,not_test +3367,104.0,98.98389399999999,72.99922,121.08023999999999,114.70206499999999,64.35514,73.30062,not_test +3368,103.0,112.94993999999998,68.64016,116.06299999999999,110.43416,65.25886,69.81711999999999,not_test +3369,104.5,110.93686000000001,64.91755,127.68143500000001,114.49171000000001,67.22424000000001,67.18113000000001,not_test +3370,106.0,135.14189,63.128853,134.33267,116.33561999999999,61.525387,66.02868000000001,not_test +3371,109.0,142.0175,63.325752,138.14831999999998,124.68248,46.527153000000006,66.03452,not_test +3372,110.0,119.29576000000002,88.48395500000001,120.06885,111.95539,98.13673,91.57521,not_test +3373,109.0,99.89793399999999,83.55946999999999,116.79121,112.60122,80.27554,82.16198,not_test +3374,110.0,97.089,75.29733,112.94098000000001,110.12052,78.52783000000001,68.394646,not_test +3375,109.0,89.1767,67.381226,107.02519,108.00348999999999,79.92378000000001,56.672615,not_test +3376,106.0,97.78506,62.89075,104.10643,105.48291,67.30059,51.376616999999996,not_test +3377,106.0,77.380974,62.559245999999995,100.150185,98.17007,35.41887,52.45885,not_test +3378,103.0,103.0631,112.55143000000001,106.811264,103.19835,110.67969,113.94363999999999,not_test +3379,100.0,95.30993000000001,115.89976000000001,101.3401,95.85491999999999,123.84107,121.8893,not_test +3380,98.0,91.49394000000001,116.46352399999999,97.94221,94.33215,131.09848,127.096985,not_test +3381,68.0,85.54406,114.07700000000001,94.43568,88.27001,127.43726000000001,129.31561000000002,not_test +3382,64.0,86.33819,109.73058999999999,92.25887,81.39106,114.92651000000001,127.98822,not_test +3383,56.0,71.352005,105.05331399999999,95.05489,75.5248,101.329124,122.49505,not_test +3384,58.0,64.441475,100.05533,61.491409999999995,58.527446999999995,105.2344,104.20933000000001,not_test +3385,79.0,68.321396,99.0053,60.52853,57.348445999999996,96.74713,102.57239,not_test +3386,97.0,65.745575,95.87723000000001,58.36665,53.294548,99.572556,98.88786,not_test +3387,108.0,60.392821999999995,91.57242,54.74122,50.165659999999995,103.65598,94.42306500000001,not_test +3388,91.0,69.62736,87.774796,51.238358000000005,48.606464,96.92163000000001,90.678085,not_test +3389,74.0,54.879578,86.007515,48.35239,46.798466,76.16436999999999,88.65173,not_test +3390,65.0,64.9551,65.32145,71.49582,67.33722,60.388690000000004,66.747345,not_test +3391,67.0,61.905643000000005,66.29146,72.04858,73.233154,64.5341,65.929886,not_test +3392,45.0,69.09418000000001,68.10483,74.098495,77.98129,60.476402,66.118126,not_test +3393,29.0,84.29505999999999,69.79729499999999,95.64713,90.55134,54.64349,67.33237,not_test +3394,50.0,91.98465999999999,72.022644,111.20586000000002,101.77335,58.408737,69.92704,not_test +3395,94.0,111.94195,76.18717,119.25731999999999,95.655,78.14958,74.0804,not_test +3396,96.0,92.75709499999999,73.94972,115.75079,103.14609,68.44058000000001,70.01243000000001,not_test +3397,63.0,96.32524000000001,76.0492,112.2799,103.25095999999999,72.19005,70.77933,not_test +3398,66.0,100.68759,78.82159399999999,108.343094,102.70229,70.332,71.76988,not_test +3399,77.0,97.33584599999999,80.38577,106.76485,105.64459,66.72155,72.14909,not_test +3400,76.0,101.98206,80.78689,105.61381499999999,106.68457,68.73298,72.46582,not_test +3401,77.0,88.66679,81.72264,97.96433,102.58619,80.78804000000001,74.07635,not_test +3402,73.0,68.28624,96.553116,70.26301,66.66048,99.03366,99.01201999999999,not_test +3403,71.0,63.116730000000004,96.93092,60.33274,59.328552,106.07758999999999,97.84881,not_test +3404,76.0,63.254180000000005,96.665924,61.030464,56.08899,101.63320999999999,95.24291,not_test +3405,75.0,57.893593,96.15332,59.612267,54.042526,87.492226,92.67701,not_test +3406,74.0,59.554127,95.447784,59.143784,53.141926,72.849625,91.09849,not_test +3407,84.0,51.048573,94.2938,63.88204,51.391953,67.66435,90.389725,not_test +3408,91.0,88.27494,73.4807,85.30976,89.61766,74.546776,69.03023,not_test +3409,80.0,82.97375500000001,69.82235,82.82392,89.875275,76.46905500000001,66.73178,not_test +3410,70.0,83.857574,65.74663000000001,80.84646,88.086815,72.2068,64.24218,not_test +3411,68.0,75.66252,62.283005,82.16138000000001,89.25346,62.147938,61.86303,not_test +3412,66.0,82.00844000000001,60.598009999999995,82.53905999999999,89.965096,51.44804,60.304092000000004,not_test +3413,65.0,64.73833499999999,61.38625699999999,81.7623,88.28396,46.600594,60.32999399999999,not_test +3414,59.0,63.795196999999995,89.57645,60.3575,65.06851999999999,84.95577,88.72418,not_test +3415,61.0,55.811504000000006,93.76541999999999,57.636596999999995,67.46358000000001,89.52605,92.45371,not_test +3416,66.0,59.856919999999995,97.25366,57.892272999999996,70.65347,83.63108000000001,94.92245,not_test +3417,75.0,69.19917,98.04709,72.39612,80.484726,76.543495,95.52932,not_test +3418,87.0,82.095566,95.47089,85.93431,88.66465,79.40867,94.22686,not_test +3419,89.0,96.70257600000001,90.695335,94.78605999999999,88.63143000000001,95.705635,91.46207,not_test +3420,94.0,96.96555,57.26555,100.021484,87.2783,55.626167,58.697869999999995,not_test +3421,98.0,87.9001,54.703026,97.88460500000001,85.553925,61.192158,61.075309999999995,not_test +3422,89.0,80.98984499999999,56.28199,95.32148000000001,84.9112,59.452971999999995,66.566986,not_test +3423,85.0,87.221924,62.150209999999994,92.180145,86.53905999999999,57.00666,75.04635999999999,not_test +3424,85.0,78.71245,70.319176,87.21055,86.163536,62.923393000000004,83.96994000000001,not_test +3425,84.5,88.50291,77.67583499999999,84.62784,81.2854,80.48052,89.50838,not_test +3426,84.0,85.58279399999999,92.248726,84.825294,82.44497,94.173225,92.28345,not_test +3427,75.0,82.59889,92.49036,83.21347,81.737686,101.84683000000001,89.92952,not_test +3428,55.0,77.63424,91.73005,80.35908,80.13762,105.80058000000001,87.332596,not_test +3429,56.0,76.83927,90.91461,78.592186,76.09637,101.72685,85.97276,not_test +3430,55.0,67.49544,90.45174399999999,79.12525,72.53434,90.24290500000001,85.83034,not_test +3431,51.0,74.03353,89.96528,79.23038000000001,68.31875,76.92148,85.61610999999999,not_test +3432,45.0,56.413821999999996,80.34645,51.96221,52.92108,80.63186999999999,81.196106,not_test +3433,44.0,56.303577000000004,80.55735,50.217009999999995,52.897152,85.18973000000001,79.96494,not_test +3434,53.0,52.942223,80.415146,46.303535,50.8345,84.8515,78.090355,not_test +3435,63.0,57.613327000000005,79.54838000000001,43.597305,47.72442,81.33735,76.5721,not_test +3436,75.0,48.929474,78.252075,41.79343,46.16735,79.18042,76.23138,not_test +3437,77.0,70.207275,77.34451999999999,42.985195000000004,44.3778,81.95215999999999,77.16341,not_test +3438,64.0,71.88038,45.736176,78.99280999999999,70.712296,44.767883000000005,46.186913,not_test +3439,72.0,72.23319000000001,45.57457,76.96379,73.2309,47.111206,44.83791,not_test +3440,90.0,78.55028,45.055991999999996,88.07936,74.9767,45.19184,43.156742,not_test +3441,102.0,80.95155,43.532562,95.366455,82.61320500000001,41.64241,41.42279,not_test +3442,114.0,89.35954,42.64499,98.75801,91.656906,41.748999999999995,40.661156,not_test +3443,103.0,100.86176,44.977759999999996,99.32995,96.13346999999999,48.937187,41.900043,not_test +3444,84.0,92.18977,62.792,98.25081999999999,99.87486,64.25553000000001,62.70815699999999,not_test +3445,77.0,78.34569,63.699695999999996,97.1841,95.19882,66.43786999999999,63.85771,not_test +3446,69.0,74.57114,66.13679499999999,93.35969,91.58159,64.58208499999999,65.9767,not_test +3447,65.0,73.878586,69.00675,90.684586,90.28750600000001,62.801365000000004,68.41933,not_test +3448,58.0,61.71904,71.55734,86.80812,85.9331,66.43614000000001,70.64073,not_test +3449,60.0,67.68982,73.68421,83.14489,79.05793,77.249565,72.34724,not_test +3450,60.0,58.891403000000004,81.79184000000001,57.453883999999995,56.876102,80.85596,77.54944,not_test +3451,60.0,58.358830000000005,80.723015,57.795443999999996,53.428253000000005,74.35314,77.37283000000001,not_test +3452,63.0,54.80072,78.907,56.77994,47.647476,77.10548,77.11253,not_test +3453,64.0,56.06805799999999,76.83324,56.319904,46.408584999999995,82.23763000000001,75.75506999999999,not_test +3454,66.0,50.906234999999995,74.97117,59.43166,47.451637,80.58895,73.19883,not_test +3455,65.0,58.722786,73.63727,59.387859999999996,46.696846,68.65561,70.55766,not_test +3456,69.0,68.37042,57.432587,62.556026,66.321945,58.59364,58.24446,not_test +3457,68.0,67.88685600000001,55.57636,62.00395,66.38911,59.646440000000005,57.206253000000004,not_test +3458,69.0,65.8555,54.230865,61.652016,65.21004,56.728885999999996,56.492180000000005,not_test +3459,73.0,73.19921,53.36835500000001,60.862590000000004,65.98891,52.651,56.05191800000001,not_test +3460,77.0,63.0045,53.773865,59.538169999999994,63.768963,52.169006,55.96771,not_test +3461,79.0,80.53021,56.42569,60.04721,62.543797,58.065383999999995,56.423218000000006,not_test +3462,84.0,83.47099,69.61487,83.1458,77.81525400000001,69.98169,67.04135,not_test +3463,90.0,80.64746,71.690506,81.27511,82.94501,73.26923000000001,67.681046,not_test +3464,92.0,80.58111600000001,74.031006,89.915115,85.55396,69.80591,68.833145,not_test +3465,91.0,87.00350999999999,75.76223,96.220894,95.22301,66.95846,70.28135,not_test +3466,90.0,88.89599,76.7014,99.02394,101.68324,72.56926999999999,71.69896,not_test +3467,93.0,94.86922,77.28795,99.77311999999999,104.49573000000001,87.929726,72.73954,not_test +3468,95.0,97.17693,85.093925,101.05358000000001,94.02866999999999,79.66033,85.49909,not_test +3469,99.0,85.11941,87.16861,99.25676999999999,94.56716999999999,85.8062,87.112564,not_test +3470,95.0,86.41733,88.08452,96.23193,91.949104,94.284836,87.31626,not_test +3471,103.0,81.329185,87.38521,94.20689399999999,91.05339000000001,96.88916,85.74146,not_test +3472,90.0,78.64841,85.31470999999999,91.59523,88.34396,88.913864,82.997375,not_test +3473,84.0,79.49805500000001,82.70269,88.05057,84.477165,73.25308000000001,80.34303,not_test +3474,78.0,80.127464,89.815895,83.593025,79.36371,92.03867,89.36269,not_test +3475,72.0,77.37912,85.796585,80.94429000000001,77.30396999999999,85.43636,86.573524,not_test +3476,42.0,73.02713,80.73891400000001,76.579994,73.65026999999999,83.805305,82.39085,not_test +3477,19.0,66.88935,76.7327,73.79182,68.78094499999999,82.88027,78.40884399999999,not_test +3478,16.0,58.623596,74.429474,74.629745,65.94054,76.81817,75.42813000000001,not_test +3479,23.0,64.36151,73.02495,75.09942,61.7621,63.896305000000005,73.286804,not_test +3480,32.0,28.310783,72.32292,26.424915000000002,27.541767,71.055084,72.07969,not_test +3481,23.0,25.051628,72.34754000000001,25.617382,25.637775,73.294495,71.98765,not_test +3482,12.0,25.703339,72.7979,22.953132999999998,23.249916,71.28564,71.76843000000001,not_test +3483,12.0,23.20089,73.395325,23.03548,21.705597,69.166336,71.41949,not_test +3484,10.0,25.634094,74.11726,21.511246,20.279705,72.23136,71.24134000000001,not_test +3485,10.0,21.281898,75.133415,23.882381,18.622269,82.21891,71.60122,not_test +3486,11.0,17.215355,25.622692,16.836544,19.7929,25.355488,23.911652,not_test +3487,13.0,17.967506,28.101963,19.739822,23.483207999999998,29.887867,26.227524,not_test +3488,19.0,19.370201,32.560340000000004,23.064808,25.329017999999998,29.706928,29.793556,not_test +3489,36.0,26.769809999999996,36.21808,28.233288,28.586563,29.091476,32.50461,not_test +3490,64.0,28.818752000000003,38.85953,33.964577,29.792346999999996,35.358967,34.26034,not_test +3491,61.0,32.73851,42.479217999999996,35.878009999999996,29.908413,51.987053,36.60931,not_test +3492,61.0,53.285778,21.908424,50.31626,56.35204,16.150097,17.589782999999997,not_test +3493,60.0,52.563309999999994,25.11562,44.601013,54.046440000000004,21.130249,19.679356,not_test +3494,62.0,50.15313,29.535797,43.56138,48.83354,19.895756,22.200981,not_test +3495,69.0,55.078476,32.67579,43.027676,47.621536,16.55294,24.42841,not_test +3496,48.0,50.707879999999996,34.062259999999995,41.646879999999996,47.05449,19.342518,26.363265999999996,not_test +3497,49.0,42.909645000000005,35.19665,40.40863,42.605765999999996,33.26062,28.323061,not_test +3498,48.0,49.45472,57.528507,54.58114200000001,51.312546000000005,54.02499399999999,54.260887,not_test +3499,38.0,52.369987,54.648853,54.46035799999999,54.24601,52.91000699999999,51.292972999999996,not_test +3500,47.0,52.254128,50.128679999999996,54.25108,55.94661,57.295382999999994,46.38687,not_test +3501,62.0,51.562073,45.666553,57.73084,58.07279200000001,58.208992,40.855507,not_test +3502,58.0,57.37808199999999,42.511726,57.62851,58.153769999999994,48.879177,36.626274,not_test +3503,63.0,56.435226,40.919154999999996,56.57264,54.675186,31.015686,35.202346999999996,not_test +3504,73.0,66.81962,44.45245,59.102474,63.164609999999996,45.485496999999995,46.76158,not_test +3505,69.0,63.597843000000005,43.415592,55.564696999999995,62.48457,49.400090000000006,46.635357,not_test +3506,65.0,63.789352,43.359344,53.203766,61.047966,54.135844999999996,46.451332,not_test +3507,53.0,55.667576000000004,43.662040000000005,50.912437,59.58213000000001,54.91729,45.809357,not_test +3508,54.0,56.904537,43.86795,51.735572999999995,58.147909999999996,49.797585,44.388459999999995,not_test +3509,62.0,49.377945000000004,44.076640000000005,51.705032,58.392635,41.385445000000004,42.330765,not_test +3510,73.0,60.805496,62.775980000000004,60.92599499999999,65.09859,63.420486,66.14369,not_test +3511,87.0,62.815277,57.94475,72.18193000000001,70.66015,65.623184,59.77978,not_test +3512,93.0,67.24194,51.29359,81.0012,77.09914,56.955498,50.810978000000006,not_test +3513,99.0,73.12951,46.357365,86.64969,80.65405,45.06774,43.8783,not_test +3514,104.0,76.78428000000001,45.193302,87.24755,81.00862,40.575590000000005,41.507397,not_test +3515,116.0,75.10464499999999,47.16302,82.43529000000001,82.89986999999999,48.74473,42.724445,not_test +3516,104.0,117.30371000000001,76.05979,109.36986,113.08559,72.83057,77.744644,not_test +3517,107.0,106.74908400000001,79.70588000000001,103.54815,111.39952,83.16128499999999,80.7908,not_test +3518,97.0,108.54868,81.06511,99.779,106.14491000000001,91.74514,80.22848499999999,not_test +3519,81.0,103.09738,80.479576,93.17413,102.41109499999999,92.62136,77.14651500000001,not_test +3520,79.0,102.930084,78.90014000000001,87.36835,96.68991,84.48865500000001,73.52343,not_test +3521,77.0,82.319824,77.1098,80.58792,88.2135,71.84607,70.83367,not_test +3522,85.0,77.42396,93.00969,76.14136500000001,79.299995,99.053345,97.53837,not_test +3523,83.0,74.3329,89.17737,73.52553,75.74946,89.05621,95.00993000000001,not_test +3524,87.0,72.32182,82.51576,72.46932,69.73102,87.54335,87.59121999999999,not_test +3525,88.0,64.724976,75.74274399999999,73.46619,68.4463,88.18375999999999,78.64124,not_test +3526,86.0,69.107086,70.73435,73.59373000000001,63.997769999999996,81.171295,71.539375,not_test +3527,89.0,68.87151,67.787796,73.34375,61.752359999999996,62.481472,67.84158000000001,not_test +3528,83.0,88.17081999999999,76.97482,88.39245,87.84425999999999,79.82293,81.03409,not_test +3529,79.0,82.07019,75.86518000000001,87.28022,87.60995,79.73756,79.19144,not_test +3530,64.0,82.42063,73.66136,84.99635,86.30281,79.497665,76.17599,not_test +3531,61.0,72.37876999999999,71.21028000000001,82.07271,84.59626,76.3941,73.13163,not_test +3532,64.0,84.61346,69.50808,81.052086,83.918564,69.73357,71.0191,not_test +3533,67.0,75.22184,69.13396999999999,82.93831,85.95076,61.967459999999996,70.18297,not_test +3534,77.0,69.961174,78.80138000000001,66.88686,67.31109000000001,79.04188,78.31397,not_test +3535,95.0,72.27096999999999,78.289505,77.29214,73.393974,79.086945,78.44778000000001,not_test +3536,125.0,74.91287,77.88818,87.78820999999999,82.23301,70.83643000000001,78.87614,not_test +3537,116.0,79.76293000000001,78.71675,92.261055,88.69570999999999,63.49366,81.16669499999999,not_test +3538,129.0,80.532326,81.24574,92.16789,91.356964,66.854,85.36258000000001,not_test +3539,118.0,80.54318,84.74094000000001,87.82862,92.84326,83.096985,89.612564,not_test +3540,129.0,116.919525,95.6789,112.55431999999999,117.49461000000001,95.06433,101.02792,not_test +3541,139.0,112.57661,98.68851,109.28926000000001,116.8285,103.537384,102.26798000000001,not_test +3542,123.0,111.242355,100.74588,106.824196,113.41866999999999,103.13859599999999,102.16821,not_test +3543,112.0,105.37423000000001,101.04141,103.05434,110.62315,97.77164499999999,101.18578000000001,not_test +3544,107.0,101.19841,99.600464,98.40276999999999,106.77049,95.2574,99.85637,not_test +3545,104.0,89.694496,97.241745,94.531296,99.79214499999999,100.70963,98.46463,not_test +3546,96.0,94.28429399999999,130.13153,99.15241999999999,101.433334,137.07962,135.93704,not_test +3547,72.0,88.967316,124.93695,96.51201,99.104355,123.57191499999999,130.58513,not_test +3548,56.0,84.57815,116.65385,93.22941,94.4288,119.70496999999999,121.10898999999999,not_test +3549,61.0,77.95263,108.83422,92.49084,93.64142,119.37730400000001,111.699646,not_test +3550,58.0,74.03558000000001,103.1997,90.81493,90.67442,111.49951000000001,105.04484599999999,not_test +3551,60.0,73.30626,99.19807,88.23286999999999,87.719826,90.609566,101.19946999999999,not_test +3552,59.0,65.326004,73.023384,61.656727000000004,61.375693999999996,73.697334,72.7656,not_test +3553,60.0,63.26667,73.91393000000001,60.109787,60.149498,79.21008,72.07078,not_test +3554,59.0,69.80523000000001,74.4214,59.274853,58.20194,76.44125,71.2464,not_test +3555,62.0,60.31726999999999,73.41725,56.755825,55.602814,68.82760999999999,69.49996999999999,not_test +3556,64.0,78.47901999999999,71.97836,57.56742,54.376774,65.055145,67.35925,not_test +3557,66.0,63.60261,72.5116,56.682959999999994,55.769546999999996,71.93573,66.42484,not_test +3558,71.0,68.1203,64.8607,67.028076,66.61276,61.863006999999996,60.7489,not_test +3559,74.0,71.36294000000001,66.04504399999999,76.85213,71.93689,71.48678000000001,61.159813,not_test +3560,79.0,75.34489,70.89645,88.70573399999999,80.00769,74.90909599999999,64.19978,not_test +3561,80.0,82.4202,78.672935,93.24925999999999,85.682686,78.25428000000001,69.94029,not_test +3562,78.0,89.36787,87.72881,93.23678000000001,87.74483000000001,89.74909,77.09204,not_test +3563,80.0,91.72976,95.9242,89.19029,89.74953000000001,111.40578500000001,83.34322,not_test +3564,81.0,84.03027,84.188774,83.89381999999999,82.12536,80.362274,82.11858000000001,not_test +3565,83.0,80.16391999999999,90.10280999999999,82.08089,80.47312,91.22769,86.02342,not_test +3566,84.0,80.04937,96.19494,80.100525,79.739586,90.68229000000001,90.62897,not_test +3567,87.0,78.53655,99.66804499999999,76.78359,77.4656,87.5081,94.348724,not_test +3568,2.0,83.24436,99.76091,74.95636,73.5358,94.4244,96.26926,not_test +3569,86.0,75.286674,97.97893,73.651085,65.48042,116.47176999999999,96.48095,not_test +3570,87.0,79.77824,80.85098,76.015724,68.95429,81.50553000000001,83.6471,not_test +3571,83.0,74.80548,80.47095,73.98654,66.00247,80.04677,82.16801,not_test +3572,83.0,72.00989,79.54431,72.24739,60.815630000000006,85.43489,80.97274,not_test +3573,84.0,63.691193000000005,77.71672,72.23947,61.155174,89.29194,79.60251,not_test +3574,85.0,69.221825,75.09123000000001,72.53388000000001,59.6046,83.98722,77.416115,not_test +3575,90.0,64.32725500000001,72.399284,71.80573000000001,59.052654000000004,69.30996,74.38794,not_test +3576,95.0,93.41585,75.5164,88.28929000000001,93.39294,77.42658,80.98619000000001,not_test +3577,101.0,87.29626,74.8897,88.53421,94.15216,79.078026,80.56201999999999,not_test +3578,105.0,85.877014,73.92071,87.60179000000001,91.727005,73.752914,77.15469,not_test +3579,110.0,78.36066,72.73631,85.70902,89.211945,65.71863,72.167404,not_test +3580,115.0,87.72179399999999,71.78995,86.05879,87.30118,61.970932,67.870056,not_test +3581,110.0,75.48193,71.60708000000001,88.65746999999999,86.71257,66.771736,65.964035,not_test +3582,103.0,107.66707,97.1356,101.72627,116.04788,101.13492,94.03196,not_test +3583,93.0,108.15848000000001,98.24746,108.18163999999999,116.96696499999999,108.346985,94.09005,not_test +3584,89.0,107.57768999999999,98.18284,111.64878,118.241844,102.64542,92.76118000000001,not_test +3585,88.0,110.366394,97.70218,114.28183999999999,118.842926,93.35934,91.37485,not_test +3586,87.0,116.84778600000001,97.23913,115.25878999999999,119.75546000000001,92.74835,90.73002,not_test +3587,88.0,111.55865,96.57508,113.36684,115.29095,105.744804,90.54249,not_test +3588,85.0,86.25123,88.31119,91.175095,89.994,90.07933,91.062965,not_test +3589,91.0,80.12328000000001,87.47459,85.87013,88.47661,92.94934,89.42171,not_test +3590,94.0,77.3818,86.47074,81.327095,86.43106,99.395706,87.22466999999999,not_test +3591,92.0,68.97428000000001,85.63935,74.65684499999999,79.77776999999999,101.04918,84.84913,not_test +3592,104.0,75.174324,85.194084,72.27523000000001,72.312836,92.759476,82.83725,not_test +3593,99.0,67.00887,85.1549,66.846466,60.382523,77.2649,81.74951999999999,not_test +3594,93.0,94.89255,87.35337,95.34059,95.60251,85.154854,88.368065,not_test +3595,87.0,88.55816999999999,85.56338000000001,92.64516,94.17763000000001,89.10110999999999,87.07186,not_test +3596,87.0,83.39038000000001,84.08989,89.107315,90.1422,82.35784,86.69796,not_test +3597,74.0,75.18415,83.92438,88.63082,87.28322,74.68624,87.823494,not_test +3598,50.0,72.392715,85.21305,86.89409,82.81126400000001,77.80479,89.6948,not_test +3599,40.0,71.289314,87.14569,84.49486999999999,79.36273,95.39631999999999,90.78641,not_test +3600,29.0,42.234306,90.82689,36.544266,38.564972,89.51051,91.062904,not_test +3601,22.0,38.886894,93.37169,32.692,36.928745,98.92194,92.447716,not_test +3602,17.0,34.025227,96.4608,31.582729999999998,34.89553,94.44333,94.77613000000001,not_test +3603,22.0,34.35392,98.72107,30.279682,32.077507000000004,88.04719,97.18375,not_test +3604,16.0,33.488209999999995,99.57175,32.32181,29.514675,95.12373000000001,98.6732,not_test +3605,15.0,36.381763,99.46703000000001,31.455368,32.281890000000004,120.817154,98.72795,not_test +3606,34.0,25.763657000000002,26.014816,23.424126,28.626842,24.055979999999998,25.807281,not_test +3607,86.0,26.746044,29.362270000000002,30.260502000000002,34.586143,26.673515000000002,25.79794,not_test +3608,111.0,34.588158,33.288326,40.777275,61.016254,23.719193,25.789558,not_test +3609,113.0,43.90898,34.251026,56.021202,52.217953,20.54551,23.825588,not_test +3610,122.0,46.27362,33.526627000000005,67.642075,47.257084000000006,25.952907999999997,21.453468,not_test +3611,87.0,56.036345999999995,35.822140000000005,74.1997,42.828194,44.2738,22.496197,not_test +3612,73.0,75.27056,92.87084,71.09477,67.92857,91.37189000000001,91.654945,not_test +3613,60.0,72.69688000000001,90.96476,64.726776,52.7068,98.1492,88.56389,not_test +3614,59.0,74.25053,85.584785,61.54646999999999,48.81387,75.33329,82.44919,not_test +3615,53.0,64.10582,79.51523,59.172737,44.305984,47.700943,76.94842,not_test +3616,2.0,66.047905,74.69336,58.995006999999994,42.484276,46.1027,73.83453,not_test +3617,47.0,55.69854399999999,71.25949,54.85428,32.987957,82.21135,72.09822,not_test +3618,47.0,43.243446,56.670452000000004,46.427807,42.852470000000004,53.562183,48.92682,not_test +3619,46.0,42.929435999999995,56.547516,46.09833,42.71734,58.137240000000006,42.340298,not_test +3620,44.0,44.798096,57.539336999999996,46.833397,42.34463,48.952187,37.01042,not_test +3621,50.0,45.49698,58.309096999999994,49.918079999999996,43.717033,36.189609999999995,34.077746999999995,not_test +3622,48.0,54.213607999999994,58.827675,50.651688,42.166176,36.015533000000005,35.558765,not_test +3623,50.0,49.739944,60.290493000000005,49.190758,40.231415000000005,57.09455,42.85695,not_test +3624,49.0,48.946205,44.275314,47.903996,47.487083,45.148790000000005,42.353233,not_test +3625,50.0,43.760822,41.411957,44.505356,46.270813000000004,47.527609999999996,35.889458000000005,not_test +3626,52.0,39.37262,38.935448,42.356766,44.593376,38.546276,29.459919,not_test +3627,52.0,35.680397,36.782413,40.93152,41.619087,27.205166,24.677189000000002,not_test +3628,57.0,34.789787,35.9309,41.549335,40.874214,26.528358,22.715492,not_test +3629,59.0,34.63017,37.763313000000004,40.651375,43.61322,42.85371,23.867302,not_test +3630,50.0,53.903572,47.445840000000004,53.05978,57.905273,47.76014,48.346184,not_test +3631,41.0,56.17691800000001,45.616325,61.07459,59.95352,52.566759999999995,47.488956,not_test +3632,41.0,58.32958000000001,49.149124,66.82032,63.62913,46.04991,48.83832,not_test +3633,35.0,66.35306,57.355465,71.28676,67.64571,41.220123,53.631319999999995,not_test +3634,28.0,66.0704,67.490234,74.96946,69.97041,52.817677,61.268303,not_test +3635,25.0,69.87311600000001,76.16741999999999,74.875465,70.80765,84.03649,69.16591,not_test +3636,23.0,22.234497,54.111796999999996,23.484852,24.97205,51.80458,52.292294,not_test +3637,19.0,26.009601999999997,59.516346,26.559464000000002,25.657954999999998,67.7726,56.59328000000001,not_test +3638,15.0,24.025322,64.72099,27.115016999999998,26.295765000000003,72.33849000000001,61.720909999999996,not_test +3639,15.0,21.940711999999998,67.732834,25.5051,26.175835,67.16508,64.62438,not_test +3640,13.0,33.237423,68.30442,26.643179999999997,27.548958000000002,62.31574200000001,64.30360999999999,not_test +3641,14.0,29.489029,67.723274,24.928665,26.152729,67.458405,62.355553,not_test +3642,12.0,13.674278,18.166353,12.046173,17.566643,9.165443,11.733051,not_test +3643,10.0,14.539623,16.101229999999997,12.140556,19.378933,13.174873000000002,9.717556,not_test +3644,11.0,18.327728,18.047848000000002,13.156868,20.431236,10.686237,9.188587,not_test +3645,16.0,21.303856,22.097523000000002,14.933765,24.486347,7.5195007,10.8474655,not_test +3646,22.0,30.419384,26.259382000000002,15.178279999999999,26.995440999999996,13.218128,14.458088,not_test +3647,16.0,34.029663,29.744438,14.221157,25.668816,32.43744,18.763239000000002,not_test +3648,13.0,14.515778,18.246195,11.183067,16.735874,13.545129999999999,17.124208,not_test +3649,13.0,10.843067,20.774063,7.927025,15.995094,20.280592000000002,21.280405,not_test +3650,14.0,5.756344,24.694785999999997,6.540535,15.205791,17.528374,26.444595,not_test +3651,12.0,9.04002,27.801281,4.740593,13.983421,14.447567000000001,30.594535999999998,not_test +3652,12.0,4.983967,29.181156,7.814686,13.082336,23.054173000000002,32.84118,not_test +3653,14.0,9.881741,29.603703000000003,6.805309299999999,15.207207,47.22206,33.624928000000004,not_test +3654,14.0,11.024455999999999,23.351597,10.79533,12.444576,18.19162,16.428585,not_test +3655,18.0,13.927067000000001,27.027624,13.9008255,16.67492,28.304797999999998,20.776918,not_test +3656,23.0,18.432976,32.1222,18.711792000000003,25.34225,28.66217,27.770403,not_test +3657,23.0,26.85094,36.05686,27.551239000000002,31.472884999999998,27.415733000000003,34.59401,not_test +3658,22.0,26.224083,37.33025,28.222929999999998,35.599857,35.62299,38.688244,not_test +3659,15.0,38.47493,36.348156,31.041225,35.642936999999996,56.908280000000005,39.141566999999995,not_test +3660,12.0,8.578667,22.018034,10.77409,16.19458,21.623201,23.089980999999998,not_test +3661,11.0,15.050995,21.130632000000002,14.243347,16.433956,23.368036,22.21669,not_test +3662,10.0,12.574501,19.768242,14.822029,16.546677,21.106524,20.15023,not_test +3663,7.0,10.2111435,18.277042,13.3881,16.541466,17.261406,17.656372,not_test +3664,2.0,21.309319,17.114857,14.104992000000001,17.847220999999998,15.7673,15.681938,not_test +3665,8.0,16.805672,16.626442,12.195736,16.65866,18.889074,14.807127,not_test +3666,10.0,1.0903549,9.612838,5.278084,10.617989,9.171114999999999,10.236827,not_test +3667,11.0,2.420639,10.188628,6.1598854,12.311325,10.784736,11.153452,not_test +3668,11.0,6.380844000000001,11.885411,7.503124000000001,13.314209,10.688872,12.506163,not_test +3669,17.0,9.080971,13.87297,9.364269,18.91798,11.173098,13.867296,not_test +3670,19.0,18.786151999999998,15.633757999999998,10.096267999999998,24.528122,15.105732000000001,15.120229,not_test +3671,13.0,23.625343,17.15485,8.925766000000001,22.856762,23.127036999999998,16.354784,not_test +3672,9.0,9.409485,14.500173,11.43079,13.141055999999999,11.8610525,12.717194000000001,not_test +3673,10.0,4.061165,15.901514,8.815230999999999,11.954964,15.0294,14.360707000000001,not_test +3674,8.0,0.0,17.682491,5.1046830000000005,11.470932000000001,15.007195000000001,16.332323000000002,not_test +3675,9.0,2.5867271,19.41335,4.049258999999999,10.548233,14.462042000000002,18.286276,not_test +3676,8.0,0.0,20.806957,5.675312,9.798767,17.150164,19.807272,not_test +3677,10.0,3.4686165,21.735285,6.164463,10.144306,24.426945,20.503079999999997,not_test +3678,14.0,9.794445,8.480089,11.107037,8.940659,6.7707809999999995,7.6249139999999995,not_test +3679,24.0,13.839977,8.501379,14.875706,17.4953,8.165586,7.4544744000000005,not_test +3680,33.0,18.223589999999998,9.374802,23.968784,34.20735,7.8634205,7.986034399999999,not_test +3681,44.0,29.880802000000003,10.651237,39.91323,48.94148,7.309141,9.327518,not_test +3682,48.0,30.548609000000003,11.934494,45.821020000000004,54.70568000000001,8.993311,11.352249,not_test +3683,39.0,42.66957,13.069272999999999,50.893322,58.53986,14.168101,13.618164000000002,not_test +3684,45.0,29.187464000000002,30.490109999999998,31.412809999999997,37.54761,30.795824,30.808928,not_test +3685,31.0,28.809332,30.206202,28.795004,33.187637,24.741116,29.515152,not_test +3686,25.0,30.03118,28.188353999999997,27.592312,27.799513,24.636444,26.215813,not_test +3687,27.0,25.412407,25.586655,25.828259,25.730536999999998,26.968575,22.755716,not_test +3688,25.0,32.218513,23.174706,26.062191000000002,25.277878,25.318174,20.392452,not_test +3689,23.0,24.676914,21.004179999999998,24.256096,21.497192000000002,16.118585999999997,19.119324,not_test +3690,22.0,23.071007,21.779970000000002,21.936905,20.660263,23.46109,22.291323000000002,not_test +3691,20.0,22.735096,21.065388000000002,22.0052,21.556473,25.363429999999997,21.652082,not_test +3692,22.0,24.381477,20.663609,22.543575,22.895641,23.708945999999997,20.85698,not_test +3693,33.0,24.131748,20.628733,25.575253,27.633190000000003,20.420414,20.192759,not_test +3694,46.0,30.82589,20.843857,26.380492999999998,31.379765000000003,19.092037,19.80574,not_test +3695,55.0,28.028065,21.153698000000002,24.105404,28.61768,22.071947,19.667767,not_test +3696,61.0,60.745833999999995,21.929443,55.217921999999994,54.699780000000004,22.084805,23.086154999999998,not_test +3697,50.0,52.673958,21.805892999999998,50.977127,52.607533,22.37955,22.773605,not_test +3698,28.0,52.344906,21.148155,48.948044,51.00962,23.888134,22.432411,not_test +3699,24.0,41.59185,20.039078,45.182182,48.138504,23.948841,22.143301,not_test +3700,31.0,41.11033,18.983288,46.176895,45.36769,20.692598,21.721386,not_test +3701,12.0,29.58605,18.59577,48.481598,42.99913,14.815199,20.936066,not_test +3702,14.0,8.27346,23.84467,10.586333999999999,13.347855,25.372576000000002,22.272942,not_test +3703,19.0,11.306545,24.426579999999998,14.836986999999999,17.501858,27.010414,21.985289,not_test +3704,23.0,15.190998,26.46568,23.371464000000003,33.871593,22.037569,24.875158,not_test +3705,25.0,22.429588,28.928767999999998,33.609013,43.344257,20.712296,30.043264,not_test +3706,29.0,23.764689999999998,31.111881,35.740646000000005,47.87177,32.386257,35.226112,not_test +3707,42.0,31.41672,32.97906,35.441994,50.841682,56.83136,38.198723,not_test +3708,55.0,35.733684999999994,24.910320000000002,35.617905,38.678043,23.217613,24.17237,not_test +3709,61.0,33.512913,27.252457,32.316868,36.40096,25.557957000000002,25.105342999999998,not_test +3710,67.0,36.079636,28.789897999999997,30.298396999999998,30.505445,24.711275,25.394001,not_test +3711,54.0,26.177776,28.477081,28.649867999999998,27.305134000000002,23.238770000000002,23.914043,not_test +3712,48.0,31.990196,26.829421999999997,28.745890000000003,25.353464000000002,24.841639999999998,21.17245,not_test +3713,42.0,19.633114000000003,25.482879999999998,26.898201,21.58028,31.064128999999998,19.059788,not_test +3714,62.0,40.69402,62.782546999999994,41.22507,40.024291999999996,62.48613,62.78955,not_test +3715,66.0,35.89817,59.287631999999995,39.04858,39.201363,56.282776,59.01478,not_test +3716,69.0,30.681179999999998,53.834877,38.578888,37.46471,53.746887,53.60434300000001,not_test +3717,70.0,24.600195000000003,49.545646999999995,42.669666,39.55843,53.06080600000001,49.76487,not_test +3718,77.0,33.99844,47.50643,42.748825,40.057784999999996,49.65485,48.4561,not_test +3719,79.0,27.160017,46.400356,41.567806,39.082375,40.671574,48.066208,not_test +3720,74.0,82.43167,67.14872,78.38996999999999,73.34535,73.376076,69.00976,not_test +3721,72.0,74.3916,66.55819,78.23378000000001,73.64125,68.43884,69.68184000000001,not_test +3722,55.0,71.61919,62.921677,76.97156,71.5764,66.89905999999999,65.97446,not_test +3723,60.0,62.44573199999999,57.266373,74.87288000000001,66.70991,65.084694,59.126328,not_test +3724,56.0,70.81255999999999,51.28448,75.452034,62.800194,57.989456000000004,51.994884000000006,not_test +3725,62.0,52.556324,46.585915,78.88493000000001,59.754245999999995,44.320553000000004,47.381943,not_test +3726,68.0,58.703354000000004,56.077690000000004,66.81875,60.19935,60.658722,58.241577,not_test +3727,87.0,62.825703000000004,52.808655,76.0096,68.525734,57.153088000000004,56.88292,not_test +3728,88.0,66.99258,48.436840000000004,83.3976,84.78128000000001,58.86316,53.504245999999995,not_test +3729,108.0,73.53513000000001,44.807590000000005,87.11784,103.580315,59.32324200000001,49.65797,not_test +3730,113.0,87.48286,43.184093,88.1275,110.33288600000002,51.862970000000004,46.749443,not_test +3731,117.0,91.93406999999999,43.594296,84.21468,108.95369,35.888256,45.282515999999994,not_test +3732,115.0,114.65494,107.20546000000002,118.55896000000001,125.93948,103.61036999999999,110.254166,not_test +3733,121.0,113.9194,107.40928999999998,113.38928,122.8578,109.01953,108.55946000000002,not_test +3734,137.0,116.36853,104.41458,109.33612,116.40546,102.85361,103.77237,not_test +3735,122.0,105.501625,100.44443000000001,101.26233,111.01626599999999,96.28580500000001,101.7164,not_test +3736,112.0,100.72838,96.67024,93.90489000000001,103.39213000000001,99.3275,103.481895,not_test +3737,111.0,88.97444,92.74509,89.11282,93.34647,112.31782,104.7442,not_test +3738,104.0,108.06889,101.17073,105.00962,105.47553,103.46055,108.03403999999999,not_test +3739,100.0,109.501205,97.72685,98.97155,102.83749,90.35776,102.62142,not_test +3740,88.0,96.96649000000001,92.553276,93.164925,94.54434,87.89474,94.49591,not_test +3741,83.0,97.63852,88.041565,90.573,89.66606,87.31734499999999,87.64716999999999,not_test +3742,80.0,83.7588,85.73668,86.981186,87.15916999999999,77.951836,84.52423,not_test +3743,77.0,72.58258000000001,85.589874,82.9966,88.085236,57.478790000000004,84.774796,not_test +3744,80.0,79.01574000000001,76.20806,78.18245,79.39466999999999,76.25886,78.83877,not_test +3745,89.0,79.35176,74.28662,79.137146,82.84999,79.17866500000001,75.356606,not_test +3746,90.0,79.97043599999999,71.29765,77.88283,82.34415,78.88123,69.85114,not_test +3747,97.0,74.58436999999999,68.00062,75.66015,80.12741,74.17403,64.56475,not_test +3748,95.0,86.86582,66.11493,75.75118,78.48265,67.86665,61.854904000000005,not_test +3749,107.0,70.95735,67.17957,79.54656,71.675285,64.80247,62.75586,not_test +3750,127.0,111.3543,94.48066999999999,103.31492,114.32036000000001,93.34465,92.916885,not_test +3751,146.0,113.63441,97.08319,114.46515,119.103935,100.34816,98.695625,not_test +3752,139.0,113.62578,101.55714,118.99380500000001,127.7021,94.65991,105.93751999999999,not_test +3753,132.0,125.96569,107.11441,123.29184,131.74356,87.849785,112.65133999999999,not_test +3754,123.0,133.38818,112.39751000000001,125.22961000000001,138.39203999999998,94.30561999999999,116.549644,not_test +3755,115.0,126.35728999999999,115.98283,123.28261,134.18396,118.58656,116.253105,not_test +3756,114.0,105.38005,121.04656000000001,109.52488000000001,117.11413,121.60441000000002,119.57791999999999,not_test +3757,117.0,112.10821499999999,121.12511,104.96597,112.47996499999999,117.10188000000001,119.16578999999999,not_test +3758,127.0,110.65709,120.08174,101.75588,110.22623,121.36716000000001,119.07098,not_test +3759,162.0,99.13545,117.9177,96.988976,111.18807,125.36111000000001,118.33883999999999,not_test +3760,156.0,94.15075999999999,114.80892,90.85247,107.41598,119.17206999999999,115.96816000000001,not_test +3761,150.0,75.51013,111.292915,85.45181,98.6411,100.86335,112.00872,not_test +3762,147.0,139.47583,135.06258,133.84587,134.58063,137.85976000000002,137.99149,not_test +3763,131.0,129.7195,128.43605,124.49144,123.77428,121.65423999999999,129.10458,not_test +3764,129.0,111.119675,116.11833999999999,114.4877,117.34448,113.95236000000001,115.696526,not_test +3765,120.0,110.90735,102.75185,109.08608999999998,111.81081999999999,109.55405,103.54813,not_test +3766,118.0,96.324936,92.94890600000001,104.37015,105.66334499999999,99.16561999999999,96.87257,not_test +3767,119.0,83.63336,88.902824,100.85811,104.21054000000001,78.89653,96.13093,not_test +3768,136.0,123.80913999999999,113.11871000000001,107.99,118.75783,113.3715,115.221855,not_test +3769,151.0,116.53412,112.1096,107.84732,122.5586,114.03589,112.261604,not_test +3770,110.0,122.55518000000001,111.42415,103.95714,117.58783000000001,108.61648999999998,107.91443000000001,not_test +3771,93.0,106.90025,111.54342,97.60682,110.21834,104.44197,104.52431999999999,not_test +3772,143.0,99.08835,112.90221399999999,95.80546600000001,104.17778,109.24418,104.14828,not_test +3773,111.0,56.78994,115.47481,96.30539,100.82903,124.437164,107.1095,not_test +3774,105.0,86.98826600000001,105.6193,101.31477,111.72616599999999,100.52691999999999,104.5017,not_test +3775,129.0,90.400894,109.13045,112.62616000000001,126.06913,108.29803999999999,105.36413600000002,not_test +3776,133.0,98.73749000000001,113.41518400000001,118.65891,139.44846,105.49996999999999,106.70022,not_test +3777,133.0,112.66856399999999,116.24349,122.92996000000001,147.57446000000002,99.26100000000001,107.67487,not_test +3778,137.0,123.38016499999999,117.23104,124.54888999999999,152.4288,101.51136,108.66678,not_test +3779,140.0,123.67828,117.79822,121.05256999999999,147.23529,118.58391599999999,110.77772,not_test +3780,144.0,131.82617,137.21672,142.89713999999998,141.0673,135.0416,135.9932,not_test +3781,140.0,129.8559,137.6489,136.1611,138.6687,140.2284,135.70396000000002,not_test +3782,155.0,128.28648,139.40741,131.81346000000002,132.08661999999998,131.5718,137.11969,not_test +3783,147.0,111.329575,141.67033,123.18208999999999,128.66554,122.36051,139.94253999999998,not_test +3784,107.0,101.52878,142.75005,114.196106,121.51441000000001,127.79813,142.24208000000002,not_test +3785,62.0,76.59616,141.38995,107.79619,108.27988,151.93182,141.89561,not_test +3786,94.0,44.993412,60.93595,49.02876,53.95271700000001,57.40204,65.004166,not_test +3787,80.0,35.466156,63.3462,35.129494,44.082382,57.65576,65.65032,not_test +3788,83.0,30.690310999999998,65.24599,31.35265,29.580498,52.464638,66.190414,not_test +3789,89.0,25.852076999999998,64.23506,37.04492,28.630153999999997,45.243109999999994,64.55405,not_test +3790,67.0,37.892883000000005,63.25885,37.423404999999995,27.023471999999998,45.569862,62.33141,not_test +3791,28.0,31.510472999999998,67.94179,34.204229999999995,25.431015,61.134617000000006,63.48461999999999,not_test +3792,17.0,19.019753,26.954102000000002,17.201431,21.253597,24.591988,26.284035,not_test +3793,12.0,9.691547,27.546584999999997,5.1647680000000005,5.820942,26.605247,24.070808,not_test +3794,13.0,0.0,30.715195,0.0,0.41429520000000003,24.975182,24.051468,not_test +3795,14.0,0.0,33.125168,0.0,0.0,23.522987,24.713722,not_test +3796,13.0,0.0,36.171127,0.0,0.0,31.100143,27.147040999999998,not_test +3797,12.0,0.0,44.248566,0.0,0.0,53.353806000000006,33.824707000000004,not_test +3798,13.0,5.907482,20.348503,11.768948,13.127064,17.504562,17.46975,not_test +3799,21.0,9.2329445,22.399696,14.440098,23.263966,22.893333,21.082565,not_test +3800,35.0,15.459446,27.516594,26.362434000000004,31.44172,22.29129,25.988213000000002,not_test +3801,57.0,30.32876,31.928795,41.79815,52.287597999999996,21.484238,29.143074,not_test +3802,66.0,32.47152,35.295403,45.54233,56.7159,30.877045000000003,30.912421999999996,not_test +3803,71.0,47.205574,40.32054,46.126495,63.012159999999994,55.661983,34.136612,not_test +3804,75.0,79.34579000000001,83.09387,80.4412,70.817,68.810486,71.51368000000001,not_test +3805,76.0,71.8297,82.52316,76.96525600000001,66.73186,72.52247,70.42102,not_test +3806,78.0,73.0018,79.38245,75.22038,63.536373,57.566869999999994,67.88053000000001,not_test +3807,80.0,65.08197,75.08593,69.40293,61.836563,41.003525,64.95952,not_test +3808,78.0,68.470535,71.17321,66.95914,59.474309999999996,43.20789,62.56253,not_test +3809,76.0,48.11456,68.453896,63.885543999999996,51.577248,70.90379,60.92505,not_test +3810,80.0,74.06059,75.40514,76.74631,77.03376999999999,80.342155,82.13489,not_test +3811,88.0,68.679214,78.525154,70.73503000000001,71.54098,79.634575,83.63552,not_test +3812,96.0,66.99083,80.92394,67.36618,64.46888,83.792015,84.456085,not_test +3813,92.0,50.09523,79.87980999999999,67.76886,65.98262,85.22205,83.37586999999999,not_test +3814,66.0,57.05283000000001,74.69768499999999,68.02495,64.049965,77.253586,79.32172,not_test +3815,68.0,56.68472,67.52014,67.570724,64.146904,60.251076,72.52181,not_test +3816,69.0,69.39716999999999,60.364197,65.076035,66.29386,61.147038,59.57505,not_test +3817,63.0,64.27448000000001,57.116530000000004,64.7264,62.137730000000005,65.62134,55.032875,not_test +3818,65.0,75.59044,54.02449,65.15097,59.74661999999999,56.865669999999994,47.83593,not_test +3819,67.0,58.510937,52.047653000000004,64.729546,57.066353,43.964478,41.7388,not_test +3820,80.0,88.17918,51.930107,66.320274,57.00496,41.027832000000004,40.15765,not_test +3821,99.0,59.609207,53.785956999999996,71.027985,55.378742,55.688930000000006,43.802040000000005,not_test +3822,112.0,110.56401000000001,123.67132600000001,97.13504,91.74540999999999,121.2399,131.9178,not_test +3823,126.0,100.86658,123.29855,106.18971,105.107445,125.3393,129.2236,not_test +3824,132.0,95.69554000000001,119.96468,114.745415,107.13517,128.20865,122.56901,not_test +3825,125.0,92.6989,117.03981999999999,119.38277,116.56938000000001,123.16018999999999,117.91298,not_test +3826,94.0,109.89256999999999,115.9308,120.75166000000002,124.96316499999999,107.247826,117.06455,not_test +3827,97.0,108.81232,115.23891,115.17004399999999,125.930695,84.86086999999999,116.693146,not_test +3828,98.0,108.066055,98.58591,104.560455,103.972626,98.463776,103.51239,not_test +3829,100.0,97.42406,97.10714,100.11751600000001,101.47185,90.90876999999999,101.34535,not_test +3830,113.0,91.45549,93.29259,95.31869499999999,100.691986,91.57925999999999,95.88663000000001,not_test +3831,110.0,89.2702,88.97193,87.635925,95.371414,90.92642,89.73716999999999,not_test +3832,110.0,91.44499,86.03575,82.90909599999999,89.28088000000001,79.84558,85.490524,not_test +3833,109.0,75.63977,85.32005,78.13767,80.06586999999999,58.4692,84.2259,not_test +3834,112.0,106.73416999999999,92.655396,102.33107,106.22058,91.07562,98.17145,not_test +3835,101.0,95.54855,89.156975,96.95837399999999,104.89533999999999,96.40499,98.100235,not_test +3836,63.0,85.74292,83.83402,90.218414,96.11403,98.77665999999999,94.89498,not_test +3837,60.0,75.584694,78.39373,89.42819,93.56966,91.686646,89.46008,not_test +3838,59.0,67.25631,74.91638,86.80421,88.4372,75.7315,83.60098,not_test +3839,61.0,65.79628000000001,74.69189,83.16407,83.18477,59.104744,79.13384,not_test +3840,69.0,69.61764000000001,97.77513,54.93926999999999,62.686863,97.26595999999999,98.94658000000001,not_test +3841,94.0,64.45921,100.81277,51.204315,61.74471,101.21885,100.452225,not_test +3842,107.0,73.24551,104.30148,49.357132,57.240204000000006,83.86197,101.87195600000001,not_test +3843,109.0,58.303703000000006,107.17641,45.46839,56.021465,64.12035,102.66922,not_test +3844,96.0,90.06612,108.51478,47.009552,53.00095400000001,65.64369,102.62199,not_test +3845,87.0,64.13486,108.00393000000001,44.86271,58.5242,97.264565,101.942764,not_test +3846,86.0,86.46984,89.785255,86.02756,89.16727,90.39858000000001,88.83072,not_test +3847,85.0,84.00114,89.66413,98.58022,100.62183,93.94704,89.211845,not_test +3848,86.0,91.56544,89.381996,113.57179,109.61983000000001,86.084854,89.70432,not_test +3849,100.0,97.57448000000001,88.90778,119.02569,122.13308,74.81687,90.41136999999999,not_test +3850,112.0,109.75568999999999,88.57083,120.13576,127.62706000000001,72.03267,91.29576,not_test +3851,105.0,112.14554,88.83072,114.87456,128.35457,83.87585,92.11145,not_test +3852,104.0,101.092186,98.64875,108.64643000000001,105.48511,99.76383,97.74179000000001,not_test +3853,102.0,91.09666999999999,99.14384,98.49106,104.06624000000001,109.74243999999999,96.47157,not_test +3854,97.0,85.93579,98.60706,90.75265999999999,101.6452,113.801056,94.00138000000001,not_test +3855,89.0,70.86135999999999,96.42278,80.45758000000001,93.79525,106.99723999999999,90.76461,not_test +3856,84.0,79.785484,92.937546,76.87613,85.52219000000001,92.42057,87.75230400000001,not_test +3857,79.0,64.63999,89.45939,67.488754,72.58449,79.27584,86.054405,not_test +3858,79.0,78.54293,89.68434,73.73528,80.72811,87.508064,88.66771999999999,not_test +3859,84.0,76.008095,87.25445,71.81128000000001,76.84308,89.94509000000001,85.120834,not_test +3860,96.0,74.01788,87.81875600000001,71.25575,69.50399,81.80502,83.11236600000001,not_test +3861,94.0,61.726654,91.39780999999999,73.97131,67.14453,74.12137,84.02548,not_test +3862,94.0,70.28662,96.25205,74.30611999999999,63.403374,79.229065,87.06038000000001,not_test +3863,94.0,69.00989,100.008095,73.8743,60.482690000000005,100.1793,89.8415,not_test +3864,99.0,95.61526500000001,132.38751000000002,92.06787,101.44408,135.71968,131.76138,not_test +3865,110.0,91.476036,130.31566999999998,92.49592,102.316734,125.69763,129.38263999999998,not_test +3866,136.0,97.50544000000001,125.22811000000002,92.785904,100.97185,129.24786,124.18587,not_test +3867,137.0,84.9174,120.45078000000001,93.93806,98.48083000000001,136.79959,119.13452,not_test +3868,104.0,101.56317,117.78714,96.077484,96.70886999999999,133.40355,116.00782,not_test +3869,85.0,83.18363000000001,116.54061999999999,101.37486,98.97795,111.84068,114.48648999999999,not_test +3870,63.0,73.39976,24.191035999999997,80.85351999999999,77.73892,26.203197,20.763573,not_test +3871,19.0,80.8126,30.255446999999997,95.752495,90.27991999999999,34.170536,24.798489,not_test +3872,18.0,87.59501,38.660709999999995,114.55778500000001,106.65021999999999,34.913506,32.299355,not_test +3873,19.0,102.0067,43.91859,120.37541,119.592926,34.655823,39.35957,not_test +3874,25.0,113.80241399999998,45.775185,120.86046,125.77043,43.630325,44.911724,not_test +3875,19.0,119.418884,48.650093,114.58983,124.147446,66.371826,50.654556,not_test +3876,24.0,15.232161999999999,27.302597,17.77401,21.596420000000002,24.657626999999998,26.112942,not_test +3877,35.0,18.05294,26.616032,20.745064000000003,22.41912,28.869637,25.128963,not_test +3878,38.0,15.776527,26.631287,21.507164000000003,22.962326,27.644428,23.617645,not_test +3879,28.0,15.62664,26.85196,19.841972,18.464859,25.627693,21.455147,not_test +3880,25.0,27.883370000000003,28.264770000000002,21.029968,18.915184,30.568503999999997,20.05193,not_test +3881,20.0,26.040554,32.327248,18.748276,15.060286999999999,46.206284000000004,21.231567000000002,not_test +3882,27.0,22.503822,55.952,27.550621000000003,30.948662,47.54195,52.10437,not_test +3883,42.0,24.646801,57.74805500000001,25.039452,33.6551,54.837109999999996,53.702009999999994,not_test +3884,46.0,35.32343,60.11668,27.078808000000002,34.875927000000004,51.129486,56.149980000000006,not_test +3885,51.0,39.321735,61.85519,31.206336999999998,41.159015999999994,45.354763,57.894962,not_test +3886,46.0,48.417995,62.7928,31.504317999999998,45.395237,50.75355,58.796814000000005,not_test +3887,39.0,51.218270000000004,63.690430000000006,28.387961999999998,44.453606,73.12676,59.986495999999995,not_test +3888,25.0,44.591934,17.398518,33.974678000000004,38.144638,12.060501,14.161453,not_test +3889,15.0,37.735558000000005,16.330399,31.33685,37.955784,15.958510999999998,13.542728,not_test +3890,13.0,35.517105,16.738476000000002,28.499737,37.38442,15.490803,14.600211999999999,not_test +3891,12.0,34.023,17.48714,27.717353999999997,36.01204,15.066513,16.539787,not_test +3892,11.0,32.606194,18.883709,28.57447,35.065,21.607903,18.849483,not_test +3893,16.0,34.33384,22.237122,29.150204,36.85904,37.99341,21.441841,not_test +3894,18.0,25.584618,109.39733999999999,17.078491,26.71333,111.135254,105.54791999999999,not_test +3895,48.0,27.567581,106.47221,23.714195,33.699814,114.96316999999999,100.191696,not_test +3896,85.0,37.416290000000004,98.906876,34.887572999999996,49.21405,119.16006499999999,87.4631,not_test +3897,108.0,46.42725,90.40294,49.382393,57.62607,119.153015,75.9128,not_test +3898,111.0,53.047332999999995,82.035965,61.957480000000004,64.83205,108.5838,70.62489000000001,not_test +3899,110.0,68.89277,72.50952,74.38962,54.537262,85.368,70.09928000000001,not_test +3900,113.0,110.20875500000001,93.32297,118.526634,103.73037,95.28381,96.06506,not_test +3901,113.0,102.31081999999999,91.7575,115.78611000000001,97.578445,84.857475,93.01212,not_test +3902,109.0,98.27533000000001,88.039055,112.607735,95.37799999999999,85.17441600000001,88.09575,not_test +3903,109.0,88.356346,83.55821,107.01432,95.18551,86.02672,83.84085999999999,not_test +3904,92.5,88.11484499999999,79.27339,102.126434,92.42198,74.75928499999999,81.21413000000001,not_test +3905,76.0,70.78995,75.513756,99.156044,78.125046,48.20745,79.3642,not_test +3906,72.0,75.12589,59.829356999999995,68.47629,77.17321,58.65362,56.550872999999996,not_test +3907,67.0,73.09383000000001,57.328593999999995,65.45044,79.13254,55.375603000000005,52.093216,not_test +3908,56.0,77.358406,53.709274,65.31130999999999,76.32939,56.252106000000005,46.988234999999996,not_test +3909,53.0,66.948166,49.824009999999994,69.17494,74.53703,55.422656999999994,43.45312,not_test +3910,65.0,81.66479,47.089040000000004,69.33836,71.06248000000001,47.94852,42.535959999999996,not_test +3911,55.0,70.62528,46.726093,67.81879,67.89749,34.639236,43.649536,not_test +3912,48.0,60.805319999999995,57.292384999999996,52.499966,55.095383,55.531819999999996,60.55064399999999,not_test +3913,55.0,54.195930000000004,61.272459999999995,47.371487,55.48358,67.998405,66.737976,not_test +3914,57.0,51.904465,69.43543000000001,44.41522,55.323685,68.801765,77.237976,not_test +3915,48.0,43.818775,79.95679,42.412186,49.19243,68.25822,89.70459,not_test +3916,57.0,53.961135999999996,90.035,43.16902,45.37789,80.32471,99.56649,not_test +3917,71.0,46.88265,97.04828,42.557526,43.18745,109.44138999999998,102.5517,not_test +3918,99.0,75.34345,122.59364,71.10063000000001,79.15397,127.9793,126.79124499999999,not_test +3919,134.0,81.5512,122.07436000000001,81.001205,88.37224599999999,117.05507,124.20091000000001,not_test +3920,139.0,92.592224,118.31948,86.04942,103.55768,120.46353,119.66009,not_test +3921,134.0,102.16094,112.62313999999999,91.232506,122.556274,126.07733999999999,114.91243,not_test +3922,131.0,109.46627,106.18676,95.87876999999999,130.22743,117.62284,110.48593000000001,not_test +3923,132.0,114.005905,99.87425,96.45591999999999,130.60777,89.353424,105.96578999999998,not_test +3924,128.0,138.36127,95.81921,132.64568,130.68983,101.82845999999999,102.23044,not_test +3925,125.0,146.67453,88.64508000000001,129.30273,126.747955,88.82301,97.41881,not_test +3926,108.0,145.90816,78.97504,125.8912,124.00628999999999,90.42352,92.16416,not_test +3927,102.0,139.37112,70.32595,121.96275,122.27586000000001,93.68032,88.0155,not_test +3928,105.0,131.5741,65.54309,116.08061000000001,118.99733,83.23639,84.79063000000001,not_test +3929,102.0,107.40598999999999,65.38829,112.11547,109.78854,55.446769999999994,81.375694,not_test +3930,76.0,103.88776999999999,78.0182,99.4893,104.3248,70.40994,74.5551,not_test +3931,74.0,96.15536,76.479004,94.47595,103.487595,79.99911,73.63343,not_test +3932,78.0,93.04385,74.44498399999999,91.20178,97.65204,74.77474000000001,71.67697,not_test +3933,88.0,82.81641,72.58166999999999,90.30509,94.17567,62.120674,69.961395,not_test +3934,77.0,86.18276,72.495384,89.61131999999999,90.48621,57.283302,69.97731,not_test +3935,60.0,82.29898,75.48241999999999,89.39188399999999,87.11182,70.75978,72.25998,not_test +3936,66.0,67.451324,125.17811599999999,60.663914,63.551888,121.43386000000001,126.42399999999999,not_test +3937,66.0,62.369583,131.96106,57.62605,64.88172,136.98395,130.57037,not_test +3938,79.0,60.754622999999995,135.3446,55.756012,66.52396,128.46136,131.40419,not_test +3939,95.0,50.023556,134.84193,51.204304,64.71141999999999,110.87211,129.6226,not_test +3940,117.0,66.2057,131.72047,51.968792,59.726616,106.72748999999999,126.81615,not_test +3941,150.0,54.927535999999996,127.92461000000002,52.640175,63.748325,127.286026,124.268875,not_test +3942,166.0,149.95015,160.95131999999998,137.78561000000002,175.38626000000002,170.57608000000002,170.15228000000002,not_test +3943,175.0,156.80421,153.30491999999998,150.71078,174.38214,151.06618,162.61008,not_test +3944,176.0,155.51306,142.2942,154.77397,174.36543,146.61418,149.68909,not_test +3945,176.0,177.59243999999998,132.19295,159.15091,166.41393,148.65326000000002,136.8195,not_test +3946,178.0,169.673,124.56158400000001,160.78911000000002,169.28578000000002,140.86423,127.42686,not_test +3947,184.0,167.18094,118.30718999999999,158.28824,162.7099,114.41931000000001,121.63505,not_test +3948,185.0,189.74854,148.7708,175.11196999999999,183.07562,156.39313,152.47328000000002,not_test +3949,185.0,181.32183999999998,142.37923,169.8057,177.96704,142.85542,144.78998,not_test +3950,182.0,187.76623999999998,131.10918,165.3637,172.36921999999998,141.48391999999998,132.23998999999998,not_test +3951,180.0,177.90652,119.00316000000001,158.31717,164.54828,139.52837,119.91455,not_test +3952,174.0,172.59628,109.84754,147.96538,155.17764,122.26043,111.86993000000001,not_test +3953,168.0,159.8721,105.38162,141.33572,149.93845,87.27324,109.11913,not_test +3954,160.0,161.03217,145.18427,153.61313,154.13312,147.85933,152.91805,not_test +3955,146.0,163.93419,143.60742,147.42764,147.42941000000002,152.375,146.64285,not_test +3956,152.0,148.03743,141.84741,140.92209,140.18473999999998,135.5514,141.01103,not_test +3957,151.0,141.62685,142.82155,135.84145,136.43704,121.06873999999999,141.77467,not_test +3958,149.0,115.18508,147.9636,130.84258,132.40903,133.3853,149.69128,not_test +3959,153.0,102.580376,155.74945,128.2392,132.77539,176.67432,159.71735,not_test +3960,160.0,160.01418,63.752219999999994,135.28644,148.25627,57.21668199999999,63.858406,not_test +3961,140.0,153.07312,68.21774,134.39016999999998,150.51996,64.49618000000001,66.536415,not_test +3962,128.0,156.08386000000002,74.65338,130.07352,141.03671,62.61638000000001,69.73796999999999,not_test +3963,127.0,140.94971999999999,77.816055,123.71776000000001,129.02362,60.061325,69.924515,not_test +3964,97.0,120.54198999999998,79.32169,122.31187,122.75769,71.65094,69.40657,not_test +3965,60.0,73.99695,85.66951999999999,125.11457,120.21783400000001,104.84968,74.14404,not_test +3966,51.0,56.73515,93.06917,56.542680000000004,58.69635400000001,89.492836,91.93724,not_test +3967,105.0,64.88452,93.998985,64.93524000000001,77.20621,91.857895,91.838356,not_test +3968,108.0,74.40162,95.76131,82.41322,98.66821999999999,77.52515,91.23176600000001,not_test +3969,97.0,91.78102,96.2601,96.46347,112.96681000000001,58.678978,89.34156999999999,not_test +3970,82.0,99.52547,96.06559,98.39671,118.042404,55.15486,87.25180999999999,not_test +3971,90.0,107.85329399999999,97.77899000000001,92.73703,119.36429,78.38481,87.10534,not_test +3972,107.0,95.75262,63.221157,107.72106000000001,97.51493,55.21929,55.047653000000004,not_test +3973,101.0,93.5952,63.173347,104.29449,95.669914,62.448119999999996,55.092530000000004,not_test +3974,79.0,95.05147,64.23917,99.930916,96.89846999999999,59.796738,56.676514000000005,not_test +3975,63.0,76.79629,64.85446,92.733376,93.44421,53.131165,58.503646999999994,not_test +3976,52.0,86.22039000000001,66.07599,89.26405,86.71717,55.916718,60.967728,not_test +3977,52.0,64.77460500000001,70.43042,86.13958000000001,69.90681500000001,77.34464,65.4117,not_test +3978,66.0,58.7724,37.96306,57.244987,54.709858,31.335441999999997,33.885155,not_test +3979,69.0,60.787125,34.980537,57.265693999999996,57.895866000000005,36.82273,34.478943,not_test +3980,75.0,67.56544,35.59613,57.253333999999995,59.75376,37.011032,35.72545,not_test +3981,80.0,64.08043,38.238747,62.64743000000001,60.258377,35.569817,36.115227000000004,not_test +3982,67.0,76.45079,42.7306,63.436028,58.06349,41.754585,36.676086,not_test +3983,37.0,70.14352,50.001534,61.5427,55.44152,61.757854,39.83171,not_test +3984,21.0,40.202087,28.857346000000003,31.718021000000004,32.14869,22.255233999999998,20.832619,not_test +3985,15.0,32.351040000000005,37.571762,24.380753,31.344864,31.391747,29.773033,not_test +3986,13.0,31.385536,51.43887,21.789253,29.960014,33.837734000000005,43.87372,not_test +3987,11.0,27.930428000000003,63.775769999999994,20.963394,26.647274,38.217262,58.0139,not_test +3988,10.0,25.977966000000002,71.05127,22.286972,22.683212,56.071888,68.36674000000001,not_test +3989,11.0,27.654472,74.36069499999999,23.31305,25.623558,90.20841999999999,73.84119399999999,not_test +3990,12.0,4.35688,58.414359999999995,7.909522999999999,16.795082,55.742073,50.9583,not_test +3991,18.0,3.3511887000000002,58.788155,12.472389,21.297585,58.483078000000006,49.903065000000005,not_test +3992,28.0,12.087883,59.59244,16.600754000000002,28.809140000000003,44.67289,48.137356,not_test +3993,47.0,11.521164,60.49872,21.391739,33.928413,29.230907000000002,46.712143,not_test +3994,65.0,19.341148,61.08101,20.104889,36.880276,30.499453999999997,46.831978,not_test +3995,55.0,32.087517,61.065895,21.037514,37.317783,55.068665,48.86175,not_test +3996,68.0,60.401607999999996,70.11835500000001,62.826042,58.03055,72.57907,74.69413,not_test +3997,81.0,62.19315,70.66898,64.808266,64.12795,73.08615,75.62089,not_test +3998,84.0,72.1356,71.08259,64.55223000000001,67.36005,78.01866,76.96789,not_test +3999,80.0,61.756493000000006,70.68008,60.783381999999996,66.617714,79.26822,78.70826,not_test +4000,77.5,82.28344,68.97889,60.591927,63.662224,70.51888000000001,79.69903599999999,not_test +4001,75.0,59.708916,66.2134,57.95381999999999,58.909454000000004,53.066788,78.50426,not_test +4002,74.0,77.96078,78.72318,75.11833,76.888855,83.35677,79.504395,not_test +4003,74.0,80.708176,71.32931500000001,72.60599,79.82736,78.59432,73.359695,not_test +4004,86.0,89.082115,62.199192000000004,73.4117,80.18297,80.07808,63.248493,not_test +4005,85.0,73.78911,55.217135999999996,75.93595,82.99332,78.15778,53.92649,not_test +4006,84.0,86.31926,52.472083999999995,75.90684499999999,83.60203,63.946064,48.87101,not_test +4007,88.0,78.26071,53.31887,75.83655,83.77561999999999,38.066284,48.34983,not_test +4008,92.0,91.79174,111.62753000000001,87.788,91.562225,109.48105,115.32503500000001,not_test +4009,96.0,89.10207,111.18561000000001,86.44274,91.03258000000001,110.93048999999999,118.01279,not_test +4010,94.0,95.459404,109.336395,84.27729000000001,89.200874,105.10351599999998,117.16243,not_test +4011,101.0,79.75403,107.48726,82.22882,86.31783,96.5162,116.08055,not_test +4012,124.0,80.01601,106.00935,83.44044,81.32171,91.355736,115.89442,not_test +4013,142.0,62.98384,104.23045,94.29336500000001,79.67885600000001,92.92573,114.6891,not_test +4014,124.0,139.6668,131.69122,129.09021,146.28693,138.76492,137.97421,not_test +4015,123.0,138.51706000000001,127.63503999999999,138.71886,158.4265,126.49834399999999,135.06476,not_test +4016,130.0,130.44287,120.62981,144.83934,165.40948,125.23817,125.27967,not_test +4017,157.0,128.65521,114.35922,150.38474,167.61954,124.87608,114.69391,not_test +4018,156.0,143.70803999999998,111.23371999999999,150.18268,168.28745,112.928474,108.79951000000001,not_test +4019,146.0,161.89703,111.10315,149.43658,166.71857,86.5166,108.92714,not_test +4020,140.0,151.4567,110.75586000000001,147.05331,145.10858000000002,109.60374499999999,116.44644,not_test +4021,138.0,136.59178,107.77886000000001,143.23715,142.53098,110.57805,114.08774,not_test +4022,134.0,140.0665,103.30826,138.42606999999998,138.58302,113.71585,109.406975,not_test +4023,135.0,137.39801,98.92744,130.16017,134.74124,112.510124,104.643875,not_test +4024,135.0,118.127625,96.51642,125.07123,126.76733,103.853424,101.65669,not_test +4025,121.0,102.417175,97.13936600000001,120.667755,126.64203,91.183586,100.90664,not_test +4026,110.0,110.55461000000001,95.67187,112.25741599999999,122.67383999999998,93.29890400000001,97.181854,not_test +4027,109.0,104.94043,97.47948000000001,108.33831,118.49988,96.19452,96.69888,not_test +4028,104.0,96.727646,100.24436,104.664856,114.23556,81.37044499999999,96.568275,not_test +4029,97.0,95.849884,102.35683399999999,100.88003499999999,110.9613,63.029686,97.40697,not_test +4030,100.0,87.147095,103.62424,97.63231,106.92128999999998,62.309563,99.5622,not_test +4031,95.0,84.070984,105.1541,97.80778000000001,102.20565,89.9239,102.674706,not_test +4032,99.0,102.029854,128.14362,93.35024,98.48254,130.53236,127.94668,not_test +4033,97.0,101.871025,131.20415,91.518295,100.046715,144.10062,130.05014,not_test +4034,83.0,90.34586,134.02077,89.264465,97.23183,139.36423,131.60027,not_test +4035,95.0,100.863174,135.14352,91.14413,98.05928,131.24506,132.50467,not_test +4036,100.0,79.54737,133.77296,104.17926999999999,104.284836,138.81328,132.75418,not_test +4037,123.0,119.632675,130.37346000000002,103.57197,113.79132,168.38431,132.3273,not_test +4038,142.0,135.45709,117.941864,131.8327,125.38902,113.13578999999999,115.077324,not_test +4039,140.0,124.28988999999999,117.807915,137.19087,137.57379,121.94809,114.998024,not_test +4040,134.0,123.14804,118.14399999999999,144.56316,138.81995,118.9077,115.377525,not_test +4041,134.0,129.05255,118.15087,148.82173,142.98413,110.60013000000001,115.43651000000001,not_test +4042,122.0,128.29788,117.14476,147.02301,146.31252,108.99593999999999,114.59508000000001,not_test +4043,115.0,143.72261,115.21026599999999,146.04134,145.8884,121.303604,113.01373000000001,not_test +4044,122.0,103.033066,94.51045,107.05763,96.49263,94.941475,95.70405600000001,not_test +4045,122.0,113.32091499999999,93.570145,103.22288,91.962,95.782524,93.59144599999999,not_test +4046,122.0,101.14369,93.26689,96.39533,88.51347,91.43214,91.86516,not_test +4047,120.0,107.87122,92.976715,93.0653,79.54466,86.09599,90.58121,not_test +4048,118.0,88.31035,93.15932,89.79119,61.041924,86.43231999999999,90.034225,not_test +4049,115.0,96.94868000000001,94.944115,92.09834000000001,59.395835999999996,96.01021,90.64868,not_test +4050,99.0,121.749146,8.795944,112.06145,116.92836000000001,8.105057,7.989959700000001,not_test +4051,88.0,115.10105,6.893509,107.16318000000001,113.65958,6.7973479999999995,3.9828949999999996,not_test +4052,87.0,111.96033999999999,8.071144,103.98299999999999,109.6857,3.3073807,2.8327026,not_test +4053,89.0,106.582306,10.275452,100.91409,106.35635,1.5260391000000002,3.6374207000000003,not_test +4054,98.0,99.39132,16.25071,99.21694000000001,103.1685,10.315375999999999,8.822632,not_test +4055,95.0,92.88844,30.574783,99.20442,99.027794,35.32643,21.653702,not_test +4056,18.0,82.550735,27.959984000000002,89.12769,87.95991500000001,22.960907000000002,23.765923,not_test +4057,9.0,78.198166,32.784622,80.38051999999999,85.7954,28.656174,27.675896,not_test +4058,8.0,59.066207999999996,39.165108000000004,69.58046999999999,77.5721,26.856468,31.687328000000004,not_test +4059,9.0,67.55563000000001,42.8051,67.2495,69.77020999999999,24.980926999999998,32.703995,not_test +4060,9.0,55.857,43.48972,72.56293000000001,58.107533,34.17825,31.399494,not_test +4061,10.0,63.4831,44.699627,76.33163,71.27664,58.94911999999999,31.322163,not_test +4062,16.0,4.8710938,27.857696999999998,8.884087,21.265198,23.051598000000002,23.090687,not_test +4063,21.0,7.6736830000000005,28.23381,15.633667,30.583336,30.742335999999998,23.437804999999997,not_test +4064,41.0,5.9911957000000005,30.190136,20.73368,37.888245,26.632942,24.206535000000002,not_test +4065,33.0,18.137276,32.096615,20.672493,43.034576,18.43066,24.441765,not_test +4066,22.0,26.381332,33.8992,19.996520999999998,42.561443,20.298583999999998,24.24701,not_test +4067,19.0,23.799896,36.840717,15.937957999999998,36.986275,40.544758,24.528473,not_test +4068,21.0,19.088562,28.19149,16.719963,23.72261,25.262524,27.19329,not_test +4069,22.0,12.762093,28.778809000000003,20.400291,25.916710000000002,28.032856,27.234066,not_test +4070,28.0,10.556824,29.955624,17.160881,25.596306,22.199482,26.141742999999998,not_test +4071,27.0,27.95089,30.144146000000003,18.971275,27.307517999999998,15.250195000000001,23.353302,not_test +4072,26.0,23.854439000000003,29.333256,16.219520000000003,25.854201999999997,18.164127,20.20871,not_test +4073,20.0,17.292694,29.009857,19.115082,29.036976,35.9531,19.023994000000002,not_test +4074,23.0,22.796844,23.206512,16.898039999999998,25.858894,21.601696,20.576732999999997,not_test +4075,25.0,21.533188,22.150170000000003,20.829681,29.029419,27.039183,22.703049,not_test +4076,31.0,23.586226999999997,24.861156,22.870620000000002,36.286095,26.20263,25.921457,not_test +4077,32.0,36.65569,29.712142999999998,24.958328,42.138794,24.555593,29.444399,not_test +4078,29.0,40.74837,34.469963,22.590339999999998,41.600574,30.337759000000002,32.414642,not_test +4079,32.0,34.134468,37.68461,17.857155,36.246165999999995,46.95675,34.150303,not_test +4080,24.0,34.35685,76.522705,28.882725,26.693684,66.388374,78.45928,not_test +4081,16.0,24.620773,78.80444,28.047584999999998,26.729542,71.77293,80.957245,not_test +4082,16.0,22.191292,77.65695,29.106415000000002,25.001884,81.443146,78.41702,not_test +4083,14.0,22.138077,75.418976,28.521380999999998,23.700203,86.51515,73.33802,not_test +4084,25.0,24.929024,73.46509,27.692096999999997,24.817581,79.350235,68.24263,not_test +4085,47.0,35.06828,71.24969,33.293696999999995,30.517643,60.079327,64.04026,not_test +4086,67.0,62.093426,69.35065999999999,59.232124,58.534286,72.405,72.09524,not_test +4087,78.0,75.69418,65.27815,76.868965,83.556725,65.39996,65.90101,not_test +4088,81.0,91.61921,60.0624,90.38863,97.915115,62.40801999999999,57.781128,not_test +4089,80.0,99.47339000000001,56.257445999999995,97.75806,101.27924,58.28428,51.537279999999996,not_test +4090,78.0,110.95779399999999,54.477524,100.288635,102.85493000000001,47.80831,48.803833000000004,not_test +4091,77.0,123.92393500000001,53.410281999999995,98.03533,103.069466,31.299167999999998,48.443670000000004,not_test +4092,81.0,86.00157,58.153169999999996,81.45042,80.22901,66.43242,59.386543,not_test +4093,90.0,93.756325,55.51285,77.01007,82.36231,58.49604,56.172127,not_test +4094,84.5,100.38557,51.277367,76.327034,83.2008,58.984184,49.605877,not_test +4095,79.0,84.28392,46.734245,74.76744000000001,79.105446,59.035759999999996,42.71042,not_test +4096,53.0,91.49277,43.13642,77.84751,80.2417,48.7047,38.44311,not_test +4097,62.0,91.30205500000001,41.1991,77.98979,77.38422,26.415257,37.928226,not_test +4098,44.0,66.82247,39.570071999999996,64.9756,70.526505,36.887570000000004,41.718796000000005,not_test +4099,56.0,72.54298399999999,41.043125,65.05228000000001,72.77873000000001,46.487843,46.020920000000004,not_test +4100,49.0,66.99835,46.421703,63.208785999999996,73.752716,48.760162,56.39046,not_test +4101,47.0,66.47921,54.913180000000004,60.797073,71.11024,52.012527,69.81174,not_test +4102,54.0,51.929058000000005,64.29398,58.086678000000006,67.470276,65.47755,80.557724,not_test +4103,44.0,44.944393,71.781364,55.339206999999995,64.774704,90.06749,83.656204,not_test +4104,43.0,40.797847999999995,88.94765500000001,37.49217,44.238758000000004,86.47513000000001,92.0715,not_test +4105,45.0,38.492603,89.87616,36.384,46.68316,81.72983,90.37902,not_test +4106,52.0,39.755226,89.118286,34.66641,47.94492,84.28286999999999,86.89316600000001,not_test +4107,68.0,44.837437,87.08275,40.315514,52.866875,88.13381,84.01623000000001,not_test +4108,82.0,53.255919999999996,84.00238,50.033120000000004,59.370087,84.992424,82.6862,not_test +4109,90.0,61.074369999999995,80.053894,64.349075,70.17284000000001,71.61484499999999,81.96319,not_test +4110,89.0,93.51642,92.43034,98.77821,97.04475,97.21913,94.66790999999999,not_test +4111,89.0,94.32661,87.248085,106.370186,99.76276,83.36726,89.44223000000001,not_test +4112,93.0,96.885544,79.40293,106.03353,100.87047,81.11006,81.731674,not_test +4113,95.0,103.89155600000001,72.21239,104.320175,101.03623,83.62614,74.674194,not_test +4114,95.0,98.94279,67.63973,100.63425,100.37555,79.0342,70.22159599999999,not_test +4115,101.0,108.97261,65.51635999999999,98.38718,99.71646,61.32804,68.35455999999999,not_test +4116,95.0,115.717125,94.48101,100.107796,99.687836,103.937836,101.708885,not_test +4117,95.0,107.04343999999999,88.89793399999999,91.66489399999999,93.84915,91.5576,97.541794,not_test +4118,114.0,94.86774,79.55815,83.28604,86.14891999999999,88.90123,87.025856,not_test +4119,115.0,88.2455,69.98259,84.39801999999999,86.49638,86.37199,75.044174,not_test +4120,112.0,75.466415,63.391937,80.50932,85.06116999999999,72.46762,66.59040999999999,not_test +4121,107.0,78.653564,61.07088,78.86237,82.30283,45.1044,63.808119999999995,not_test +4122,96.0,107.51143,109.77448999999999,105.768295,105.64796000000001,113.03368999999999,115.46341000000001,not_test +4123,86.0,99.55489,112.00668999999999,100.67617,103.22015999999999,130.17004,117.32671,not_test +4124,87.0,99.12219,112.72209,96.36385,101.35154,135.83708000000001,117.9743,not_test +4125,92.0,95.58369,112.51618,94.56976999999999,97.48892,134.763,119.48711999999999,not_test +4126,102.0,84.82189,111.63388,96.612724,96.39010999999999,135.27525,121.55278,not_test +4127,112.0,93.333984,109.795845,97.093796,95.78286,141.56842,121.56750500000001,not_test +4128,124.0,118.138405,128.27417,114.276855,108.50878999999999,128.90866,133.43912,not_test +4129,135.0,107.77998999999998,127.38183000000001,113.90076,116.20996000000001,128.659,135.05978000000002,not_test +4130,131.0,93.20531,124.44833,118.1381,115.46481000000001,132.75948,134.63805,not_test +4131,133.0,119.43976,120.982285,115.50062,122.11571,135.29735,133.88891999999998,not_test +4132,136.0,123.01333600000001,117.8809,128.46292,124.821106,129.81659,132.79996,not_test +4133,132.0,138.74565,115.144066,136.24712,128.03763999999998,115.11481,129.80176,not_test +4134,126.0,134.12123,119.75358999999999,137.9484,130.32433999999998,124.60611000000002,125.31668,not_test +4135,130.0,131.88481000000002,118.17648,139.31995,133.4422,124.42976000000002,124.19854,not_test +4136,130.0,128.9731,115.06812,136.71771,129.81248,125.970505,122.19357,not_test +4137,131.0,131.82513,111.26371999999999,136.73047,129.05637,123.46478,119.93854499999999,not_test +4138,136.0,123.2937,107.994644,132.81706,126.96829,113.41689,117.61345,not_test +4139,129.0,120.94322,106.304474,129.66362,126.29406000000002,98.31119,115.13871999999999,not_test +4140,127.0,134.15137,117.45096000000001,125.69443999999999,126.07956000000001,115.95305,120.53433000000001,not_test +4141,124.5,127.34441000000001,115.32228,120.09815,122.64565,119.90723,119.11466999999999,not_test +4142,122.0,119.65135,112.81505,115.72793600000001,116.63515500000001,114.48413000000001,117.723526,not_test +4143,123.0,117.216675,111.43911999999999,112.62578,116.03788,105.98181000000001,117.35533999999998,not_test +4144,119.0,107.55863000000001,112.076035,108.60711,113.05755,104.444855,118.01953999999999,not_test +4145,123.0,92.21176,114.35278999999998,105.938644,109.29198000000001,115.38501000000001,118.80187,not_test +4146,122.0,128.12784,95.03296,115.58373,123.55232,93.62224,96.61009,not_test +4147,119.0,114.40355,98.58621,112.43448000000001,124.89258000000001,97.067276,97.55755,not_test +4148,119.0,118.07672,102.769485,108.74553,124.05198999999999,94.49149,98.12834000000001,not_test +4149,120.0,112.84416999999999,104.99016999999999,107.05214,119.41872,90.58443,97.43486999999999,not_test +4150,126.0,102.25964,105.38378999999999,110.15983,117.688576,93.70585,96.57058,not_test +4151,124.0,99.014336,106.36993400000001,109.636765,116.0773,108.52451,97.68875,not_test +4152,95.0,122.94438000000001,94.15156999999999,119.26700000000001,119.41563400000001,95.92408,93.421875,not_test +4153,82.0,114.45584,94.99476999999999,114.22966000000001,122.96193000000001,99.25863000000001,93.87761,not_test +4154,76.0,94.40349,96.812874,111.18207,121.09106399999999,93.18712,93.76675999999999,not_test +4155,71.0,112.73402,98.36024,106.72636399999999,124.89663999999999,84.992805,92.57677,not_test +4156,94.0,108.203094,99.37706999999999,119.60516000000001,125.60798999999999,85.58359499999999,91.05078,not_test +4157,100.0,131.33302,100.59395,131.82498,128.21022,100.333664,90.62786,not_test +4158,94.0,110.55507,84.4467,112.96181499999999,105.172844,83.02875,82.71849,not_test +4159,90.0,99.38201,84.322464,117.15058,112.441,84.545975,82.35153000000001,not_test +4160,86.0,95.8137,84.56075,115.70695,113.18453999999998,79.568275,81.90687,not_test +4161,82.0,102.574844,84.76764,114.29088999999999,115.32806000000001,73.70398,81.379684,not_test +4162,85.0,95.47229,85.60455,110.175095,116.11833999999999,75.384674,81.65699000000001,not_test +4163,90.0,106.44304,88.107506,106.87832,114.85835,88.69063,83.71035,not_test +4164,83.0,93.187416,34.33072,90.659706,92.64998,35.70308,33.902840000000005,not_test +4165,76.0,89.98441,36.63411,86.570015,91.003685,39.39541,34.29461,not_test +4166,96.0,84.346176,40.741352,84.05218,82.13646999999999,41.055077000000004,36.710823,not_test +4167,88.0,84.679085,43.243365999999995,84.77490999999999,81.11742,41.837223,38.308243,not_test +4168,64.0,74.62161,44.60877,82.59300999999999,75.35301,46.933679999999995,39.09523,not_test +4169,37.0,82.54599,48.319138,82.16651,65.90316999999999,60.48133000000001,41.620940000000004,not_test +4170,33.0,40.289307,34.251556,40.06924,34.88579,29.007346999999996,29.703407000000002,not_test +4171,40.0,43.91868,34.727985,38.781203999999995,35.764427000000005,33.516087,30.638748,not_test +4172,40.0,49.265575,38.809115999999996,37.210926,33.631546,34.54504,33.316590000000005,not_test +4173,40.0,46.4414,44.030421999999994,33.15198,28.155533000000002,35.150333,36.542023,not_test +4174,28.0,39.450768,48.799744,28.172493,21.198757,41.721333,39.929657,not_test +4175,24.0,36.57803,53.08466,25.575077,17.094223,57.774666,43.704243,not_test +4176,28.0,26.216140000000003,54.37869,18.981613,24.440403,50.30214,55.091784999999994,not_test +4177,30.0,19.802292,52.58449,19.522651999999997,23.90326,51.35685,53.49518199999999,not_test +4178,40.0,26.181427,52.110065000000006,18.412948999999998,25.131153,46.89585,51.99167,not_test +4179,54.0,29.760857,52.9942,23.706073999999997,32.26234,43.52502,51.068740000000005,not_test +4180,68.0,41.821999999999996,55.05538000000001,28.76707,43.169025,49.036026,51.491436,not_test +4181,59.5,52.23851,57.91401,39.13102,56.767109999999995,65.47569,53.669804000000006,not_test +4182,51.0,71.34784,29.292625,67.49211,69.07755999999999,25.514201999999997,24.295310999999998,not_test +4183,53.0,67.24913000000001,29.995777,71.83993000000001,73.90881,29.046787,25.921219,not_test +4184,65.0,73.46393,31.920803000000003,72.061554,78.52852,27.105515000000004,29.822440999999998,not_test +4185,72.0,79.16960999999999,33.3053,65.90175,80.52539,24.785774,33.507156,not_test +4186,39.0,71.885765,34.320057,64.72108,81.30046,29.863739000000002,35.90419,not_test +4187,40.0,81.56905,36.673973,62.379833,84.04607,45.725914,37.801163,not_test +4188,34.0,39.48731,42.34129,38.681583,43.45326,42.55503,40.588097,not_test +4189,29.0,48.531475,39.871666,40.236504,43.74371,46.0252,39.893044,not_test +4190,24.0,41.953865,37.799820000000004,38.432995,41.868626,40.193253000000006,37.96321,not_test +4191,30.0,41.8338,36.914764,39.9345,43.80063,31.71019,35.869087,not_test +4192,34.0,41.681244,37.67817,39.464016,43.04629,30.784525,34.968113,not_test +4193,37.0,52.3909,39.909847,39.983852,44.077490000000004,42.73239,35.901314,not_test +4194,44.0,40.3062,41.350636,40.159378000000004,45.020138,39.866642,39.417384999999996,not_test +4195,52.0,46.04525,49.001907,40.23379,49.482258,49.124245,46.993629999999996,not_test +4196,43.0,46.937668,56.554855,38.537144,47.961490000000005,49.46647,55.008644,not_test +4197,38.0,44.491898,61.184406,35.033833,42.645412,48.19234,60.762930000000004,not_test +4198,31.0,37.31953,62.385932999999994,31.277775,37.7914,55.41539399999999,63.503193,not_test +4199,23.0,30.079098,61.77673000000001,28.996166,35.334340000000005,74.63982,64.28945,not_test +4200,19.0,31.623209999999997,68.88838,24.896515,25.360203,70.48782,68.82105,not_test +4201,20.0,30.774776,66.47665,24.329422,24.480835,62.289947999999995,67.55911,not_test +4202,32.0,32.83399,62.526107999999994,24.109863,25.681376999999998,60.978095999999994,64.161,not_test +4203,58.0,40.5385,58.8925,29.26685,34.829933000000004,61.987064000000004,60.17706999999999,not_test +4204,77.0,52.965897,56.30591999999999,35.532887,43.60195,57.92243199999999,56.625206000000006,not_test +4205,76.0,60.148697,54.235962,51.13038,57.19929499999999,45.454933000000004,53.6244,not_test +4206,72.0,81.62423000000001,70.999985,81.46472,82.02081,68.92049399999999,72.667725,not_test +4207,75.0,84.08623,69.71669,88.19398000000001,85.15777,64.5954,69.90535,not_test +4208,75.0,86.84433,67.106995,88.82395,86.87758000000001,65.63885,63.861988000000004,not_test +4209,82.0,90.039795,63.74615,87.49046,87.18736,66.774704,56.799521999999996,not_test +4210,85.0,88.59329,60.360218,84.87892,86.60828000000001,61.73441,51.535507,not_test +4211,85.0,94.70654,57.665623,83.08085,85.39842,49.06479,49.832679999999996,not_test +4212,92.0,87.61824,23.953492999999998,82.90919,82.83416,25.741989999999998,24.814688,not_test +4213,104.0,92.04316,23.383608,78.94026,80.32639,26.1331,24.126175,not_test +4214,79.0,83.83008000000001,24.23328,76.52812,75.19854000000001,21.732508,24.239023,not_test +4215,79.0,84.73779,25.842697,76.85176,75.747826,18.232323,25.194685,not_test +4216,78.0,70.39334000000001,28.911018,74.23754,74.23422,22.958220999999998,27.495340000000002,not_test +4217,51.0,72.796974,34.595634000000004,73.83921,72.384254,38.433273,31.469414,not_test +4218,26.0,46.897240000000004,21.872948,50.50744,52.244735999999996,17.758066,19.949005,not_test +4219,23.0,51.134308000000004,30.519534999999998,49.772995,55.21909300000001,28.54526,26.900457,not_test +4220,23.0,48.915657,41.019783000000004,48.037422,53.94311,30.529976,36.053523999999996,not_test +4221,18.0,48.366554,48.740543,45.759834000000005,49.72943,32.043625,43.86502,not_test +4222,13.0,38.174065,52.093803,42.498714,44.94362,44.649643,48.089577,not_test +4223,9.0,32.623764,52.910004,39.469440000000006,40.91301,71.91617600000001,48.735764,not_test +4224,9.0,7.498089,85.4214,5.035202,10.390842,84.646996,85.43329,not_test +4225,10.0,0.0,80.294395,4.659256,10.988583,77.55906,81.49209599999999,not_test +4226,11.0,0.0,73.15979,4.444229,11.378803,78.19542,75.19296,not_test +4227,14.0,1.2967224,67.52408,8.4268265,14.512272,79.35868,69.46833000000001,not_test +4228,16.0,8.916763000000001,64.528336,12.992794,17.627422,71.55593,65.6022,not_test +4229,40.0,18.745766,62.73446,17.40387,24.875946,51.866524,62.87426800000001,not_test +4230,49.0,52.068634,96.022995,50.193604,43.479675,102.17639,96.73778,not_test +4231,63.0,39.90119,91.04051,56.06425,45.668232,81.19507,90.30839499999999,not_test +4232,85.0,45.26225,81.47916,59.158348,47.49096,83.27055,79.52965999999999,not_test +4233,86.0,44.31504,70.21528,55.32901,47.144546999999996,91.242035,67.66943,not_test +4234,81.0,40.370987,59.22529599999999,53.872223,45.17501,80.03092,57.069945999999995,not_test +4235,85.0,47.250393,49.394515999999996,51.69093,44.18696,39.304446999999996,48.68265,not_test +4236,85.0,90.80205500000001,55.308372,85.58736400000001,74.68143,55.460636,53.393390000000004,not_test +4237,2.0,81.23135,49.43614,81.28771,68.37321,57.810112,43.10623,not_test +4238,96.0,72.30178000000001,43.2268,76.99427,62.6184,58.74479300000001,32.19911,not_test +4239,94.0,65.38024,39.423134000000005,75.081665,63.14456,52.770638,26.321156,not_test +4240,80.0,54.048244,39.223488,71.73624000000001,61.465805,39.700714000000005,27.694656,not_test +4241,75.0,57.60524,41.71454,70.474686,59.174533999999994,25.734333,33.85409,not_test +4242,57.0,73.25819,135.09192,75.288666,72.13108000000001,132.23538,143.06448,not_test +4243,65.0,76.40211,133.97794,71.39132,69.875244,131.18515,143.31909,not_test +4244,67.0,69.39896999999999,128.87396,69.30881,67.54544,136.62833,138.40952,not_test +4245,72.0,70.12648,123.75909399999999,67.67829,63.523334999999996,137.26346,133.21432,not_test +4246,76.0,61.457474,120.250275,68.98347,61.651256999999994,121.763916,129.43298000000001,not_test +4247,84.0,62.288754000000004,116.90795,69.65733,60.36404399999999,89.50778000000001,124.80001999999999,not_test +4248,92.0,86.43358,116.19823999999998,87.79852,85.15366,118.2775,120.26227,not_test +4249,114.0,77.82036,110.26448,87.1063,87.89253000000001,104.93529,117.77727,not_test +4250,142.0,68.44946999999999,102.32919,91.6693,88.43744000000001,104.94017,111.484055,not_test +4251,137.0,91.87454,96.13376,89.02384,98.598724,108.87666000000002,104.783936,not_test +4252,132.0,95.95238,93.39389,99.0448,105.78003000000001,103.28439,100.52054,not_test +4253,134.0,109.39583,93.13701,105.30731999999999,112.62686000000001,82.920654,99.33806,not_test +4254,150.0,133.99303,103.37416,140.21246000000002,135.78804,109.60167,108.22676000000001,not_test +4255,143.0,136.60428000000002,98.71207,143.50076,139.49881000000002,105.63962,103.60776,not_test +4256,130.0,140.94351,92.05154399999999,141.3533,140.4822,103.96283000000001,97.10019,not_test +4257,117.0,146.58463,86.01607,140.32893,140.57881,96.92645,92.0905,not_test +4258,115.0,131.88242,82.87269,136.06693,137.65918,80.49857,90.24991999999999,not_test +4259,110.0,125.39693500000001,83.28078000000001,132.88808,135.51396,59.144535,90.71693,not_test +4260,112.0,113.51476000000001,83.66444399999999,107.34578,107.30695,85.167274,86.42639,not_test +4261,111.0,105.49238600000001,87.37305500000001,101.42528,107.448494,94.86457,88.69028,not_test +4262,109.0,95.662125,93.512596,96.10798,101.32208,89.8853,93.039604,not_test +4263,114.0,92.60817,100.00275,91.45177,100.472595,82.55356,98.731155,not_test +4264,112.0,77.03525,105.5677,86.36612,96.85351,89.89695999999999,104.55945,not_test +4265,108.0,72.97725,110.01432,82.9198,92.692245,118.56922,109.180916,not_test +4266,109.0,107.77669499999999,123.50165600000001,105.37715,108.70285,118.56246000000002,124.27473,not_test +4267,91.0,95.316864,124.78013,102.2926,111.46968999999999,127.09926599999999,123.564095,not_test +4268,81.0,97.77214000000001,125.36251999999999,98.74337,110.72738999999999,124.64778000000001,121.60808999999999,not_test +4269,75.0,95.81254,124.61125,97.26391,107.51897,117.30336000000001,119.29642,not_test +4270,88.0,86.3587,122.4041,100.57427,106.53911000000001,115.52930500000001,117.50423,not_test +4271,105.0,90.7323,119.38643,100.78894,105.64106000000001,125.32911999999999,116.641594,not_test +4272,120.0,112.97048999999998,138.21463,106.4691,108.96338,140.03821000000002,139.30273,not_test +4273,122.0,106.16821000000002,133.84543,105.74760400000001,115.75241000000001,133.0771,134.48923,not_test +4274,125.0,93.25704,129.03406999999999,108.14111000000001,114.01562,135.29945,129.54202,not_test +4275,139.0,115.21208999999999,126.058945,105.91425,119.414604,139.04315,126.63967,not_test +4276,152.0,118.826416,125.009476,117.02431499999999,121.88811000000001,134.39085,125.72174,not_test +4277,156.0,128.59826999999999,124.16781,124.15428,126.88198999999999,118.06058999999999,124.99743000000001,not_test +4278,156.0,156.02783,127.93047,157.10571000000002,157.09761,129.55553999999998,129.26343,not_test +4279,146.0,156.63695,125.45463600000001,160.4622,156.74188,135.66197,124.74588999999999,not_test +4280,145.0,159.56024,121.14405,158.62009,156.12098999999998,143.95282,117.47046999999999,not_test +4281,147.0,166.46251,116.51188,158.18854,154.41512,142.39435,109.837,not_test +4282,158.0,151.80396000000002,113.09036,153.5546,149.23602,124.75393999999999,104.18604,not_test +4283,157.0,150.51575,111.66198999999999,149.78336000000002,146.10895,96.74887,101.698364,not_test +4284,151.0,150.06232,89.10625999999999,145.91595,150.1142,82.43845999999999,84.27669499999999,not_test +4285,2.0,148.37408,90.359886,137.95189,146.18791000000002,90.10788000000001,85.23351,not_test +4286,112.0,141.75122,94.9774,132.8454,137.47574,88.19467,88.40955,not_test +4287,121.0,140.08518999999998,101.054886,128.72873,135.19983,86.40531,92.69147,not_test +4288,119.0,129.02716,106.83575400000001,125.1229,128.61526,97.70369000000001,97.0732,not_test +4289,110.0,112.72716000000001,111.47835500000001,121.65858500000002,121.36891000000001,126.26301000000001,100.94824,not_test +4290,90.0,109.16486,130.3786,106.1423,109.84763999999998,122.85336000000001,127.947525,not_test +4291,84.0,102.26618,133.16168000000002,102.62344,111.01057,132.78496,128.88231000000002,not_test +4292,84.0,105.15226000000001,135.25773999999998,98.11487,109.04838000000001,125.59418000000001,129.71114,not_test +4293,89.0,100.10464,135.4645,96.29915,105.261765,116.12848000000001,129.91843,not_test +4294,99.0,88.528076,133.55737,98.49499,103.28870400000001,122.77855,129.1178,not_test +4295,112.0,86.81877,130.49563999999998,98.67853000000001,101.4338,151.42625,127.41018999999999,not_test +4296,109.0,120.98936499999999,134.22571000000002,110.90568999999999,112.86256399999999,127.470184,132.3042,not_test +4297,115.0,119.38927,129.3462,106.8992,115.34508999999998,132.08203,129.23293999999999,not_test +4298,122.0,108.46953,122.73293999999999,105.93858999999999,111.85158500000001,136.52068,125.10616999999999,not_test +4299,131.0,125.5742,117.61191000000001,103.06577,114.48328000000001,134.02983,122.1503,not_test +4300,129.0,131.4302,115.605934,114.92683400000001,117.84245,122.38508600000002,121.23518999999999,not_test +4301,145.0,141.04723,115.96426399999999,125.586,121.2794,106.3958,121.48645,not_test +4302,148.0,150.7879,121.25909399999999,145.4257,152.26718,119.92951000000001,123.08253500000001,not_test +4303,139.0,157.00781,119.526505,145.2333,155.89905,120.79021000000002,124.186775,not_test +4304,144.0,165.40643,116.89753999999999,145.26023999999998,154.53896,129.40657,123.78457,not_test +4305,156.0,157.1896,114.28516,141.62636,152.83588,134.3545,122.616745,not_test +4306,127.0,157.63605,112.81586499999999,139.14308,151.64303999999998,125.85361499999999,121.54973600000001,not_test +4307,116.0,132.33106999999998,113.15356000000001,134.5589,149.73044,104.33147,120.90727,not_test +4308,119.0,114.817444,114.23151999999999,115.08972,116.84813999999999,113.454605,117.537994,not_test +4309,118.0,107.60973999999999,117.00062,110.44826,114.55008000000001,120.86365,118.73321499999999,not_test +4310,119.0,103.82518,121.1494,106.22723,112.74331000000001,113.387634,120.02078999999999,not_test +4311,121.0,100.823944,125.4187,100.32167,109.14487,106.2325,121.89058999999999,not_test +4312,120.0,92.89683000000001,129.01315,97.32678,104.62104000000001,116.54478,124.42733,not_test +4313,117.0,78.33793,131.74237,99.26809,98.66653000000001,148.1843,126.9466,not_test +4314,115.0,116.81302,127.54271999999999,114.23626999999999,123.74545,124.64492,129.68495,not_test +4315,112.0,117.84832,129.35342,112.21311000000001,124.59998999999999,130.69118,131.1525,not_test +4316,102.0,113.1669,131.10481000000001,108.9402,120.58939,120.45454,131.75589,not_test +4317,92.0,103.11703,132.06294,109.53851,119.217926,109.43156,131.52455,not_test +4318,94.0,106.3283,131.87366,108.40743,118.25378,115.78076999999999,130.92073,not_test +4319,112.0,87.87384,130.78262,106.11700400000001,114.04218,144.72455,130.45473,not_test +4320,128.0,119.5235,162.05463,114.237045,120.45151000000001,169.14131,163.48756,not_test +4321,126.0,101.830475,156.33943,118.450134,124.32638,155.46251,157.75035,not_test +4322,146.0,113.58166999999999,149.26575,114.66881000000001,127.776855,152.87192,150.67786999999998,not_test +4323,154.0,116.73592,144.02646000000001,127.02316,131.77539,155.72357,145.49818,not_test +4324,155.0,131.49382,141.12723,135.6919,137.51018,152.32585,142.80765,not_test +4325,156.0,141.17851000000002,138.71335,141.46331999999998,147.0133,135.65532,140.79328999999998,not_test +4326,168.0,152.45569,123.973495,157.66647,156.24176,122.73957,124.96883999999999,not_test +4327,173.0,162.36765,125.6266,154.63153,157.9632,139.35217,126.18271999999999,not_test +4328,159.0,167.36517,126.17003000000001,154.38631999999998,156.68045,140.89235,124.82551000000001,not_test +4329,158.0,161.49881000000002,125.097626,149.96078,153.1956,131.91597,121.05248,not_test +4330,154.0,161.47388999999998,123.18556000000001,146.92445,151.74213999999998,125.87773999999999,116.58346599999999,not_test +4331,152.0,137.91628,121.91368,142.62497,149.92322,133.6751,113.62126,not_test +4332,2.0,142.33466,117.56905,135.14212,149.49426,109.52293,111.437996,not_test +4333,104.0,132.86562,114.2262,131.96618999999998,142.53336000000002,111.139626,109.47398000000001,not_test +4334,98.0,129.93665,112.68831000000002,128.09306,139.29818999999998,101.56153,108.85132,not_test +4335,91.0,123.4108,115.03131,123.93468500000002,132.91685,95.05958000000001,110.60513999999999,not_test +4336,107.0,121.86970500000001,120.67271399999998,120.12416,126.71098,106.04522,114.03781000000001,not_test +4337,112.0,97.68009,126.57916000000002,119.34026999999999,127.53778,136.34372,117.08196000000001,not_test +4338,110.0,114.5423,165.95212,112.62826000000001,114.16876,164.59618999999998,168.74329,not_test +4339,115.0,106.774254,163.04648,110.18838999999998,115.57498000000001,162.5568,165.97646,not_test +4340,117.0,104.87981,157.87111000000002,106.23522,110.06406000000001,168.44691,160.38255,not_test +4341,93.0,96.56594,152.92467,107.081696,107.638824,170.97066,155.12526,not_test +4342,119.0,103.00124,149.46783,106.15821000000001,107.22568000000001,159.00028999999998,151.9301,not_test +4343,155.0,82.7988,147.10849,104.23155,102.1586,131.82231000000002,150.26303000000001,not_test +4344,159.0,161.57626000000002,143.59392,142.72195,170.47142,144.88273999999998,137.21591,not_test +4345,168.0,147.828,135.09697,143.56168,162.86603,126.7574,128.43188,not_test +4346,173.0,156.48056,122.45700000000001,136.99844,159.26303000000001,119.91585500000001,116.27306999999999,not_test +4347,181.0,159.79953,110.69785,148.01587,154.68245,117.31853000000001,104.81976999999999,not_test +4348,175.0,172.58737,104.732635,154.94907,152.1322,108.12848000000001,98.046844,not_test +4349,162.0,186.84982,106.43959,160.58238,156.5503,88.41403000000001,97.73694,not_test +4350,154.0,149.51892,134.60455,154.7186,159.71902,135.03441,130.89796,not_test +4351,151.0,140.54323,133.45752,151.62148,161.49563999999998,142.04588,129.17838999999998,not_test +4352,153.0,132.22797,130.84499,151.17998,157.08835,132.35039,126.37423999999999,not_test +4353,157.0,138.78583,127.42506000000002,147.24553999999998,154.0469,114.42141000000001,124.02887,not_test +4354,155.0,123.91601000000001,124.71149,143.96059,153.63393,104.771034,123.66084,not_test +4355,151.0,104.59396,124.14523999999999,139.33608999999998,151.62566,114.9199,125.6567,not_test +4356,142.0,145.89879,134.40714,140.74219,144.21993999999998,134.39758,138.7204,not_test +4357,133.0,132.97539,141.06728,137.02864,139.97462,144.80812,142.11774,not_test +4358,128.0,129.5681,149.3958,133.21219,139.31435,135.86343,146.82018,not_test +4359,127.0,119.89911000000001,156.391,128.22661000000002,133.89095,128.26622,152.01738,not_test +4360,127.0,109.18341000000001,160.35294,124.53498,128.46156000000002,144.55809,156.62503,not_test +4361,123.0,85.240654,161.48973,125.32808999999999,124.6068,188.82986,159.55658,not_test +4362,128.0,126.00107,139.84264,121.50211000000002,128.15056,138.34243999999998,137.15526,not_test +4363,130.0,118.01385,142.65408,118.60306000000001,128.6241,145.79617,139.36002,not_test +4364,141.0,115.62811,146.6528,114.62440500000001,124.14299,131.3872,141.78791999999999,not_test +4365,146.0,106.01852,149.70233000000002,115.52577,121.30776000000002,116.96231999999999,143.48346,not_test +4366,136.0,114.64561,150.45924,115.12695,121.21888999999999,127.70775,144.20976000000002,not_test +4367,145.0,94.12569,149.2239,114.11653000000001,116.43167,170.37506000000002,144.45163,not_test +4368,140.0,155.93784,189.87695,143.59534,148.51996,200.03366,193.18158,not_test +4369,134.0,134.07921000000002,186.22859,147.32555,157.60855,185.57254,191.03493,not_test +4370,163.0,136.7436,179.26598,141.89264,154.24358999999998,177.43237,182.1948,not_test +4371,176.0,139.10399999999998,170.62032,153.57948000000002,155.37944,172.88188,170.0666,not_test +4372,187.0,146.85713,161.49696,161.59943,159.47824,164.35138,158.90368999999998,not_test +4373,199.0,150.62816,152.8454,167.27681,167.70879,147.32477,151.58395,not_test +4374,206.0,179.0675,103.62635,195.1636,199.00548,98.77277,104.77479,not_test +4375,203.0,177.9428,106.64537,192.12146,195.68857,104.72927,103.46384,not_test +4376,201.0,185.11856,111.30826,191.60121,192.8743,100.79375999999999,100.1747,not_test +4377,182.0,176.97241,114.3701,186.12073999999998,187.25386,94.91758,95.18294499999999,not_test +4378,185.0,177.86055,115.9785,181.97409,184.25206,100.565186,91.50523000000001,not_test +4379,196.0,172.04904,119.07028999999999,174.97066,180.6987,124.7715,92.74732,not_test +4380,2.0,176.88211,37.486755,184.0955,187.65376,28.528198,35.39009,not_test +4381,80.0,175.02868999999998,44.199096999999995,177.96007,180.15123,40.182274,38.9513,not_test +4382,23.0,167.34178,55.126503,172.96858,175.65561,41.36885,44.480957000000004,not_test +4383,14.0,168.36731,65.23693,167.37329,167.27478,42.0343,48.656433,not_test +4384,13.0,163.53845,72.68635,161.96591,157.23447,58.247657999999994,50.949432,not_test +4385,20.0,142.06961,78.99051999999999,159.91794,157.41997,96.765564,53.337753,not_test +4386,30.0,25.673798,25.209235999999997,25.026917,29.3126,18.390082999999997,22.581528,not_test +4387,27.0,26.038582,30.309433000000002,24.727089000000003,25.70372,30.347671999999996,25.60154,not_test +4388,17.0,21.756523,40.335679999999996,20.659775,22.513008,28.326263,31.09217,not_test +4389,16.0,22.540192,50.061428,15.272606,16.066643,22.547554,36.85913,not_test +4390,13.0,17.306831,57.368046,15.573898000000002,12.852509,32.376587,42.567603999999996,not_test +4391,12.0,21.698204,63.766853000000005,13.1353,9.752991,68.72691,49.066532,not_test +4392,11.0,11.882042,18.528793,11.074516000000001,15.669342000000002,7.8070070000000005,6.7923965,not_test +4393,12.0,10.237366,19.372475,9.215012,15.450066,15.421989000000002,6.623642,not_test +4394,15.0,14.139427,20.770256,14.571175,19.887367,13.504883,8.119392,not_test +4395,17.0,20.608925,20.424698,20.082152999999998,24.915497,8.640572,9.209251,not_test +4396,23.0,34.124565000000004,19.155334,24.941154,35.9886,14.026398,9.234123,not_test +4397,40.0,42.174873,20.069336,29.801346000000002,52.2481,37.551083,9.256409,not_test +4398,16.0,45.97777,31.2336,40.827644,39.722076,33.18875,31.70465,not_test +4399,13.0,55.670475,32.819786,43.46029,43.565937,45.250168,34.423347,not_test +4400,16.0,50.493843,38.756465999999996,41.404594,43.586674,41.55087,37.8519,not_test +4401,19.0,53.95841,45.226963,41.984154,44.03499,33.735878,40.312878000000005,not_test +4402,43.0,58.328354000000004,49.273033,42.772205,45.81452,39.969337,40.742893,not_test +4403,39.0,43.7454,50.62938,39.587883000000005,45.481518,68.809525,39.2697,not_test +4404,40.0,50.44943,46.988240000000005,39.448654,41.114273,44.319373999999996,48.573204,not_test +4405,32.0,46.77368,47.807632,38.83512,40.162354,50.09198,47.065647,not_test +4406,33.0,41.778954,49.188282,41.248344,44.163364,38.798424,43.013992,not_test +4407,33.0,44.9417,51.669308,40.421547,45.744717,28.730127000000003,39.80388,not_test +4408,32.0,62.625693999999996,55.171608,42.175606,47.910323999999996,39.952553,40.735844,not_test +4409,44.0,58.322124,58.70353299999999,45.772859999999994,56.97681800000001,76.71558,46.343834,not_test +4410,54.0,54.800926000000004,30.136349,49.011672999999995,52.21219,28.689535,31.303913,not_test +4411,55.0,61.919537,34.22574,48.19388,54.815735,44.58146,38.069179999999996,not_test +4412,45.0,57.521843000000004,40.250664,42.918296999999995,50.453720000000004,39.532779999999995,46.384136,not_test +4413,32.0,51.873096000000004,46.41792,39.27825,45.914486,31.495577,54.516327000000004,not_test +4414,29.0,42.716652,51.309288,36.200264000000004,44.1053,43.89982,60.44430500000001,not_test +4415,25.0,39.067787,54.33857,34.209885,41.917625,84.60254,62.566624,not_test +4416,29.0,24.204453,83.900375,19.505325,29.250716999999998,88.15283000000001,92.21835,not_test +4417,29.0,26.644073,80.732895,21.222786,31.794265999999997,87.05635,88.43700000000001,not_test +4418,43.0,35.571197999999995,74.145195,23.797005,44.67887,89.21507,79.93332,not_test +4419,73.0,49.888763,67.2588,30.560965999999997,63.654964,87.110825,72.29588000000001,not_test +4420,83.0,62.78286,61.876072,45.336094,88.88534,73.6196,68.39485,not_test +4421,88.0,86.04581,57.838963,65.73097,96.26713000000001,49.127895,66.828224,not_test +4422,91.0,98.80688,88.25189,100.24119,99.56398,91.17237,86.94816,not_test +4423,93.0,110.30728,84.53964,109.19553,104.817474,89.37101,82.28843,not_test +4424,88.0,119.12735,77.82799,109.445656,108.339355,98.60268,74.29641,not_test +4425,81.0,112.76118999999998,70.89681999999999,108.76863,109.35157,104.43053,66.48793,not_test +4426,76.0,126.1078,65.17461999999999,106.72568000000001,109.50538999999999,91.60468,60.974968000000004,not_test +4427,76.0,96.13696999999999,60.439484,100.72288,107.66085,57.70975,57.649506,not_test +4428,2.0,84.20685,73.60661,78.979774,78.87026999999999,75.24542,68.32967,not_test +4429,85.0,89.03072,68.041595,74.505585,81.52275,75.42945,61.365931999999994,not_test +4430,114.0,98.58359,61.989895,76.95715,84.34828,59.184116,54.369659999999996,not_test +4431,98.0,85.81302,58.52734,75.04826,82.97657,44.121340000000004,50.753174,not_test +4432,91.0,93.12952,58.704193000000004,74.81909,81.38566,48.82888,51.538258,not_test +4433,91.0,81.07239,61.084106000000006,80.921104,84.31154000000001,77.46303,54.94494,not_test +4434,86.0,92.17734,120.637024,88.5483,96.28593000000001,128.32803,124.5406,not_test +4435,84.0,94.56959,119.689926,86.96431,105.12957,137.00243999999998,125.01398,not_test +4436,76.0,96.49086,116.2445,84.1521,103.08385,140.03958,121.82437,not_test +4437,84.0,85.19244,112.1756,82.65109,103.59617,131.86539,117.88193000000001,not_test +4438,107.0,86.483734,108.72182,79.54256,102.84634399999999,113.06008999999999,114.80131499999999,not_test +4439,118.0,66.27379,105.99483000000001,75.73976,100.504074,91.07415,112.01706000000001,not_test +4440,128.0,123.99139,115.58421000000001,122.28723000000001,114.47375500000001,120.88995,114.9987,not_test +4441,123.0,108.03861,106.91656,127.732124,119.5964,105.57748400000001,105.27631000000001,not_test +4442,114.0,124.72806000000001,95.20576,125.06513000000001,123.33971000000001,103.88388,93.51167,not_test +4443,109.0,135.64293999999998,86.39424,140.83745,133.70071000000002,105.94528000000001,86.43695,not_test +4444,113.0,149.89777,84.065445,150.8981,141.2593,97.66589,87.15563,not_test +4445,118.0,162.46979,87.37785,158.46289,157.72168,73.83800500000001,93.285706,not_test +4446,134.0,122.53216599999999,115.22686999999999,129.07455,118.919205,119.43563999999999,112.00200000000001,not_test +4447,128.0,115.28313999999999,112.88588,123.511444,117.74823,111.12233,108.91739,not_test +4448,125.0,110.52599,109.08268999999999,117.70886000000002,118.31482,114.01448,105.37763999999999,not_test +4449,128.0,91.75787,105.41463,112.70273999999999,118.319405,116.98331499999999,103.101074,not_test +4450,131.0,99.976715,103.29926,110.293884,113.67998500000002,107.78313,102.52408,not_test +4451,126.0,59.816930000000006,103.20473,103.248245,102.24736,84.26086,102.7527,not_test +4452,120.0,130.74565,121.816795,120.61187,120.91431399999999,122.08051999999999,120.15393,not_test +4453,114.0,118.0673,124.75461000000001,110.49363000000001,115.610344,133.64807,121.01945,not_test +4454,109.0,113.46503,127.02781,108.127625,115.64934,120.488106,120.38741999999999,not_test +4455,103.0,104.24109,128.20538,103.61833,107.20131,101.78730999999999,119.43281,not_test +4456,93.0,102.57489,127.96127,101.36435,94.47659,102.80809,119.06875600000001,not_test +4457,95.0,82.019104,126.23231000000001,101.968956,90.86728000000001,133.66953,119.24571999999999,not_test +4458,106.0,96.40774499999999,112.290085,93.61893,108.49971000000001,113.53346,107.89098,not_test +4459,116.0,96.73606,113.170876,92.16945,112.19505,117.5628,108.66233000000001,not_test +4460,113.0,98.43808,113.80475,90.45849,110.62425,106.71802,109.524666,not_test +4461,110.0,88.04639399999999,113.59868,89.70796999999999,107.94353000000001,94.18198000000001,110.37884,not_test +4462,106.0,98.75506999999999,112.42671000000001,87.83871500000001,107.642494,96.31763000000001,111.0979,not_test +4463,98.0,74.25092,110.79366999999999,84.81434,105.86066000000001,118.9892,111.53617,not_test +4464,96.0,104.9092,113.213646,95.94266,97.82955,113.51026999999999,113.99793000000001,not_test +4465,105.0,91.11806999999999,113.82746000000002,101.11868,100.53246,115.56047,113.939125,not_test +4466,108.0,99.5721,114.14445,102.07800999999999,107.691055,106.55165,113.43668000000001,not_test +4467,110.0,115.95138,113.61991,123.14837,122.057686,96.6049,112.10758999999999,not_test +4468,111.0,128.29701,112.10104,139.97525,139.69893000000002,97.97538,110.04608999999999,not_test +4469,113.0,141.77408,110.0518,150.156,154.38308999999998,114.88611999999999,107.93713000000001,not_test +4470,113.0,123.23521399999998,122.96508999999999,126.14325,120.66891499999998,117.40901000000001,118.83006,not_test +4471,114.0,115.09267,122.3134,124.209625,123.93803,133.57327,117.07538000000001,not_test +4472,113.0,119.482025,120.28605,120.113335,125.92573999999999,123.05276,113.6704,not_test +4473,109.0,111.59322,118.15983999999999,115.27055,126.980515,108.27088,109.98528,not_test +4474,110.0,124.56241999999999,116.36826,113.1284,125.4259,116.7189,106.83554,not_test +4475,108.0,100.15224,114.39894,106.97626000000001,118.5839,157.0144,104.23369,not_test +4476,2.0,105.17448,64.287415,97.612335,106.79383,59.99616999999999,60.907303000000006,not_test +4477,111.0,99.581245,66.0158,88.00605999999999,101.571014,65.79324,62.731345999999995,not_test +4478,100.0,101.82721,68.933105,89.99619,103.73846,64.32493000000001,65.56311,not_test +4479,66.0,86.1891,71.17939,87.31444,95.82808,62.537464,67.83899,not_test +4480,40.0,96.51059000000001,72.24148000000001,86.335655,84.42656,70.03543,68.84491,not_test +4481,38.0,75.33399,73.062965,89.65469,83.23439,90.18046,68.98227,not_test +4482,42.0,43.704903,27.252128999999996,38.48257,45.149178000000006,24.452465,26.692299,not_test +4483,56.0,51.830677,29.285206,39.095562,48.78926,29.827557000000002,29.207378000000002,not_test +4484,65.0,48.373505,34.340057,33.675971999999994,43.83191,30.995579,34.072359999999996,not_test +4485,47.0,42.698963,39.61594,28.692954999999998,37.371384,32.108906,39.181732000000004,not_test +4486,32.0,34.746025,44.14647,25.577026,31.907234000000003,40.83208,43.54218,not_test +4487,21.0,30.700294,48.89358,23.766747,25.766776999999998,60.86119,47.362106,not_test +4488,20.0,23.726357,50.977470000000004,17.969772,17.862335,45.609916999999996,46.50373,not_test +4489,21.0,26.777702,50.17926,16.846885999999998,18.308243,48.9388,47.998996999999996,not_test +4490,29.0,35.000946,49.56368,22.634003,28.551834000000003,44.86854,48.939217,not_test +4491,30.0,48.270379999999996,49.167286,29.318687,44.625355,39.464405,48.718628,not_test +4492,48.0,60.365337,49.230488,44.089252,63.11181,41.647095,47.521706,not_test +4493,45.0,82.39061,49.986470000000004,60.216267,80.59595,55.47379,46.100803000000006,not_test +4494,53.0,52.795223,42.329514,45.80189,54.740784,40.705544,46.06309,not_test +4495,49.0,59.96801800000001,43.95029,43.280205,59.019478,47.396767,49.05229,not_test +4496,49.0,56.88553,48.341473,38.430009999999996,57.13684,45.542725,53.251971999999995,not_test +4497,46.0,58.214293999999995,52.877914000000004,38.008217,52.618396999999995,43.682266,57.207466000000004,not_test +4498,56.0,66.060165,55.70786700000001,37.854324,51.673134000000005,52.487366,59.50790799999999,not_test +4499,46.0,39.066265,56.830597,34.359257,49.980816,74.87703,59.50731700000001,not_test +4500,56.0,46.175715999999994,38.176421999999995,44.48157,44.198997,35.436240000000005,32.443344,not_test +4501,40.0,43.397324,37.498257,39.676178,44.01628,35.493347,32.136963,not_test +4502,39.0,42.055958000000004,38.146797,41.11489,47.05273,29.71407,32.639206,not_test +4503,47.0,43.24564,39.55212,40.18862,44.977654,25.341587,34.454597,not_test +4504,56.0,51.67236,41.485634000000005,40.649429999999995,45.067562,30.455013,37.651833,not_test +4505,58.0,47.12828,44.066196000000005,45.769638,52.021595,46.924538,41.50564,not_test +4506,64.0,55.486675,18.441912,55.075466000000006,60.738213,15.309351000000001,16.230997,not_test +4507,41.0,60.609722,23.652987,51.00282,62.677216,22.160065,19.675095000000002,not_test +4508,25.0,60.409462,32.289004999999996,46.198597,57.89363,23.324827,25.47769,not_test +4509,15.0,47.628246000000004,41.049698,40.687022999999996,53.31069,25.48846,32.021004,not_test +4510,11.0,43.126328,47.81966,36.773959999999995,48.95715,36.917328000000005,38.050290000000004,not_test +4511,12.0,33.087270000000004,52.38512,33.158363,42.2588,59.285793000000005,42.869246999999994,not_test +4512,11.0,10.564156,51.660675,6.480713,6.1085205,45.346634,48.49628,not_test +4513,12.0,13.294089999999999,50.310577,5.127014,8.696892,52.100395,46.416065,not_test +4514,15.0,18.730309,47.941986,10.619247,15.800529500000001,50.564857,43.589,not_test +4515,31.0,28.570045,45.606113,16.53981,26.562222,42.28383,41.55215,not_test +4516,46.333332,39.60745,43.957294,27.337543,46.688534000000004,34.342896,40.942543,not_test +4517,61.66666800000001,59.700072999999996,42.995259999999995,42.08631,63.705376,33.869385,41.19416,not_test +4518,77.0,69.34204,62.42408399999999,64.24831999999999,65.21249399999999,63.287163,64.4322,not_test +4519,73.0,78.84434,62.39366,75.28315,68.19657,58.901653,65.162186,not_test +4520,52.0,84.95888000000001,61.13551999999999,75.695465,68.50844599999999,60.513077,63.145325,not_test +4521,51.0,79.12775400000001,57.918655,76.05331,67.18956999999999,62.38339200000001,58.145866000000005,not_test +4522,62.0,91.54664,52.700557999999994,74.82428,66.387856,57.3696,51.585487,not_test +4523,66.0,62.75043,46.66215,69.93077,63.687954000000005,43.44959,45.949867,not_test +4524,62.0,63.568573,14.656128,61.945640000000004,61.93415,11.610218,17.018814000000003,not_test +4525,69.0,66.62749000000001,14.694054000000001,59.009598,63.823013,11.105717,14.288246,not_test +4526,70.0,73.06028,16.200160999999998,62.275665000000004,66.16617600000001,7.4803276,12.583683,not_test +4527,67.0,63.718563,17.614931,59.705,64.51796999999999,4.376358,12.485104,not_test +4528,74.0,66.088806,19.328701000000002,59.910169999999994,62.745266,7.657638499999999,14.465595,not_test +4529,78.0,56.619890000000005,23.100481,64.908325,65.4362,20.302723,18.434444,not_test +4530,78.0,80.71619,28.881973,76.97649,83.829544,22.92124,25.512901,not_test +4531,72.0,77.93535,39.510845,74.83045,84.791214,34.29932,32.135403000000004,not_test +4532,43.0,78.426,51.400658,71.88958000000001,82.6278,33.951103,42.023109999999996,not_test +4533,19.0,67.61934000000001,59.511337,72.72783000000001,81.11291,32.80431,51.005665,not_test +4534,15.0,71.58627,62.092674,71.877235,79.856415,44.98356,56.169724,not_test +4535,14.0,49.47059,61.148678000000004,69.84876,75.244606,74.55405400000001,57.30444,not_test +4536,14.0,12.381592,32.891729999999995,9.526916499999999,10.854607000000001,28.236946000000003,29.142063,not_test +4537,18.0,11.687099,34.54213,7.6096344,14.0524025,33.772568,29.912909000000003,not_test +4538,21.0,18.266918,37.226494,11.901211,17.042156,28.097843,31.017609000000004,not_test +4539,20.0,22.058197,39.517582,16.36938,26.748795,22.095660000000002,31.998756,not_test +4540,25.0,30.841244,40.71155,26.089016,35.563377,29.380663000000002,32.91398,not_test +4541,39.0,41.011990000000004,41.163036,35.956657,46.81479,54.247969999999995,34.125755,not_test +4542,43.0,39.888542,51.402924,37.833965,41.926826,53.81608000000001,49.10821,not_test +4543,26.0,41.672043,51.82846,32.105472999999996,42.428604,53.817368,49.82032,not_test +4544,33.0,41.386105,50.062042,25.652718,39.428528,60.85985600000001,48.1687,not_test +4545,29.0,37.46985,45.717909999999996,23.899929999999998,35.06152,62.790825,43.17577,not_test +4546,36.0,45.36291,39.422024,23.183697,33.246359999999996,49.54201,35.847565,not_test +4547,45.0,30.325065999999996,32.858124,20.681151999999997,30.982582,22.41376,28.947253999999997,not_test +4548,62.0,41.697067,29.796051000000002,40.40825,37.512306,27.84115,28.612976,not_test +4549,39.0,41.324913,28.314299,37.132614000000004,41.056521999999994,30.064957,28.416956,not_test +4550,36.0,48.230522,29.41576,39.45159,42.257202,29.462578000000004,28.825933000000003,not_test +4551,49.0,36.252617,32.196265999999994,37.946907,39.954987,29.093224,29.860840000000003,not_test +4552,28.0,49.123024,35.27746,37.97544,38.731407,33.274952,31.314137,not_test +4553,39.0,37.164112,37.7036,43.893642,43.133278000000004,43.531845000000004,32.77155,not_test +4554,58.0,48.611607,63.69185600000001,31.539585,35.386246,59.20098,65.46631,not_test +4555,42.0,39.131370000000004,63.268130000000006,27.029678000000004,32.20317,58.25889599999999,65.65014000000001,not_test +4556,30.0,35.512446999999995,61.143326,23.02502,24.605846,61.17874499999999,63.68023,not_test +4557,30.0,24.442585,58.82669,18.338375,19.398659,63.033843999999995,61.296516000000004,not_test +4558,52.0,14.04084,57.266709999999996,15.637051000000001,17.012634,58.819023,59.652590000000004,not_test +4559,50.0,8.156410000000001,56.308903,12.902302,14.989109,47.944984000000005,58.5879,not_test +4560,47.0,53.98409,94.508514,51.419903000000005,51.522453000000006,99.75790400000001,100.92636,not_test +4561,54.0,44.932087,89.95823,56.953906999999994,53.096043,93.01345,96.88841,not_test +4562,56.0,53.919678000000005,83.44318,58.977524,56.956146,95.159515,89.59496,not_test +4563,66.0,55.380615,78.575806,67.22371,63.7177,98.97377,84.16836500000001,not_test +4564,68.0,58.997726,76.2554,69.43937,68.06248000000001,93.28339,82.52095,not_test +4565,70.0,68.30283,74.579155,75.41230999999999,73.703285,73.06062,82.38055,not_test +4566,80.0,66.94896,81.06698,76.54483,72.35862,86.8628,85.340836,not_test +4567,97.0,69.2836,78.04761500000001,76.74788000000001,72.80736,80.745384,84.09427,not_test +4568,106.0,72.96432,73.484215,75.17766,72.64546,82.73227,79.89766999999999,not_test +4569,105.0,71.03520999999999,68.96813,72.98336,72.17441600000001,84.54265600000001,74.602554,not_test +4570,115.0,77.50223000000001,65.87801,71.65688,71.55403000000001,76.58197,70.18597,not_test +4571,124.0,60.20945699999999,64.769966,66.37529,70.175934,56.809826,67.690895,not_test +4572,118.0,121.26422,65.81626,109.75647,118.86923,62.16808,67.40838000000001,not_test +4573,110.0,118.70478999999999,65.98281,107.01611000000001,112.33998000000001,65.21859,65.65736,not_test +4574,100.0,117.59018999999999,66.7928,103.84011,110.54576999999999,58.42031,63.831562,not_test +4575,89.0,118.42674,68.221985,100.561386,107.25957,51.041748,63.311184,not_test +4576,91.0,108.442825,70.190636,97.07095,101.86183,54.726482,64.52452,not_test +4577,79.0,85.42307,72.44149,96.4335,99.80739,73.53129,66.63174000000001,not_test +4578,76.0,81.7625,131.4266,74.68565,81.85524000000001,121.93973000000001,132.51488,not_test +4579,64.0,76.39899,130.75996,72.26512,82.61785,139.5814,129.66689,not_test +4580,56.0,76.21834,127.02185,70.592445,78.368484,141.9134,124.00708,not_test +4581,63.0,69.74769599999999,122.71035,72.33021,76.75806,132.39313,119.34578,not_test +4582,72.0,77.12536999999999,118.9997,73.06933000000001,76.68200999999999,122.433075,117.130394,not_test +4583,78.0,59.51603299999999,115.32716,72.224205,72.36064,122.00500500000001,115.82291000000001,not_test +4584,84.0,84.78075,129.27754,82.19208499999999,80.85255,130.8861,129.64336,not_test +4585,95.0,71.680885,126.09733600000001,86.63158,84.37862,118.18556000000001,124.82548500000001,not_test +4586,129.0,81.45003,121.40727,84.29471600000001,90.65565,118.81589,118.55918999999999,not_test +4587,133.0,87.51566,116.71025,95.70763000000001,100.835144,124.54225,112.75104499999999,not_test +4588,152.0,98.77153,112.44685,103.962906,116.86496000000001,121.9077,108.45421,not_test +4589,146.0,104.661194,108.31266000000001,109.30266,122.34312,104.20529,105.77468999999999,not_test +4590,133.0,125.093506,104.6388,137.38483,148.66631999999998,110.72173000000001,107.78701000000001,not_test +4591,135.0,126.52484,99.93003,134.5239,146.382,107.53348000000001,107.47661000000001,not_test +4592,137.0,133.84528999999998,94.130356,134.02191000000002,146.24222,110.57967,105.099686,not_test +4593,137.0,128.42113999999998,89.0649,129.77725,140.9499,109.14646,101.26299,not_test +4594,144.0,129.97589,86.55923,126.74188000000001,137.22153,94.80504,97.117386,not_test +4595,157.0,116.41056999999999,87.45743,122.14195,132.83997,69.64015,93.83521999999999,not_test +4596,141.0,137.01015,71.73779,143.48846,146.90200000000002,70.39894,72.24895,not_test +4597,127.0,131.56873000000002,78.106285,137.20184,137.5764,76.59754000000001,75.26966999999999,not_test +4598,124.0,129.10631999999998,87.97674,131.29709,133.92583,78.887314,81.51681500000001,not_test +4599,113.0,124.493576,97.288895,125.46063000000001,125.98871000000001,82.85124,88.94967,not_test +4600,104.0,123.89618999999999,104.27658000000001,120.47536000000001,117.07011999999999,95.92679,95.89909,not_test +4601,93.0,106.24633,109.78209,117.57333,115.03535500000001,119.75698999999999,101.55339000000001,not_test +4602,95.0,91.21236400000001,203.11569,86.39867,95.36202,202.65558000000001,206.29336999999998,not_test +4603,118.0,85.28432,195.58597,84.36766999999999,95.0575,183.89539,197.16943,not_test +4604,83.0,85.48234000000001,183.20248,82.23555,90.84169,183.395,183.43161,not_test +4605,69.0,77.65905,172.54138,83.96621999999999,87.91404,188.87479,172.51385,not_test +4606,89.0,85.05121,166.2049,84.92175999999999,86.72665400000001,179.24036,167.33385,not_test +4607,102.0,65.437904,162.00783,85.20711,80.87773,143.87811000000002,165.21391,not_test +4608,135.0,110.08138999999998,137.91416999999998,101.829865,105.92660500000001,134.75908,131.34308000000001,not_test +4609,218.0,91.63945,134.62836000000001,106.207695,110.49933999999999,121.69121000000001,126.467926,not_test +4610,211.0,101.92921,128.05847,102.67018,116.72797,126.06351000000001,121.96852,not_test +4611,217.0,106.0014,119.74913000000001,114.01588400000001,123.65725,134.25853999999998,117.95871000000001,not_test +4612,203.0,118.36228999999999,112.91257,122.03826000000001,134.97241,129.63844,115.12749,not_test +4613,184.0,126.44893,110.62718999999998,127.44693000000001,139.56403,107.1594,114.70126,not_test +4614,181.0,169.94788,101.84007,169.78058000000001,182.8648,99.2518,104.21709399999999,not_test +4615,163.0,176.80084,101.70437,170.65384,179.73688,108.340576,105.68233000000001,not_test +4616,147.0,179.72789,101.1784,169.10114,179.13,99.01675,106.09513000000001,not_test +4617,140.0,168.16199,98.75174,163.00711,173.18578,83.58746,104.26094,not_test +4618,121.0,176.59517,96.24112,157.83066000000002,167.5524,82.555176,101.36541,not_test +4619,113.0,146.17584,97.41922,144.78857,159.9314,107.42941,100.10387,not_test +4620,111.0,113.23503999999998,150.08138,110.40032,114.76763999999999,153.60599,145.05363,not_test +4621,109.0,108.65848000000001,162.83511000000001,105.37166599999999,108.40603,180.92656000000002,160.57326,not_test +4622,123.0,101.51141,175.81416000000002,100.64418,106.011055,178.48358000000002,178.34093000000001,not_test +4623,107.0,98.12543000000001,183.88269,93.50679000000001,104.15459,166.49489,191.79471999999998,not_test +4624,104.0,96.777794,185.64413000000002,89.031166,100.63181999999999,175.11028000000002,196.64876999999998,not_test +4625,108.0,77.19376,183.6479,90.261185,91.057144,217.55441000000002,193.01921000000002,not_test +4626,118.0,111.9756,189.28148000000002,108.07996999999999,113.45196499999999,193.78116,189.44696000000002,not_test +4627,125.0,110.3377,184.91138999999998,104.69896,113.95308,174.31763,186.08861000000002,not_test +4628,135.0,104.847534,178.12871,100.053345,109.93381000000001,174.67265,179.93912,not_test +4629,141.0,94.399956,171.62625,101.65813,108.80423,182.345,172.93524,not_test +4630,151.0,102.069824,166.16673,101.97135,107.94726999999999,177.23001000000002,166.26503,not_test +4631,188.0,78.82824000000001,160.86006,99.45987,100.19296,149.61488,160.31691,not_test +4632,217.0,203.1883,134.80478,168.76608000000002,193.47858,134.12396,139.14003,not_test +4633,215.0,200.22498000000002,130.00761,151.1593,176.40408,138.1174,136.47269,not_test +4634,212.0,186.84668,124.208855,137.62485,164.86824,139.22503999999998,133.09743999999998,not_test +4635,197.0,180.55573,119.36171000000002,153.2189,157.02364,133.28098,129.4896,not_test +4636,193.0,194.89479,118.20241499999999,169.74303,152.52866,122.28081,126.3409,not_test +4637,182.0,197.5211,122.37364,179.63289,162.60943999999998,113.36992,124.40884399999999,not_test +4638,177.0,140.97601,83.95701,168.2207,168.15755,81.17558000000001,86.44985,not_test +4639,168.0,139.99733999999998,87.72833,164.1335,167.01236,79.36835500000001,86.268654,not_test +4640,156.0,146.78131000000002,94.17745,162.66812,162.12027,75.67938000000001,88.59366,not_test +4641,143.0,144.37471000000002,99.59388,156.2302,157.69795,74.524376,92.795456,not_test +4642,141.0,134.89914,104.30259000000001,150.97115,155.69879,83.0167,98.94594000000001,not_test +4643,139.0,112.40048,111.54113999999998,142.34951999999998,152.41953,104.3676,107.084915,not_test +4644,157.0,134.17548,44.30715,129.49254,137.20401,34.93421,32.877829999999996,not_test +4645,141.0,123.73115,52.40943,123.61378500000001,125.36285,46.36032,40.11354,not_test +4646,110.0,112.62085,64.10614,118.84448,121.367,45.969696,48.25846,not_test +4647,87.0,114.83906,71.8722,110.47628999999999,114.96309,43.085409999999996,50.934265,not_test +4648,58.0,108.841606,74.40164,104.15597,109.29676,54.810997,48.985405,not_test +4649,55.0,87.67936999999999,76.64728000000001,104.675934,98.80230999999999,90.164215,49.19815,not_test +4650,40.0,63.20189,119.46300500000001,62.14116,58.342445,112.23350500000001,110.21891000000001,not_test +4651,40.0,68.665375,115.60489,61.47154200000001,58.106444999999994,120.75481,107.69018600000001,not_test +4652,42.0,68.675575,111.48118600000001,60.73004,46.950462,108.62971999999999,105.355286,not_test +4653,30.0,55.473380000000006,108.70711000000001,59.09780500000001,40.684933,95.88596,104.00410500000001,not_test +4654,76.0,63.374413,107.58686999999999,54.821835,36.789004999999996,105.8117,102.99494,not_test +4655,99.0,38.918972,107.21705,48.640774,33.610577,144.66666,100.97309,not_test +4656,86.0,91.06071999999999,124.625534,102.96353,89.28014,130.09059,132.90231,not_test +4657,125.0,68.843864,128.25735,102.34014,94.05849,123.0042,140.64838,not_test +4658,115.0,94.04196999999999,130.32336,96.298546,108.00656000000001,127.944984,143.16962,not_test +4659,112.0,72.52486,127.50638000000001,119.11717,126.524216,133.1384,136.35751000000002,not_test +4660,111.0,89.87238,118.93467,133.60643000000002,133.07433999999998,125.13753500000001,121.33353000000001,not_test +4661,89.0,110.08615,107.40053600000002,143.06548999999998,151.81271,100.81481,104.36616500000001,not_test +4662,89.0,91.793465,128.88153,90.79383,88.36492,136.40686000000002,128.12425,not_test +4663,90.0,100.19458,117.74316,93.95653,89.51127,138.61731,118.85736000000001,not_test +4664,108.0,108.75408999999999,107.6347,91.43186,95.5735,123.52383,108.45703,not_test +4665,126.0,112.63125600000001,103.32611999999999,91.3194,103.78950999999999,104.61872,103.17094399999999,not_test +4666,148.0,129.0615,105.56743,90.75282,105.71063999999998,99.55544,104.91370400000001,not_test +4667,158.0,100.420135,111.035446,84.53849,98.579414,116.18038999999999,110.20334,not_test +4668,155.0,158.29611,90.70656,145.32751000000002,155.654,91.54459,91.77749,not_test +4669,153.0,152.01819,99.52159,138.75525,145.77101000000002,98.89639,96.25334000000001,not_test +4670,149.0,150.53173999999999,110.92578999999999,134.65565,139.7955,96.31432,103.680725,not_test +4671,149.0,148.11378,120.05568000000001,127.00653,133.5151,94.44649,110.1511,not_test +4672,148.0,132.01105,125.28748999999999,120.4312,128.5356,106.88788999999998,113.29133600000002,not_test +4673,139.0,102.47159,128.45673,118.56491000000001,123.21796,137.55495,113.57027,not_test +4674,132.0,139.048,0.0,131.60034,136.52893,0.0,0.0,not_test +4675,131.0,140.82828,0.0,129.2085,137.26648,0.0,0.0,not_test +4676,117.0,134.72525,0.0,124.76098999999999,132.9786,0.0,0.0,not_test +4677,88.0,119.87831000000001,0.0,125.16883999999999,131.27998,0.0,0.0,not_test +4678,98.0,122.03291000000002,0.0,123.193275,129.46973,0.0,0.0,not_test +4679,100.0,95.03118,15.835754000000001,118.63933999999999,119.59772,28.254196000000004,0.0,not_test +4680,127.0,100.40708000000001,186.20407,102.136475,91.41401,183.92076,187.74466,not_test +4681,183.0,81.37783,184.42838999999998,107.74125,95.16356,176.5777,182.64665,not_test +4682,190.0,114.045425,181.02133,104.163414,104.75333,178.87268,177.08247,not_test +4683,2.0,116.23638999999999,177.05896,131.85143,121.74841,179.62656,173.15718,not_test +4684,191.0,146.24362,172.72821000000002,151.30595,138.96695,166.9017,170.41705,not_test +4685,199.0,158.12483,167.83437,161.38287,158.03933999999998,139.28613,166.94731000000002,not_test +4686,199.0,201.3463,162.0045,201.63522,233.87866,162.31439,169.28105,not_test +4687,195.0,211.60266000000001,152.84951999999998,202.49438,228.49972999999997,137.93166000000002,150.48108,not_test +4688,200.0,219.26065,139.10175,200.26486,230.85431,127.7147,125.44363999999999,not_test +4689,196.0,195.7256,125.81387,192.94035,216.20983999999999,123.833,106.032425,not_test +4690,188.0,188.07492,118.53483600000001,185.53308,195.6638,113.73461,100.69036,not_test +4691,190.0,161.20842,120.02073999999999,171.90797,181.25273,92.66426,109.30977,not_test +4692,179.0,186.7431,141.73353999999998,175.1112,185.72603999999998,143.10143,143.59985,not_test +4693,193.0,183.80664,144.66293000000002,166.9534,168.96921,147.38388,142.99023,not_test +4694,195.0,187.51022,148.63398999999998,162.71347,171.2945,128.514,143.26355,not_test +4695,180.0,185.8498,151.53984,154.9114,159.3672,115.3371,144.59543,not_test +4696,196.0,165.3442,153.31882,148.30142,139.94063,136.90668,147.07953,not_test +4697,158.0,134.62729,155.60908999999998,147.0177,132.14356999999998,196.83655,150.45065,not_test +4698,149.0,142.23323,191.72755,143.2793,142.70386000000002,198.83084,192.24563999999998,not_test +4699,156.0,151.54935,199.93939,141.43698,134.73505,228.43889,200.00473,not_test +4700,208.0,142.45566000000002,206.35736,136.8046,123.80688500000001,219.17139,204.80678,not_test +4701,154.0,128.95598,209.32823,136.8382,118.234505,195.44766,206.83167,not_test +4702,107.0,132.30092,208.81099999999998,134.95248,110.06763000000001,193.78429,206.51295,not_test +4703,131.0,103.48076,206.03851,130.68282,88.13368,231.65868999999998,203.8631,not_test +4704,167.0,137.10138,140.36514,143.14264,137.81238000000002,136.05237,139.26872,not_test +4705,179.0,124.01796000000002,143.59297,147.5544,130.83522,158.26773,140.73248,not_test +4706,179.0,165.90497,148.24715,141.58081,105.55037,150.39293,142.78214,not_test +4707,179.0,155.3518,151.45406,162.77034,134.7375,131.90306,144.19395,not_test +4708,175.0,193.44829,152.47273,178.68874,145.1074,135.28935,145.04153,not_test +4709,176.0,206.63385,152.91801,187.1945,145.31311000000002,177.91061000000002,146.41196000000002,not_test +4710,186.0,171.51949,130.24132,183.66008,176.57771,126.22406000000001,133.4851,not_test +4711,180.0,169.31766000000002,131.28267,180.33208,175.02757,135.37344,134.97737,not_test +4712,164.0,170.69388,133.13939,177.18167,160.27761999999998,131.27086,136.67728,not_test +4713,134.0,172.6342,134.48158,171.58116,145.75517,123.73941,137.39659,not_test +4714,114.0,179.56396,135.4632,166.49454,140.55975,128.08751999999998,137.29482,not_test +4715,112.0,150.04805,137.35538,158.86736000000002,130.49324,151.66257,137.5798,not_test +4716,114.0,113.01552,135.50671,108.21773,115.62186000000001,134.14937,134.63884,not_test +4717,114.0,112.3399,136.92111,105.17154,107.51416,142.04227,136.26413,not_test +4718,114.0,116.81917,141.12558,108.82658400000001,106.864006,138.87445,140.54596999999998,not_test +4719,126.0,102.69060999999999,146.23373,105.27473400000001,99.60835,133.95868000000002,146.29108,not_test +4720,133.0,124.04217,150.55232,104.28293000000001,88.19545,140.2441,151.75931,not_test +4721,132.0,98.29217,153.4192,109.32956000000001,88.98647,162.72191999999998,155.43385,not_test +4722,133.0,137.12689,114.6005,131.15097,136.5371,114.56091,115.41891000000001,not_test +4723,135.0,131.6013,119.26223999999999,125.73041,135.47662,119.55073,116.774925,not_test +4724,134.0,131.00894,124.22062,123.71903,128.3155,116.02556000000001,118.30948000000001,not_test +4725,132.0,118.35888999999999,126.42361499999998,123.69341000000001,124.57905,110.16723999999999,117.43935,not_test +4726,129.0,131.51904,125.79780600000001,123.025894,121.14406000000001,111.65961000000001,114.36906,not_test +4727,121.0,103.51139,124.966324,118.53777,114.27723,125.328705,111.98772,not_test +4728,112.0,124.85598,114.39372,123.64183,119.72032,112.98501599999999,113.57941000000001,not_test +4729,105.0,110.12319,111.70788,128.95415,122.28936000000002,115.54985,111.23408,not_test +4730,96.0,133.8871,111.24806000000001,128.74233999999998,131.765,113.332466,108.790474,not_test +4731,110.0,140.78357,112.76037,157.26398,139.65344,110.459305,107.79068000000001,not_test +4732,119.0,165.07873999999998,115.42568,177.29492,155.12378,113.50936999999999,109.1923,not_test +4733,122.0,174.75229,118.39108,188.03603999999999,163.66183,125.67155,112.57068999999998,not_test +4734,126.0,125.24367,109.70376,134.4096,127.41513,105.88633999999999,106.7439,not_test +4735,122.0,123.39278999999999,116.05827,129.3893,129.12923999999998,112.77618999999999,111.31133999999999,not_test +4736,116.0,128.68114,123.74158,122.30683,133.746,114.39481,117.08828999999999,not_test +4737,116.0,122.26951000000001,129.52051,120.64066000000001,132.85117,116.92103600000002,121.29347,not_test +4738,111.0,133.11096,132.16218999999998,118.8516,127.38701999999999,127.87485,123.054344,not_test +4739,111.0,96.11711,132.73648,114.83443999999999,117.54291,148.58623,123.59173999999999,not_test +4740,103.0,115.057465,104.41792,114.48881999999999,119.41948000000001,99.69248,100.10240999999999,not_test +4741,100.0,119.07411,104.54635999999999,115.01961000000001,124.73093,104.175095,100.02696,not_test +4742,101.0,117.49271999999999,106.31648999999999,112.15691000000001,120.867775,102.86507399999999,100.4684,not_test +4743,100.0,128.4418,108.780174,111.61935,118.464874,100.50901999999999,102.36463,not_test +4744,94.0,113.39939,111.06669,117.18833000000001,116.34966999999999,104.25761999999999,105.703896,not_test +4745,94.0,128.1757,112.83385,116.77577,113.125206,117.212616,109.21283999999999,not_test +4746,97.0,102.52328,139.52747,100.386826,103.9972,141.60582,136.31831,not_test +4747,105.0,103.7484,137.95062,98.33610999999999,107.76799,136.70897,133.75633,not_test +4748,101.0,97.555565,134.28139,95.279106,111.306175,137.42737,129.05098,not_test +4749,92.0,101.29541,130.28268,90.93244,112.97771999999999,139.11726000000002,125.08565,not_test +4750,88.0,88.38481,126.79888000000001,86.80072,110.21959,134.55467,123.35531599999999,not_test +4751,113.0,108.90758999999998,123.55735,87.59085,103.836105,120.55897,123.14014399999999,not_test +4752,130.0,113.11571,116.75349399999999,109.927536,118.654724,118.82216000000001,118.01755,not_test +4753,131.0,121.944176,114.70298999999999,111.81209,124.02296399999999,116.35708600000001,116.08632,not_test +4754,139.0,130.23941000000002,112.58906599999999,127.85208,129.6463,117.50516499999999,113.6472,not_test +4755,140.0,141.38159,110.90138,134.57365,141.38433999999998,118.1966,111.447754,not_test +4756,146.0,152.4907,110.20492,142.35335,155.4201,114.53525,110.35673999999999,not_test +4757,152.0,169.7827,110.858696,149.65839,163.49759,106.408875,110.86945,not_test +4758,157.0,160.3651,98.365326,158.95525,151.23476000000002,96.71523,98.4944,not_test +4759,153.0,149.1722,99.163475,156.98006999999998,150.91234,98.563484,98.46722,not_test +4760,126.0,142.8221,101.07491999999999,152.04755,148.00473,96.86118,99.32661,not_test +4761,123.0,147.28194,102.94951,150.35922,147.23042,95.41713,100.73288000000001,not_test +4762,120.0,138.33585,104.59366,142.4001,147.32486,99.10828000000001,102.51048,not_test +4763,116.0,149.98154,106.67453,140.2818,148.10698,109.45936999999999,104.599396,not_test +4764,105.0,118.55008000000001,80.64961,115.08948999999998,115.5819,78.82049,80.587524,not_test +4765,91.0,124.15981000000001,85.7671,117.23778999999999,123.19099399999999,85.74242,84.0145,not_test +4766,96.0,120.08102,94.06503000000001,115.434105,124.8441,88.299545,90.25778000000001,not_test +4767,87.0,129.60416999999998,101.78992,115.09916000000001,124.00608999999999,90.92347,97.33171,not_test +4768,86.0,115.55345,106.77661,120.75223500000001,126.10706,100.32249,103.26921999999999,not_test +4769,82.0,131.39307,109.36098,120.512,126.318054,118.71773,106.91621,not_test +4770,82.0,91.768845,73.90375,86.63664,89.2023,69.1293,68.838776,not_test +4771,73.0,89.71878000000001,77.08683,82.99721,92.385345,75.33734,70.37055,not_test +4772,77.0,84.736496,81.48261,77.273384,93.92359,74.12828,72.20581999999999,not_test +4773,83.0,84.05368,83.885124,72.99175,92.44988000000001,70.412575,72.80485,not_test +4774,75.0,76.94484,83.45576,70.65324,87.606674,73.42815999999999,72.37714,not_test +4775,68.0,87.54529000000001,82.14218000000001,72.16897,86.15137,88.48703,72.54983,not_test +4776,65.0,70.92177,80.15610500000001,70.53211,82.84071,76.93895,78.260704,not_test +4777,73.0,77.97103,79.81859,73.549774,83.1299,80.816895,78.047966,not_test +4778,67.0,86.681145,80.15253,80.96365,96.287735,80.51689,77.78469,not_test +4779,83.0,95.52264,80.431595,102.18463,109.95105,78.34285,77.40164,not_test +4780,71.0,116.10918400000001,80.39031,118.16766000000001,114.79808,79.38134000000001,76.97052,not_test +4781,82.0,135.26741,80.40941,132.09894,125.79481499999999,86.96215,76.649475,not_test +4782,83.0,96.052216,41.40289,93.44696,90.86214,36.380337,38.852940000000004,not_test +4783,80.0,100.73046,43.69963,94.34574,95.85109,40.858315000000005,40.487328000000005,not_test +4784,77.0,110.68923999999998,48.16261,94.772095,99.97267,42.971638,43.54742,not_test +4785,79.0,118.08326000000001,52.03163,95.54231,100.0285,45.94299,46.326626,not_test +4786,66.0,97.78649,54.713875,92.73877,98.93024,55.19692,48.622704,not_test +4787,38.0,124.33771999999999,57.738369999999996,93.09836999999999,97.50168000000001,72.72455,51.46577,not_test +4788,41.0,55.136596999999995,32.260014,47.888412,53.895813000000004,27.196976,26.294643,not_test +4789,33.0,50.169884,33.41683,52.30272,58.094559999999994,31.168396,28.178577,not_test +4790,34.0,53.429030000000004,37.369625,51.38964,60.474883999999996,31.211871999999996,32.209070000000004,not_test +4791,25.0,66.164604,42.4638,54.084427000000005,62.500526,31.320023,37.54387,not_test +4792,25.0,65.639915,47.677063000000004,58.40107,68.90745,38.10415,43.357513,not_test +4793,28.0,76.45625,52.802586,59.037994,72.04578000000001,54.46471,48.755253,not_test +4794,29.0,43.761795,30.128134000000003,37.271927000000005,39.977676,27.507893,27.800789,not_test +4795,27.0,37.858414,32.521187,35.687027,36.67768,31.132168,29.664773999999998,not_test +4796,25.0,38.287384,36.832184000000005,30.428177,31.135284000000002,29.259417,33.122158,not_test +4797,22.0,32.631676,40.877678,30.307419,28.076148999999997,26.997944,36.7756,not_test +4798,20.0,36.3133,43.516632,27.451714000000003,25.118134,31.973545,39.814095,not_test +4799,19.0,28.310509000000003,45.108414,32.29164,22.720245000000002,47.387558,42.187325,not_test +4800,19.0,30.595726000000003,29.691034000000002,22.750304999999997,35.37941,27.042472999999998,25.308119,not_test +4801,18.0,33.534843,29.403034,26.023521,41.52655,28.351921,26.064682,not_test +4802,23.0,39.79043,30.13467,34.266342,48.42926,26.754436,27.478347999999997,not_test +4803,28.0,57.336482999999994,31.108154,47.747009999999996,69.5376,25.327745,29.257740000000002,not_test +4804,41.0,78.0719,31.79222,65.92044,78.60309000000001,28.307346000000003,30.850576,not_test +4805,46.0,102.99977,32.237984000000004,79.28532,73.543015,37.2479,31.663465000000002,not_test +4806,39.0,52.60669300000001,29.88733,44.198097,46.21714,29.02222,30.9473,not_test +4807,25.0,44.138909999999996,30.979282,47.061592,48.23175,32.24045,32.086975,not_test +4808,27.0,54.24097,32.81256,47.639465,47.972747999999996,31.016624,32.643409999999996,not_test +4809,33.0,55.518440000000005,34.268153999999996,49.534843,49.533844,29.629322,32.490402,not_test +4810,33.0,48.496346,34.708637,46.965614,49.86805,33.65648,32.118347,not_test +4811,36.0,73.069244,34.355713,47.627327,51.624252,44.873745,32.175606,not_test +4812,32.0,39.183357,21.131114999999998,33.025764,35.460114000000004,19.75188,19.38364,not_test +4813,20.0,26.940720000000002,20.454529,36.715706,40.53723,20.826427,19.760289999999998,not_test +4814,28.0,31.549828,21.59874,37.219963,41.677963,19.625168,20.871648999999998,not_test +4815,27.0,47.736702,24.184738,38.407684,43.658974,18.933193,22.741352,not_test +4816,30.0,46.638940000000005,27.504444,42.852676,50.627914000000004,22.225616,25.13073,not_test +4817,35.0,63.10159300000001,30.810909999999996,43.800315999999995,54.74315,30.464632,27.470345000000002,not_test +4818,28.0,44.863617,55.362213,34.564842,37.47036,56.58979,56.198814,not_test +4819,23.0,36.511696,53.647769999999994,33.248344,36.939728,52.904132999999995,54.57569,not_test +4820,20.0,31.988792,49.880318,27.511475,33.395683,53.970886,50.021706,not_test +4821,14.0,18.09742,46.482803000000004,23.390388,31.784103,55.252143999999994,45.836403000000004,not_test +4822,20.0,19.047165,44.654070000000004,20.365135000000002,29.317909999999998,50.355957000000004,44.1044,not_test +4823,34.0,12.598167,43.748135,23.651993,27.640441999999997,36.933796,44.352287,not_test +4824,34.0,43.8984,82.08308000000001,37.206955,34.712868,87.958694,84.69617,not_test +4825,38.0,51.469722999999995,75.94775,43.649254,41.889286,78.30020999999999,78.88219000000001,not_test +4826,55.0,61.861923,67.10544,48.101833,52.589690000000004,74.5343,69.2323,not_test +4827,59.0,72.1135,59.69275699999999,78.967155,61.548730000000006,73.00285,60.771072,not_test +4828,63.0,94.10226,55.24978,101.76172,84.26567,66.06936,56.18824,not_test +4829,78.0,112.22333,52.38943,114.70196499999999,92.16762,49.632458,54.564186,not_test +4830,86.0,81.86282,47.236453999999995,81.52098000000001,77.93042,51.536613,43.723797,not_test +4831,91.0,84.736626,46.42456,86.706406,85.94671,46.75261,40.045944,not_test +4832,95.0,86.67257,44.726944,87.94362,87.89999,47.43757,32.710167,not_test +4833,89.0,96.13905,42.159893,87.81338000000001,88.71854,47.336445,24.304605,not_test +4834,96.0,80.89227,39.47687,86.89694,86.54224,40.073696000000005,18.879579999999997,not_test +4835,44.0,98.00968,37.843002,85.84451,82.86249000000001,25.235153,19.350424,not_test +4836,17.0,38.034977000000005,11.188955,34.034637,34.58634,8.023064,10.636244,not_test +4837,29.0,34.463173,14.086058,36.39051,34.72753,11.975889,11.054153,not_test +4838,43.0,40.61063,20.086814999999998,36.1341,35.069756,10.188744,14.231532999999999,not_test +4839,33.0,44.0345,26.962513,36.93622,38.1719,9.725473,19.70046,not_test +4840,27.0,45.008697999999995,33.352425,41.268190000000004,44.951565,19.343403,26.350422,not_test +4841,34.0,52.615536,39.046783000000005,41.945267,49.04895,41.250046000000005,32.66333,not_test +4842,35.0,44.57614,63.59879300000001,32.751045,31.866065999999996,59.817595999999995,66.48584,not_test +4843,24.0,41.109097,66.10892,31.777939,31.766853,71.71593,68.7336,not_test +4844,12.0,31.39508,67.16810600000001,26.499786,28.978676,65.370125,68.81381999999999,not_test +4845,9.0,23.463737,66.234406,22.263145,27.4943,53.800194,66.858406,not_test +4846,6.0,18.049286,63.496480000000005,20.042747,25.286514,55.203384,64.0021,not_test +4847,6.0,15.421448000000002,59.866516000000004,21.78267,23.864418,77.390564,61.633965,not_test +4848,10.333333,0.0,81.979324,1.2618483999999999,10.789276,91.12477,85.015015,not_test +4849,14.666667000000002,0.0,74.99927,2.4232864,16.537796,74.78262,79.62406,not_test +4850,19.0,4.1753616000000005,67.29924,11.347748,21.201179999999997,74.94725,72.70721,not_test +4851,34.0,18.051315,62.29854,22.964233,31.808342,81.3577,67.20781,not_test +4852,59.0,36.733795,60.119069999999994,43.72331,39.391323,76.76207,63.71651,not_test +4853,88.0,60.73925799999999,58.23845,50.23572,43.669815,52.383045,60.73525,not_test +4854,96.0,88.86777,67.12438,90.50239,93.36636999999999,74.19877,70.2753,not_test +4855,94.0,96.98713000000001,62.649480000000004,92.59689,99.402885,66.40393,64.32160999999999,not_test +4856,95.0,104.30735,56.018578000000005,94.7234,100.63136999999999,68.05984000000001,54.82435,not_test +4857,95.0,117.12718000000001,49.33834,94.40156,101.01812,68.63725,46.01123,not_test +4858,93.0,96.78822,44.660759999999996,89.24203,98.38902,57.1565,41.217094,not_test +4859,89.0,111.285,43.027027000000004,87.28253000000001,95.234215,32.548775,41.01105,not_test +4860,104.0,83.3614,63.070159999999994,79.557724,81.627815,61.250034,61.59161999999999,not_test +4861,97.0,83.32349,61.73978,75.943855,90.776535,66.14744,61.17808,not_test +4862,95.0,96.66872,62.75958000000001,75.80436,91.9896,60.564888,63.812194999999996,not_test +4863,78.0,86.94473,67.039,78.27065999999999,95.525154,57.301109999999994,71.34092,not_test +4864,79.5,69.06576,74.06991,80.575424,91.08400999999999,69.5955,82.10866999999999,not_test +4865,81.0,67.39086999999999,81.79822,78.70834,83.36164000000001,99.05484,91.42395,not_test +4866,86.0,76.84021,83.87801,78.46424,76.99107,74.92474,83.14399999999999,not_test +4867,68.0,76.37236,89.91111,78.92106,77.400986,85.35597,86.53158,not_test +4868,84.0,57.36146,96.14902,81.60696,81.479065,81.68644,90.26491,not_test +4869,89.0,83.06812,99.8114,80.57153000000001,88.77892,73.918144,93.27805,not_test +4870,111.0,72.15847,99.81593000000001,109.7139,95.565,77.21903,94.57088,not_test +4871,94.0,88.901596,97.31891,129.29178000000002,102.247055,98.68399000000001,93.765724,not_test +4872,78.0,97.17068,77.3812,101.70529,95.71421,69.669815,80.77316,not_test +4873,74.0,99.12224599999999,77.17175999999999,115.7765,102.48868,69.7985,79.999954,not_test +4874,73.0,103.921555,76.48246999999999,112.96788000000001,105.17643000000001,69.69128,78.02847,not_test +4875,88.0,114.83473000000001,74.71943,106.043755,104.83417,61.738976,75.38454,not_test +4876,104.0,112.25311,72.544556,100.1894,102.49089000000001,46.058537,73.27541,not_test +4877,88.0,126.34305,71.52218,98.17458,100.77060999999999,31.584404,72.863785,not_test +4878,96.0,82.381584,69.16402,69.79504,73.825066,65.82258,67.711525,not_test +4879,85.0,81.312065,68.64056,55.861095,69.43302,68.730255,66.819374,not_test +4880,83.0,64.107605,68.1113,45.37908,60.21459599999999,61.72719,65.51331,not_test +4881,91.0,59.966362,67.30190999999999,44.758793,58.168503,53.083015,64.47148,not_test +4882,79.0,58.082516000000005,66.910065,44.32362,58.103874,54.75595500000001,64.49774000000001,not_test +4883,44.0,44.410362,68.06307,51.17715,63.897186,72.30125,65.903824,not_test +4884,63.0,44.114129999999996,85.12045,38.22403,42.549170000000004,85.51359599999999,87.19963,not_test +4885,61.0,44.252796000000004,89.64393000000001,34.901565999999995,42.899353000000005,101.88774000000001,92.29791,not_test +4886,32.0,42.362553000000005,92.36946,30.672897,36.82901,97.95859499999999,94.84563399999999,not_test +4887,23.0,33.298823999999996,93.02375,24.727283,30.346245,89.565674,94.746346,not_test +4888,26.0,29.06802,92.02561999999999,21.084357999999998,27.908610999999997,96.778885,92.61094,not_test +4889,45.0,20.04797,89.98054499999999,19.039967,25.822704,126.04601000000001,89.166565,not_test +4890,73.0,46.56333,110.67155,38.01867,38.69956,107.96075400000001,111.009125,not_test +4891,75.0,38.675224,105.19756000000001,32.316376,43.97687,106.95776000000001,107.12274,not_test +4892,87.0,42.844165999999994,98.554695,35.931816,47.14837,111.63685600000001,100.76995,not_test +4893,101.0,47.28119,93.87303,43.264393,53.074326,112.41248999999999,95.03197,not_test +4894,106.0,54.174812,91.77971,52.300026,60.38005,100.62187,91.59907,not_test +4895,108.0,68.43536,90.52771,63.540319999999994,70.34908,76.65963,90.026566,not_test +4896,115.0,107.92755,43.500793,110.18468999999999,118.18698,45.366753,37.59006,not_test +4897,32.0,105.09245,45.36034,108.468056,118.47203,48.987934,39.168409999999994,not_test +4898,25.0,108.32717,46.829132,105.347824,119.342224,41.846825,40.44296,not_test +4899,26.0,109.20787,46.441765000000004,101.671875,118.78962,34.112465,38.086903,not_test +4900,17.0,118.10976000000001,45.215157,98.89156,117.63663999999999,38.619811999999996,32.39563,not_test +4901,40.0,95.86004,45.718925,91.89743,115.90784,59.798885,27.3279,not_test +4902,36.0,38.92899,52.422318,38.22254,39.518394,54.470764,52.803709999999995,not_test +4903,20.0,34.129554999999996,50.06111,34.818794,36.823166,58.67098000000001,51.739582,not_test +4904,13.0,31.917553,49.904293,35.822006,37.296864,51.959297,50.560555,not_test +4905,19.0,31.800235999999998,52.697722999999996,35.38127,35.552032000000004,45.442153999999995,51.544106,not_test +4906,27.0,43.682815999999995,57.64029300000001,35.708534,35.935759999999995,51.596886,55.360626,not_test +4907,50.0,53.01856,62.73392,39.960409999999996,40.17662,73.37236999999999,60.252136,not_test +4908,31.0,46.216675,26.847658000000003,38.090607,46.568659999999994,21.935947,23.985344,not_test +4909,28.0,41.564293,35.42261,33.680813,39.431259999999995,31.859789000000003,30.2231,not_test +4910,19.0,33.585879999999996,44.713287,29.507171999999997,33.89027,31.037073,38.965309999999995,not_test +4911,10.0,29.742390000000004,50.816734000000004,26.993176000000002,31.553634999999996,27.563713,45.47339,not_test +4912,16.0,21.152767,53.1538,24.782882999999998,29.685577000000002,34.37053,48.120135999999995,not_test +4913,9.0,12.390114,54.107872,24.06776,31.34885,57.433815,48.964115,not_test +4914,9.0,8.883842,44.635704,6.680637400000001,11.580402000000001,46.06665,43.22072,not_test +4915,24.0,10.4566,44.306583,11.3456955,15.126507,51.64566,41.313175,not_test +4916,37.0,15.4157715,46.091716999999996,17.967781,22.593807,43.239807,40.260357,not_test +4917,35.0,18.029728,49.08778,31.522059999999996,30.478825,32.433952000000005,41.191586,not_test +4918,42.0,20.26941,50.74791,35.538246,35.227127,33.725056,42.668636,not_test +4919,42.0,29.578037,48.848602,40.708954,36.949116,52.3421,41.874897,not_test +4920,44.0,32.49047,42.42713,34.09095,42.690605,45.807823,45.760284000000006,not_test +4921,42.0,31.968727,41.115677000000005,32.558014,40.632003999999995,50.865753000000005,47.11777,not_test +4922,48.0,34.250645,40.288033,31.61705,35.573128000000004,42.079582,48.036353999999996,not_test +4923,44.0,28.734935999999998,40.242004,30.078526,32.444244,34.722107,48.20109,not_test +4924,49.0,37.982079999999996,40.744728,29.784012,31.154366999999997,44.39803,47.38738,not_test +4925,51.0,28.417296999999998,41.270077,28.067307,26.659686999999998,73.30749499999999,45.646972999999996,not_test +4926,50.0,48.391234999999995,59.98980699999999,43.188618,49.55668,60.284386,62.580654,not_test +4927,49.0,41.631065,55.85535,40.161217,49.02232,59.345535,58.94048299999999,not_test +4928,50.0,38.14927,50.285744,39.64248,47.217102000000004,63.872078,52.519806,not_test +4929,53.0,33.75029,46.51233,45.330868,50.053776,66.94255,46.558716,not_test +4930,68.0,48.503634999999996,46.09713,45.935992999999996,50.497955,61.32754499999999,42.85695,not_test +4931,74.0,36.17002,48.023067,44.186516,49.13762,45.92445,40.941565999999995,not_test +4932,72.0,69.92315,27.063090999999996,68.77409,60.632343000000006,28.662598,31.758259999999996,not_test +4933,38.0,59.034466,31.67788,64.14816,55.088818,35.894940000000005,35.581387,not_test +4934,33.0,60.813652000000005,37.292496,59.031093999999996,52.369125,34.65824,41.33897,not_test +4935,19.0,46.172455,41.30151,51.393597,47.80173,35.726986,46.586209999999994,not_test +4936,25.0,42.636887,42.83249,50.616753,41.79043,49.4401,48.97513,not_test +4937,35.0,26.326633,42.998837,50.08854,37.34967,75.71924,47.714043,not_test +4938,30.0,34.201015000000005,91.80309,38.083861999999996,39.412407,91.26938,93.08998000000001,not_test +4939,50.0,40.68975,93.49336,51.40644,50.123940000000005,89.18084,90.59929,not_test +4940,59.0,46.903557,90.70599,59.53369,57.43283,94.26353,83.87404000000001,not_test +4941,71.0,57.851690000000005,86.13405,65.85924,65.364784,97.49707,78.15439,not_test +4942,93.0,63.990134999999995,81.72107,71.00238,67.55306,88.210365,75.91168,not_test +4943,88.0,73.675446,77.52166,71.48006,69.873276,63.77143,75.384796,not_test +4944,80.0,78.37483,60.516144,86.17289,84.548836,59.014786,58.828354000000004,not_test +4945,61.0,77.55057,59.523766,84.17714000000001,80.79355,60.9434,57.23686,not_test +4946,59.0,72.05836,58.590740000000004,81.09431500000001,78.37583000000001,67.04906,55.959354000000005,not_test +4947,54.0,64.62771,58.2095,75.86353000000001,76.72549000000001,70.23161999999999,55.410454,not_test +4948,60.0,66.834,58.233353,71.40089,72.17919,65.083176,55.411106000000004,not_test +4949,48.0,52.605038,58.099495,66.741776,61.452164,52.57256999999999,55.465584,not_test +4950,62.0,46.72896,33.093414,47.638020000000004,48.63134,30.58052,29.669846000000003,not_test +4951,46.0,46.409386,31.589523,45.771076,47.441235,33.518833,28.249603000000004,not_test +4952,35.0,50.709538,30.114420000000003,45.52802,41.51661,29.77317,27.039303000000004,not_test +4953,37.0,41.514492,28.634981,48.644794,42.379852,23.80465,26.30893,not_test +4954,32.0,51.230923,28.119304999999997,48.892179999999996,39.5081,23.264454,26.598194,not_test +4955,30.0,47.444477,29.825108,48.330647,36.846676,32.604217999999996,28.298679999999997,not_test +4956,55.0,32.13482,47.741040000000005,35.678368,28.714725,43.970284,43.994816,not_test +4957,45.0,27.117414,52.137875,33.179626,28.6555,50.95207,45.697514,not_test +4958,34.0,29.148893,58.454296,30.547092,24.413876000000002,51.591297,49.243927,not_test +4959,37.0,21.82936,64.24061999999999,27.511096999999996,21.604916,51.638107,53.928695999999995,not_test +4960,40.0,37.121105,68.07049,28.298645,19.380428,59.285923,58.765427,not_test +4961,43.0,23.458721,70.069016,27.385763,18.485526999999998,77.388626,62.73893399999999,not_test +4962,48.0,40.159386,79.44171,45.22917,42.26358,83.4691,81.7583,not_test +4963,76.0,45.889236,79.0037,58.0132,55.52239599999999,73.000114,80.20822,not_test +4964,81.0,50.81803,76.270454,70.52376600000001,75.150925,76.14621,77.91199,not_test +4965,82.0,56.368786,72.64801,76.6302,94.06116999999999,84.1527,75.77046,not_test +4966,89.0,64.39798,69.21183,72.61936999999999,97.37955,82.76557,73.53128000000001,not_test +4967,87.0,77.93788,66.24096,68.57396,95.350716,64.60065999999999,70.36408,not_test +4968,87.0,76.71279,66.70013399999999,86.14359,83.46835,65.82545999999999,63.764423,not_test +4969,88.0,64.532394,62.25861999999999,83.27787,80.56944,58.101597,58.99334,not_test +4970,81.0,56.12415,56.27666,76.8583,79.11329,56.55485,53.305275,not_test +4971,71.0,63.115280000000006,51.174746999999996,70.10484,75.98671,56.231003,48.80092,not_test +4972,78.0,44.653267,48.70867,61.139523,67.20482,50.96778,46.621784000000005,not_test +4973,85.0,36.79756,49.067135,56.96485,65.73904399999999,39.304672,46.525345,not_test +4974,81.0,79.33858000000001,77.74025999999999,81.164024,83.40484000000001,77.82623000000001,80.91263000000001,not_test +4975,84.0,71.82854499999999,74.58013000000001,77.33185,80.89711,76.89795,78.4103,not_test +4976,82.0,66.12861,69.58337399999999,75.32588,78.955765,79.37092,71.65748599999999,not_test +4977,81.0,56.72889,64.88718,72.0762,75.93526999999999,77.48069,64.29245999999999,not_test +4978,84.0,54.70381,62.40044399999999,68.08339000000001,74.28466,65.74943,59.907677,not_test +4979,73.0,55.814440000000005,62.697933,66.65274000000001,70.93646,46.487885,59.731827,not_test +4980,61.0,67.215385,71.4608,75.03434,72.11877,70.40105,73.086105,not_test +4981,66.0,65.95339,75.75489,74.05611400000001,72.74968,76.94892,77.59878499999999,not_test +4982,72.0,56.03025,80.1062,70.073715,72.198975,75.10032,82.263504,not_test +4983,69.0,63.222427,82.856705,68.58133000000001,72.71401999999999,72.42662,85.82289,not_test +4984,71.0,49.398464000000004,83.60698000000001,71.1148,67.251755,78.310005,87.489655,not_test +4985,78.0,66.84473,83.21515,69.51422,65.95198,95.44055,87.19357,not_test +4986,82.0,84.45724,94.50375,87.03531,83.34947,94.71325999999999,93.90416,not_test +4987,90.0,75.139465,93.809326,90.86426999999999,91.869415,95.70386500000001,93.77257,not_test +4988,94.0,68.90332,91.90746999999999,94.104294,100.32262,98.544365,92.56855999999999,not_test +4989,97.0,77.799324,89.62301,95.7682,105.92572,98.236435,91.33626600000001,not_test +4990,98.0,79.359116,87.29273,94.24746,104.73524499999999,91.00289000000001,90.380325,not_test +4991,91.0,92.56992,84.80554000000001,93.99486999999999,102.979095,77.94778000000001,89.18753000000001,not_test +4992,90.0,86.76639,80.54057,92.14743,89.019196,80.40596,80.01536999999999,not_test +4993,93.0,74.58818000000001,80.45633000000001,90.16426,85.6698,84.418915,79.09009,not_test +4994,93.0,77.96759,79.9719,86.29855,84.28893000000001,84.70371999999999,78.0731,not_test +4995,81.0,76.115524,79.04628000000001,81.66608000000001,80.75978,80.26422,77.15135,not_test +4996,86.0,69.32341,78.05623,76.87267,71.07216,74.11695,76.48311600000001,not_test +4997,86.0,62.830543999999996,77.58458,74.39564,68.44568000000001,71.09115,76.19605,not_test +4998,76.0,81.63684,86.745255,84.99089000000001,82.93913,85.97109,85.91571,not_test +4999,78.0,73.42905400000001,85.14389,81.62546999999999,79.918015,85.647545,83.67607,not_test +5000,75.0,71.09306,82.94099,79.80821999999999,77.10464499999999,87.49486,80.54594399999999,test +5001,85.0,68.76604,81.103424,76.60469,72.89329000000001,88.29992,77.80105999999999,test +5002,88.0,68.49316400000001,80.28529,73.02728,69.809265,85.14066,76.35433,test +5003,87.0,65.594536,80.47951,71.91682,66.40085,78.047714,76.29456,test +5004,80.0,85.93762,64.30161,89.35124,86.631905,62.61963000000001,63.142612,test +5005,74.0,79.84622,67.41861,87.55498,87.99322,65.68226999999999,65.45313,test +5006,62.0,72.03291,72.42828,82.80169000000001,86.07878000000001,66.79044,69.75919,test +5007,61.0,74.53298000000001,76.99553,81.13287,85.6256,68.08008000000001,74.35514,test +5008,58.0,61.4266,80.02034,82.16949,81.9477,73.16117,78.07493000000001,test +5009,77.0,85.380516,82.01332,80.07226,80.035774,83.49882,80.717575,test +5010,105.0,77.69845600000001,106.398926,90.14954,86.13275,108.6685,106.736984,test +5011,110.0,73.677925,104.55672,95.34505,93.76404000000001,102.96818,104.31923,test +5012,109.0,76.09346,100.88651999999999,99.30171,106.51433999999999,103.83426999999999,100.294014,test +5013,109.0,86.08497,97.2758,101.53888,112.68383,105.45334,96.56817,test +5014,106.0,90.36539,94.79482,100.005646,111.40459399999999,100.1585,94.14904,test +5015,110.0,102.63274,93.2361,99.23522,109.553665,85.49007399999999,92.7546,test +5016,75.0,106.75345,77.08051999999999,109.68378999999999,104.98983999999999,72.564575,74.95093,test +5017,44.0,104.847275,76.95503000000001,105.30305,101.31323,73.99725,73.83359,test +5018,72.0,102.81066,77.51668000000001,100.19496,97.30095,75.86065,72.774956,test +5019,62.0,96.33385,78.27211,95.53853000000001,90.38435,74.73281,71.756424,test +5020,57.0,92.98784,79.07002,92.94757,89.92280600000001,70.40621999999999,71.22914,test +5021,54.0,80.6465,80.13969,89.15775,84.56728000000001,66.2524,71.83223000000001,test +5022,44.0,50.97157,51.433064,47.050312,51.052574,49.41559,48.709633000000004,test +5023,47.0,49.45755,51.897896,45.38669,52.09532,51.685074,48.687744,test +5024,49.0,58.799369999999996,52.98568,44.80997,47.73594,50.359978000000005,48.864902,test +5025,2.0,51.65133,53.619705,43.120613,43.742509999999996,48.593224,48.763783000000004,test +5026,39.0,51.15821,54.131080000000004,41.325592,39.290634000000004,51.434944,48.735283,test +5027,27.0,41.33143,55.826508,38.56884,36.454994,61.27308299999999,49.59507,test +5028,29.0,27.949386999999998,44.04493,23.140839,24.818062,44.59718,44.159003999999996,test +5029,28.0,25.136303,49.908638,21.38425,24.668036999999998,49.97059,50.1443,test +5030,51.0,22.673656,58.605076000000004,22.019935999999998,22.97617,49.551190000000005,57.826687,test +5031,68.0,28.762375,66.126564,23.814182000000002,27.42493,49.1605,63.807933999999996,test +5032,79.0,37.160164,70.364265,28.564362,34.003853,57.046505,66.78432,test +5033,87.0,45.22293,71.99286,35.62628,44.11991,76.094185,67.8694,test +5034,86.0,91.51905,80.12583000000001,91.79261,89.69569,79.67778,76.39817,test +5035,81.0,94.637314,76.67945999999999,96.0226,91.97845,71.84939,73.1002,test +5036,86.0,93.70013399999999,71.91225,95.290054,91.1523,75.30646999999999,69.70836,test +5037,84.0,97.31334,67.92844000000001,94.65826,90.99403000000001,81.21401999999999,67.50461999999999,test +5038,86.0,86.27943,65.49132,92.20318,90.06615,77.54048,66.29581999999999,test +5039,90.0,94.07231,63.879684,90.14904,90.38274,59.60473,64.900696,test +5040,95.0,90.5856,86.052704,83.202415,88.02660999999999,89.473015,91.75161,test +5041,96.0,90.01854,83.99335,79.53514,83.641396,82.05230999999999,87.25986,test +5042,81.0,80.07904,79.9851,76.8762,78.10604000000001,83.7982,79.16759499999999,test +5043,81.0,82.67392,74.85123,73.46547,75.82422,86.22705,70.53958,test +5044,27.0,76.321236,69.48477,71.29856,71.94253499999999,78.69251,63.991769999999995,test +5045,10.0,65.40581,64.76748,71.29097,69.304016,58.152367000000005,60.477109999999996,test +5046,8.0,14.7901535,73.81274,9.28635,10.160664,73.494354,75.14689,test +5047,7.0,13.964275,72.35746999999999,8.263943,9.425274,76.84134,71.10212,test +5048,6.0,8.443283000000001,70.37101,10.362453,9.219307,70.44261999999999,64.70528399999999,test +5049,6.0,10.919777,69.10441,9.708973,12.36578,63.392212,59.614815,test +5050,7.0,12.7939,69.55688,13.0974655,14.778576000000001,66.61433000000001,58.546864,test +5051,9.0,17.77251,71.7282,17.270979999999998,15.812454,83.540565,61.44283299999999,test +5052,10.0,8.885197,14.373722,9.980057,15.500107,12.159450999999999,15.227184,test +5053,13.0,9.000401,21.330067,12.857136,17.127579,19.126663,20.279220000000002,test +5054,17.0,12.805,31.588095000000003,13.276248999999998,18.404602,19.917514999999998,27.635876,test +5055,15.0,19.808117000000003,40.177929999999996,15.900162,19.722189999999998,21.634373,33.933537,test +5056,16.0,16.30838,45.489002,11.259193,16.701138,34.179992999999996,38.03203,test +5057,18.0,22.74361,49.5224,12.580074,14.398685,60.588969999999996,41.13572,test +5058,18.0,21.306423000000002,22.791784,18.859787,20.427570000000003,17.615887,16.37601,test +5059,19.0,18.434921,24.848871,20.75299,21.271175,22.14264,16.949371,test +5060,15.0,27.380454999999998,27.93315,20.822001999999998,22.80162,19.889729,18.156536,test +5061,14.0,22.885098,30.1483,19.34195,22.275013,16.531433,19.072632000000002,test +5062,13.0,20.074097000000002,31.143055,20.678295000000002,24.937973,21.142778,19.577267000000003,test +5063,12.0,20.798614999999998,32.10237,20.705185,25.256298,38.051426,20.264235,test +5064,15.0,13.327209,24.685768,13.096664,14.693363,18.042532,15.743813000000001,test +5065,25.0,12.490898,26.480381,16.959648,20.808899,26.365114000000002,16.62419,test +5066,31.0,21.11554,28.948553000000004,17.509842000000003,25.28184,21.747292,18.828936,test +5067,31.0,25.15633,29.9764,16.799809,25.715553,12.775238,20.526382,test +5068,37.0,18.500671,28.667187,13.182941,22.314785,13.860126500000002,20.790966,test +5069,35.0,14.3567505,26.001917000000002,8.678509,18.840096,32.827415,20.170536,test +5070,33.0,36.248802000000005,31.57687,34.596990000000005,32.795303000000004,29.902209999999997,30.986275,test +5071,26.0,30.29733,29.799435,30.375593,34.31358,34.225184999999996,27.913815000000003,test +5072,30.0,32.295494,27.988403,30.788702,35.815605,31.085835,24.68068,test +5073,39.0,27.721344000000002,26.619017,29.808895,37.848022,25.595299,22.71579,test +5074,40.0,35.923977,25.932434,32.526270000000004,39.520042,25.699755,22.194876,test +5075,37.0,41.2157,25.890133,38.39577,43.942787,35.421603999999995,22.125366,test +5076,45.0,39.210613,27.881553999999998,46.337708,39.962112,29.458715,29.354729,test +5077,52.0,48.47919,28.574913000000002,57.886295,51.747826,33.920359999999995,30.070629999999998,test +5078,56.0,50.479946000000005,30.209589,63.509269999999994,55.534344,30.977622999999998,30.762240000000002,test +5079,64.0,57.8699,32.07999,64.114494,57.321419999999996,28.574764000000002,31.741545000000002,test +5080,68.0,66.54042,33.513855,62.312293999999994,58.44361,35.448153999999995,32.88576,test +5081,74.0,61.935978000000006,34.239554999999996,60.95714,59.474284999999995,53.18233000000001,33.592556,test +5082,85.0,77.43524000000001,53.03195600000001,77.21449,75.87533,51.027657,52.72721,test +5083,98.0,76.80251,52.193153,72.52802,74.427635,51.48352,52.059540000000005,test +5084,98.0,75.89139,50.306670000000004,67.96441999999999,70.67729,54.630356000000006,49.711548,test +5085,89.0,65.00118,49.12104,63.347137,63.96595799999999,57.0915,47.212547,test +5086,87.0,62.945885,49.163162,63.044940000000004,62.497890000000005,54.822258,45.190834,test +5087,84.0,47.69488,49.438179999999996,60.154680000000006,60.712709999999994,46.60794,43.157726000000004,test +5088,58.0,82.210915,85.60784,81.63552,80.98619000000001,91.46251,91.97077,test +5089,28.0,81.43465400000001,82.36856999999999,79.37458000000001,80.275185,85.35089,90.95598000000001,test +5090,19.0,77.80430600000001,77.28155500000001,75.1526,77.42813000000001,85.8018,86.38928,test +5091,16.0,79.60565,73.01276,69.863945,75.78721999999999,87.5903,82.241486,test +5092,10.0,72.117294,69.83513,67.04656999999999,73.29383,81.57665,79.70285,test +5093,8.0,58.913284,66.06081999999999,67.364365,70.89779,63.164177,76.712395,test +5094,7.0,2.8940810000000003,19.489475,2.8273697,8.416313,22.50675,22.581523999999998,test +5095,6.0,2.3614883,22.623922,1.3264008,8.893089,29.630526,22.245068,test +5096,5.0,0.0,24.916597,2.4007834999999997,8.051361,25.552608,20.145777,test +5097,5.0,0.6695328,24.088345,1.941391,6.722294000000001,17.355220000000003,15.957846,test +5098,6.0,2.1727027999999997,21.680032999999998,5.980942,7.002159,17.308138,12.057319999999999,test +5099,7.0,7.4126167,21.722176,11.019542999999999,9.18948,32.420914,11.8971,test +5100,14.0,8.544586,8.600736999999999,8.028263,15.402222,5.3372917,7.1284676,test +5101,18.0,11.820034,10.974457000000001,11.446251,25.814287,12.683023,8.17774,test +5102,17.0,14.873676000000001,15.967735000000001,16.450226,32.931385,13.270838000000001,10.721455,test +5103,21.0,23.741413,21.56638,23.162281,38.601036,12.742008,13.887665,test +5104,31.0,25.241882,26.879553,20.273039999999998,46.800922,20.173317,17.389870000000002,test +5105,36.0,33.503838,32.156082,20.621288,43.920563,39.52452,21.30718,test +5106,41.0,42.86991,26.428179999999998,35.537994,37.761414,20.713708999999998,21.550978,test +5107,47.0,37.231823,29.565984999999998,33.223366,39.01334,30.851159999999997,23.195114,test +5108,45.0,41.970290000000006,33.702785,32.969543,35.839836,30.415385999999998,25.105446,test +5109,31.0,31.190237,36.731533,31.036402000000002,31.764824,25.664276,26.5349,test +5110,37.0,29.736776000000003,38.19231,32.308617,33.57801,28.610120000000002,27.909028999999997,test +5111,40.0,24.411917000000003,39.28225,31.634211999999998,32.125984,46.308327,30.211327,test +5112,62.0,37.009956,44.1402,36.435707,38.75258,47.880657,42.319828,test +5113,59.0,34.777706,43.147285,39.75652,42.340076,37.837596999999995,40.499953999999995,test +5114,64.0,44.241077000000004,41.469276,40.13366,43.363457000000004,42.611453999999995,38.488853000000006,test +5115,46.0,36.755066,39.17109,38.785336,42.262947,52.08486,35.74153,test +5116,29.0,33.822624,35.93638,37.613243,39.015229999999995,51.338359999999994,31.791040000000002,test +5117,25.0,24.125679,31.698708,35.29368,36.171844,33.412308,27.076404999999998,test +5118,23.0,25.849089000000003,53.489326,24.408588,23.70403,58.453876,58.636993000000004,test +5119,27.0,20.307029999999997,50.80291,20.865437,24.017770000000002,52.842075,56.437675,test +5120,37.0,18.267467,45.438454,22.166775,24.008768,52.778496,49.778694,test +5121,52.0,19.214844,39.29155,21.367237,24.81149,52.672385999999996,41.316691999999996,test +5122,54.0,25.765617000000002,34.154385,23.583857000000002,27.281694,45.572975,33.970207,test +5123,45.0,32.34121,30.932194,29.310259999999996,34.216812,29.796165000000002,29.388790000000004,test +5124,56.0,43.393505,35.172546000000004,55.888847,45.088043,33.746790000000004,38.384003,test +5125,68.0,52.722153000000006,37.42901,65.05375,55.045356999999996,39.08757,37.573640000000005,test +5126,90.0,54.220226000000004,39.192535,69.88374,59.489746,36.099445,34.286453,test +5127,83.0,60.916171999999996,40.50902,69.186485,62.024840000000005,33.04367,31.062424,test +5128,87.0,69.71883000000001,41.88968,67.14753,63.15081800000001,39.57685,30.483734000000002,test +5129,58.0,63.7469,43.635212,64.84861,69.129654,58.032047,33.194122,test +5130,42.0,54.79574,85.57379,50.041709999999995,53.597519999999996,83.64149499999999,90.94751,test +5131,38.0,52.01271,83.74571999999999,44.620585999999996,54.466503,83.38031,88.14154,test +5132,32.0,54.202693999999994,78.85746,44.033943,51.248020000000004,87.31045999999999,81.287735,test +5133,31.0,44.368103000000005,74.38032,40.778725,38.01259,88.39929000000001,74.96895,test +5134,29.0,42.048473,71.60719,42.72818,35.663425,79.183044,71.22784399999999,test +5135,28.0,31.127423999999998,69.13422,41.738365,34.260483,58.736305,68.59949499999999,test +5136,33.0,27.212020000000003,35.166847,29.590233,29.848375,35.997684,35.805527000000005,test +5137,36.0,25.930418,38.339867,33.631912,35.652809999999995,49.509495,39.14954,test +5138,38.0,35.184364,41.596222,34.24859,38.5121,49.450176,42.52751,test +5139,39.0,33.029423,42.571815,32.64978,34.5895,43.121475,43.740314,test +5140,42.0,30.976336,40.901554,30.219568,28.868431,43.978424,42.321715999999995,test +5141,28.0,23.063328,38.432068,27.412616999999997,25.756573,59.78771999999999,39.822390000000006,test +5142,22.0,25.910564,37.082607,28.071965999999996,26.115064999999998,34.750029999999995,36.483723,test +5143,25.0,20.954918,35.541996000000005,23.096731,27.224648,39.758724,36.033553999999995,test +5144,32.0,20.397774,34.02595,23.768402,27.474756,35.213223,36.436127,test +5145,41.0,20.375237,33.678143,22.923784,28.41943,28.393013,37.673176,test +5146,2.0,28.931229,35.171929999999996,25.465448000000002,33.280148,29.496033,39.017326000000004,test +5147,62.0,36.29249,38.11654,30.927471,46.326809999999995,42.960125,39.53011,test +5148,65.0,61.61099599999999,35.872112,77.25683599999999,62.136345,35.929829999999995,34.723988,test +5149,85.0,66.36192,40.159878000000006,86.88333,62.45844,44.734097,36.470490000000005,test +5150,91.0,74.08221400000001,45.605526,91.7451,69.29921,43.73095,39.438829999999996,test +5151,96.0,78.22378499999999,49.69874,89.55844,73.13691,40.59695,42.28945,test +5152,109.0,61.097916000000005,51.542815999999995,88.135544,71.672386,46.76935,44.588570000000004,test +5153,108.0,71.56351,52.123634,84.394035,59.926056,67.04838000000001,46.809902,test +5154,99.0,102.21339,83.46927,100.51723,103.06296,92.479324,87.12956,test +5155,100.0,89.07994000000001,80.436134,94.87415,95.00738,76.84605,84.25717,test +5156,95.0,90.71083,73.953926,91.19708,92.0685,76.40696,77.71658000000001,test +5157,82.0,85.88914,67.200294,85.866615,87.59000999999999,82.368675,70.76767,test +5158,75.0,85.89323399999999,61.91024399999999,81.092865,82.344635,78.42012,65.31921,test +5159,65.0,72.42831,57.750004000000004,78.86145,82.64668,55.36435,61.152519999999996,test +5160,52.0,69.32158000000001,83.48389,62.362892,64.64488,84.58935,85.51651,test +5161,42.0,61.787330000000004,78.3688,58.551727,62.31892,71.6138,78.99069,test +5162,38.0,60.55073,71.67089,56.450759999999995,57.926857,64.480194,69.22109,test +5163,52.0,53.912987,65.8971,56.120224,57.10742,60.101997,60.721664000000004,test +5164,62.0,63.96989,62.17296999999999,56.461586,55.563297,52.702927,56.478172,test +5165,68.0,48.19791,60.064519999999995,54.033237,50.53946,39.983955,56.383736,test +5166,74.0,72.39158,49.48661,72.80289499999999,69.09982,51.878190000000004,46.71993,test +5167,84.0,58.67833,48.495605,74.61723,72.61692,52.4023,45.70477,test +5168,113.0,72.13426,47.362206,71.20384,76.67317,53.397884,44.967384,test +5169,116.0,74.02283,45.456177000000004,82.48007,88.61575,51.358467,44.963448,test +5170,125.0,87.5792,43.95288,90.950485,101.59079,45.453518,46.086708,test +5171,124.0,91.1156,45.005753000000006,95.18858,108.79691000000001,38.63073,48.287643,test +5172,121.0,121.21088999999999,75.73238,125.59822,136.45448000000002,74.262276,77.60828000000001,test +5173,112.0,121.672226,80.56763000000001,125.476685,131.99768,90.16462,81.56394,test +5174,95.0,126.38779,87.36519,124.10186999999999,131.49487,90.91568000000001,88.3238,test +5175,100.0,116.249146,94.604385,118.23978000000001,129.35756,87.96536,97.09645,test +5176,106.0,119.06114,100.45376,113.08353999999999,122.91653400000001,96.75646,104.69368,test +5177,123.0,103.53308,103.48615,103.74924,116.700195,122.50125,107.295105,test +5178,122.0,117.33913000000001,115.42736000000001,114.36741,123.87335,120.99191,117.90968000000001,test +5179,121.0,109.45318600000002,114.00668,107.094376,113.095634,113.77261000000001,114.67282,test +5180,108.0,105.76425,111.03436,97.39192,106.02636000000001,115.60373,111.01091000000001,test +5181,107.0,101.77818,107.48936499999999,91.27675,97.25579,116.820816,108.57368500000001,test +5182,100.0,94.72163,103.4797,88.900536,93.896904,106.46641499999998,106.97903400000001,test +5183,114.0,74.8147,98.71646,86.25344,91.42831,82.563934,104.59657,test +5184,117.0,112.40281,111.25851999999999,108.856125,112.75783,121.285645,114.66736599999999,test +5185,114.0,103.765915,104.93789,102.08169000000001,110.16025,104.6042,111.62579,test +5186,91.0,104.69537,93.109634,98.353325,105.53343000000001,103.14288,105.505264,test +5187,83.0,109.24161000000001,79.835396,92.15306,97.74920999999999,105.18681000000001,97.94636,test +5188,84.0,86.73224,69.448494,83.17036,88.56435,94.00858000000001,90.348045,test +5189,92.0,63.29910699999999,64.411514,78.24837,84.35386,63.47606,83.67627,test +5190,100.0,91.62143,103.04466,99.59486,91.756226,109.88013000000001,111.72613,test +5191,112.0,97.62621999999999,99.12257,96.167175,100.05205,107.67211999999999,104.99606999999999,test +5192,132.0,101.97447,94.40534,105.66751000000001,103.819626,91.61349,95.68915,test +5193,139.0,107.81616000000001,91.55141,111.9695,115.89001499999999,74.42528,88.61777,test +5194,128.0,104.63891600000001,92.11751,111.87651000000001,119.55103999999999,71.32982,86.73782,test +5195,122.0,122.76199,95.52096,108.93054,116.20933500000001,88.14625500000001,89.39479,test +5196,124.0,113.955444,110.78295,111.78948999999999,121.23207,103.53114000000001,108.17908,test +5197,120.0,114.69455,118.09576399999999,102.98733,116.276825,112.526436,111.89328,test +5198,120.0,104.08577,124.3315,94.88029499999999,105.67503,108.554726,116.42065,test +5199,121.0,110.579025,127.42660500000001,89.73604,104.29588000000001,101.68406999999999,120.00702,test +5200,113.0,104.35164,127.1155,81.85927,99.14863000000001,105.51751999999999,121.17706000000001,test +5201,114.0,86.30265,124.74954,77.45367399999999,92.37128,125.30086000000001,119.62823,test +5202,117.0,111.14876000000001,118.54938999999999,102.55309,110.10356000000002,114.68562,118.28528999999999,test +5203,120.0,97.77002,117.96948,99.576065,110.1857,116.777054,116.23796000000002,test +5204,116.0,109.05340600000001,117.92136,95.2786,107.634,104.97151000000001,114.0756,test +5205,109.0,109.769775,118.396454,93.05348000000001,101.14983000000001,93.6707,112.65312,test +5206,101.0,100.70535,118.535126,94.5149,98.881485,99.07726,111.9272,test +5207,108.0,90.026985,117.40083,92.6281,95.628876,125.49011000000002,111.23735,test +5208,93.0,110.14011399999998,116.409454,106.55923999999999,111.57201,117.53554,117.45453,test +5209,40.0,110.16821000000002,115.80555,101.59146,115.17681999999999,116.97306999999999,114.74722,test +5210,27.0,112.15978999999999,113.92613,97.69213,110.19193999999999,120.45001,111.16913600000001,test +5211,10.0,122.92091,110.97723,92.566895,109.52206000000001,120.94986000000002,107.67343000000001,test +5212,11.0,114.78243,107.657265,106.11538999999999,114.00745400000001,113.24483000000001,105.15336599999999,test +5213,9.0,144.846,104.93368000000001,117.89596599999999,120.82445,98.80181999999999,104.13062,test +5214,12.0,11.361633,112.21526000000001,11.946724,19.475357000000002,112.04188500000001,115.18993999999999,test +5215,14.0,10.235538499999999,108.61061000000001,13.081760000000001,27.074764000000002,112.43221000000001,107.94548,test +5216,13.0,16.087401999999997,104.83043,16.421985999999997,32.993023,104.39246999999999,99.19324,test +5217,15.0,11.934486,102.581314,14.453751,32.94634,96.69855,93.98839,test +5218,16.0,18.402454000000002,103.20283,13.897132999999998,25.006203,99.17045999999999,94.99356,test +5219,16.0,15.997368,106.73583,14.456547,24.330105,114.48298999999999,100.71089,test +5220,22.0,17.414276,30.168144,17.175644000000002,15.9971695,28.856834000000003,27.892196999999996,test +5221,20.0,13.617962,31.914603999999997,16.341751000000002,15.37566,32.5195,25.489729999999998,test +5222,12.0,11.332027,33.980568,17.823432999999998,18.679157,29.003272999999997,23.169456,test +5223,12.0,11.848091,32.96,17.485996,16.483994,23.086739,18.312294,test +5224,16.0,23.048569,31.75856,17.967185999999998,17.526535,25.993095,13.745384,test +5225,27.0,20.073051,36.958290000000005,22.81044,24.92207,45.573055,15.72596,test +5226,25.0,36.180428000000006,17.352234,36.600777,36.747757,16.796318,14.483688,test +5227,48.0,41.665833,18.989975,36.525642,38.195984,22.301567000000002,16.406204000000002,test +5228,31.0,40.50928,22.170052,35.201653,34.944786,21.566451999999998,17.792114,test +5229,24.0,30.30527,23.990562,34.137993,31.283361,18.5999,16.526283,test +5230,17.0,31.607329999999997,25.171654,30.689215,27.510208000000002,22.665894,13.806732,test +5231,17.0,1.1386833,29.045174,25.397839,24.132847,39.857018,13.050094999999999,test +5232,19.0,16.588406,27.770226,21.402222000000002,15.959601999999999,20.224655,20.249813,test +5233,22.0,21.162281,26.83942,28.903893,23.933739000000003,26.059547,19.564083,test +5234,34.0,27.932087,26.68354,39.46293,30.837852,20.289776,18.904366,test +5235,41.0,40.912464,26.993109999999998,51.680424,48.96045,10.477530999999999,18.000095,test +5236,52.0,49.087727,28.74015,59.26951999999999,53.496097999999996,10.811913,18.146304999999998,test +5237,60.0,65.09286,33.157215,61.313465,56.67275,30.007557000000002,20.992466,test +5238,74.0,58.847313,52.819559999999996,66.61296,65.16186,51.439842,53.79079399999999,test +5239,73.0,62.585716000000005,54.325798,65.82711,64.86889000000001,55.038543999999995,50.897057000000004,test +5240,75.0,71.091995,54.359157999999994,65.997116,64.088036,52.221138,47.221184,test +5241,94.0,60.361454,52.184803,61.19445,63.229668000000004,44.989662,43.08258,test +5242,95.0,63.626762,48.288887,60.13267,61.1119,39.276092999999996,38.6099,test +5243,92.0,48.425987,44.195809999999994,57.391130000000004,54.67199,40.338203,34.167915,test +5244,93.0,91.246826,18.977394,94.2975,92.39305,19.992079999999998,18.196342,test +5245,95.0,80.70474,20.553383,88.96967,90.22038,28.268183,20.904314000000003,test +5246,92.0,71.07558399999999,24.888859,82.1951,84.44707,28.334540000000004,24.560627,test +5247,83.0,66.700294,29.523113000000002,77.83800500000001,82.1207,26.158173,28.293359999999996,test +5248,81.0,60.430096,32.727676,76.328926,76.440605,31.499908,31.337815999999997,test +5249,78.0,50.04719,34.455086,74.11008000000001,71.68179,48.943923999999996,33.167656,test +5250,77.0,81.0285,56.251118000000005,78.96838000000001,83.49483000000001,55.17756,62.6278,test +5251,73.0,76.581436,56.564147999999996,79.10135,84.513824,59.574913,60.392166,test +5252,65.0,78.178955,54.66809,77.9863,83.25667,63.592125,54.710922,test +5253,63.0,67.414276,52.622654000000004,75.24724,80.32519,62.574448,49.17224,test +5254,60.0,78.905396,51.625328,73.34979,76.11636,54.466125,46.241690000000006,test +5255,72.0,58.730526,51.186714,75.96178,68.7948,41.92415,45.736813,test +5256,80.0,74.412575,79.56591999999999,73.273094,79.63933,87.05121,87.88356999999999,test +5257,75.0,73.54825,75.56618,81.0552,89.79791999999999,77.96271999999999,82.53990999999999,test +5258,83.0,83.59161,70.66464,93.07728,98.29484599999999,77.6873,74.12069,test +5259,93.0,104.05999,67.54614000000001,97.213356,105.45689399999999,75.903,67.2173,test +5260,100.0,114.00228999999999,66.31127,93.80888,112.71546000000001,61.53611,63.778755000000004,test +5261,102.0,129.05867,64.88739,91.05263000000001,115.5435,33.600418,62.31694,test +5262,107.0,103.50177,68.406006,99.13561999999999,101.64814,75.860886,71.907166,test +5263,104.0,82.59875500000001,63.46605699999999,96.29433,101.90451,64.40836,68.5907,test +5264,102.0,86.029076,56.42983,89.83665500000001,99.81998399999999,65.05022,62.11993399999999,test +5265,70.0,77.58995,50.018615999999994,83.14929000000001,95.92993,68.390366,55.699028000000006,test +5266,7.0,66.09723000000001,46.355446,75.09835,88.09965,61.424255,51.77608,test +5267,4.0,56.114259999999994,45.920784000000005,72.36673,83.45691,39.41622,50.696884000000004,test +5268,5.0,4.592162999999999,66.56579,0.0,4.640564,72.50669,72.704704,test +5269,5.0,4.5372314000000005,67.27594,1.0402603000000001,5.0844994,75.03612,68.04401999999999,test +5270,6.0,3.9096565,68.06389,3.4701958,10.758125,58.977226,62.846059999999994,test +5271,8.0,8.86536,69.74486999999999,4.2105217,14.609863,42.342273999999996,60.695637,test +5272,10.0,12.620438,72.505264,3.2308272999999996,11.563995,45.96685,62.72586,test +5273,8.0,4.6294403,75.51215,0.0,3.9943047,76.19655999999999,66.89353,test +5274,7.0,4.7975426,100.214264,3.8141822999999997,6.042286,100.863495,103.34331,test +5275,7.0,0.0,100.45313,1.7605591,6.847786,104.3124,103.65831,test +5276,7.0,0.0,99.017204,1.6576958,5.855392500000001,110.27613000000001,102.5244,test +5277,6.0,0.0,96.69559,1.9341544999999998,5.455368,111.68278500000001,101.437096,test +5278,7.0,0.0,93.89811999999999,5.6327133,8.248077,103.27704,100.525986,test +5279,8.0,2.217102,90.65283000000001,11.921547,13.296791,86.44055,98.64625500000001,test +5280,8.0,17.057594,1.9470901000000003,11.372555,20.469788,0.17401886,6.319351,test +5281,7.0,25.403091,5.608021,16.743595000000003,32.27009,7.5110434999999995,8.299713,test +5282,8.0,26.088669,9.302082,26.493244,48.407166,3.2954559999999997,10.075306,test +5283,7.0,39.08672,8.980705,35.47136,56.12968000000001,0.0,8.5408325,test +5284,11.0,58.13588000000001,7.553116,32.60833,70.03971999999999,0.0,5.851261,test +5285,13.0,48.73812,12.161880499999999,31.153791,68.91471,15.46357,7.608673,test +5286,11.0,8.919716000000001,15.589217999999999,13.046547,11.818569,12.840424,13.711661999999999,test +5287,11.0,7.150592999999999,16.692856,14.6522255,12.8953705,18.028446,14.676956,test +5288,8.0,16.616737,18.5598,14.655624,14.241341,17.79435,15.141967999999999,test +5289,8.0,12.3942795,19.445522,12.705273,13.178066000000001,15.636401999999999,14.762367000000001,test +5290,9.0,6.572937,20.204609,14.470631,16.50964,19.057934,14.729004000000002,test +5291,10.0,9.698601,23.308773000000002,14.194859,16.76295,32.717106,16.612423,test +5292,12.0,14.704735000000001,10.354282000000001,11.823185,9.441376,7.678215,8.130436,test +5293,18.0,14.598572,9.14172,16.969128,17.549896,11.607056,6.8844449999999995,test +5294,16.0,26.718842,9.641888,17.950397,23.595047,5.8850136,5.929500599999999,test +5295,15.0,27.195469,11.741261,16.405487,23.46624,0.0,5.3796577,test +5296,13.0,21.117908,16.35331,11.977337,18.634285000000002,3.8988379999999996,7.136493700000001,test +5297,8.0,12.044079,24.21022,7.361347,14.075207,26.811336999999998,13.094733999999999,test +5298,8.0,6.790619,10.515938,6.574707000000001,8.503150999999999,4.7065964000000005,3.5925483999999996,test +5299,10.0,2.61837,12.20871,3.4325066,7.153202,9.364727,4.124473600000001,test +5300,12.0,0.0,13.895821,5.907188400000001,6.4218519999999994,6.2965089999999995,4.6694830000000005,test +5301,22.0,0.9749985000000001,13.873142000000001,6.4124300000000005,7.4907875,0.32342909999999997,3.1133957000000003,test +5302,19.0,12.15276,12.684341,8.01326,12.441872,1.0169945,0.0,test +5303,21.0,24.134132,12.564304,12.5161705,24.633533,14.439373000000002,0.0,test +5304,43.0,29.022861,10.508968,35.005157000000004,32.052574,6.7045727,8.882723,test +5305,39.0,39.808234999999996,10.873261999999999,52.0046,52.238613,11.767424,10.342482,test +5306,32.0,41.21518,13.890908999999999,63.39451,57.592259999999996,11.578615,13.295404000000001,test +5307,29.0,49.627098,17.57672,64.78468000000001,59.857783999999995,10.653889,16.655251999999997,test +5308,34.0,60.368214,20.163778,62.281116000000004,60.9489,15.890376999999999,18.877996,test +5309,41.0,52.64443000000001,21.221115,60.869730000000004,66.044525,30.134047999999996,18.888416,test +5310,36.0,46.870377000000005,14.0629635,43.660779999999995,40.53662,14.411268,13.780194,test +5311,36.0,49.948006,16.879278,45.534515,49.57219,20.907238,15.854807000000001,test +5312,39.0,53.835915,20.213255,44.176429999999996,49.721737,18.588413,16.780732999999998,test +5313,46.0,43.338055,22.857412,41.271370000000005,43.744834999999995,14.925622,16.309433,test +5314,42.0,47.41105,24.28719,44.02975,46.249825,20.015522,15.637757999999998,test +5315,65.0,33.624863,24.76016,42.1684,43.763645000000004,37.51934,16.320988,test +5316,83.0,69.74195,26.154215,66.67291,71.24651999999999,20.971617000000002,26.064323,test +5317,81.0,64.78737,27.579407,62.898876,71.49031,29.52794,26.692970000000003,test +5318,83.0,68.0645,29.12476,62.315380000000005,70.38118,25.009464,27.498797999999997,test +5319,70.0,53.837669999999996,30.841305,61.554534999999994,69.183014,17.361158,29.420544,test +5320,54.0,48.737995,32.349476,60.16206999999999,66.05386999999999,20.04617,31.979716999999997,test +5321,48.0,34.761375,32.963467,61.799130000000005,62.782695999999994,38.39921,33.449295,test +5322,55.0,52.16985,25.158657,52.19464,47.076879999999996,27.615026,25.926945,test +5323,52.0,42.333622,23.610457999999998,46.75028,47.184104999999995,26.755940000000002,24.561682,test +5324,39.0,52.464714,21.394922,46.81511,47.7449,28.172821000000003,21.977158,test +5325,48.0,32.181465,19.492432,45.429787,48.71158,28.470036,19.417288,test +5326,68.0,43.600594,18.412461999999998,47.414124,49.765392,24.215126,17.836391,test +5327,69.0,43.942642,18.008595,62.38035,56.553043,15.168497,17.384016,test +5328,62.0,73.314026,39.609455,79.24491,70.88318000000001,43.279213,42.954033,test +5329,75.0,79.08420600000001,37.64717,92.80858,81.68814,40.476867999999996,41.435547,test +5330,88.0,88.97371,34.204063,98.61532,84.4381,40.715786,37.469367999999996,test +5331,27.0,93.29489000000001,30.647315999999996,96.22737,84.22977,39.89457,33.35791,test +5332,17.0,111.86093999999999,27.843467999999998,92.97345,81.85409,33.43289,30.739272999999997,test +5333,11.0,87.92116,25.88137,85.71405,80.57538000000001,20.7604,29.660725,test +5334,13.0,14.11607,58.912838,6.670200299999999,13.772369,61.371056,58.49851999999999,test +5335,10.0,9.923042,55.90035,10.939541,14.594176999999998,55.8283,54.366837,test +5336,11.0,18.185085,51.220566,11.617001,14.013851,53.604218,48.536995000000005,test +5337,12.0,12.94791,47.06446,9.11919,11.047382,52.880928000000004,44.25019,test +5338,11.0,8.856494999999999,44.64725,8.238647,14.107075,49.667587,42.936394,test +5339,16.0,10.222561,43.71544,10.162003,14.144413,41.731316,43.52621,test +5340,22.0,18.1978,48.75817,17.871948,21.007317,47.260940000000005,50.536840000000005,test +5341,19.0,20.047732999999997,49.495754,22.533798,28.418515999999997,50.055267,51.590675,test +5342,25.0,36.1978,49.44628,23.740116,35.25438,53.550964,51.936756,test +5343,22.0,31.037159000000003,48.512226,20.274082,33.558594,55.478671999999996,51.729275,test +5344,11.0,26.953053999999998,47.06135,16.661827,29.406813,54.282852,50.945602,test +5345,9.0,14.640209,45.735054,11.921383,24.660513,50.32492,49.464386,test +5346,11.0,6.8676147,14.665211,6.9854927,5.1147575,13.935076,15.27165,test +5347,11.0,4.390708999999999,15.021713,5.5674589999999995,6.5621796,17.773611,12.206408,test +5348,11.0,0.0,16.32385,6.4213448,5.529888,12.50215,9.359276,test +5349,21.0,0.0,17.276058,6.9025419999999995,6.241184,6.627575,7.539146400000001,test +5350,29.0,4.74831,19.031914,8.12167,8.554703,12.496214,8.909763,test +5351,30.0,10.710114,23.978327,10.699635,15.232159,35.447514,15.219364,test +5352,39.0,33.869392,22.111572,39.662243,39.5072,17.043531,17.565664,test +5353,46.0,44.651863,26.308933000000003,53.90961,53.47639,24.522074,21.808687,test +5354,2.0,50.222572,30.828028000000003,63.608265,59.25386999999999,19.824604,25.313446,test +5355,67.0,62.24510600000001,32.620045000000005,67.344826,63.525009999999995,13.910535999999999,25.24653,test +5356,71.0,79.84443,31.660690000000002,67.13593,74.3126,21.150682,22.244101999999998,test +5357,97.0,80.75033,30.706484000000003,62.897026000000004,79.727135,46.52733,19.816502,test +5358,99.0,113.69475,24.780441,102.73005,98.06775999999999,23.762589000000002,20.956264,test +5359,97.0,113.83658,25.0478,99.51638,95.47793,27.876076,20.363934,test +5360,97.0,109.63197,26.46167,94.00888,91.949554,24.277548,20.067219,test +5361,87.0,97.43220500000001,28.369694,88.34368,88.27431,20.620953,20.451810000000002,test +5362,34.0,87.22200000000001,30.181194,88.897736,88.77577,26.461890999999998,21.698526,test +5363,42.0,62.59084300000001,31.630703000000004,80.82308,85.6268,44.694916,23.502979999999997,test +5364,54.0,41.686409999999995,32.67751,43.553467,45.142456,27.296318,29.440575,test +5365,55.0,43.045444,34.98957,44.201465999999996,48.854965,36.354607,35.302685,test +5366,64.0,56.1883,36.431538,44.723286,49.045173999999996,40.795864,39.560207,test +5367,53.0,44.242104,35.934883,44.281246,48.77831,39.386127,38.866116,test +5368,41.0,44.26546,33.723278,41.142662,46.580418,35.841454,33.33767,test +5369,45.0,27.323202000000002,31.159994,38.7069,44.4759,35.482655,26.520659999999996,test +5370,44.0,52.12172,67.13186999999999,49.41024,47.874783,67.13074,68.42023499999999,test +5371,40.0,47.892113,61.697745999999995,45.312897,47.990204,68.84854,64.48169,test +5372,51.0,53.331203,54.430035,44.072163,48.208736,70.26633000000001,57.293130000000005,test +5373,56.0,36.50752,49.688293,53.51096999999999,49.627907,66.76531,50.68581,test +5374,72.0,64.42823,48.177433,54.77949,57.361748,55.323195999999996,46.039609999999996,test +5375,86.0,61.307140000000004,46.991116,68.20725999999999,66.10248,37.909912,41.936314,test +5376,100.0,94.572754,71.49779000000001,97.13409399999999,93.984085,72.59569,76.83885,test +5377,89.0,116.428604,67.24045600000001,104.97006,101.92035,67.97327,72.213394,test +5378,104.0,118.50253000000001,61.060593000000004,109.83757,107.7968,73.09736,64.46763,test +5379,121.0,119.50716399999999,55.44602,109.92121000000002,109.4848,76.584076,58.131393,test +5380,124.0,124.76398,51.611996000000005,110.467445,108.721695,66.42284000000001,55.294052,test +5381,119.0,102.2976,49.212740000000004,106.44015,104.416916,40.906555,54.57659,test +5382,127.0,127.02198999999999,42.41367,117.88006599999999,117.96396000000001,44.18683,44.089462,test +5383,133.0,122.89456000000001,37.808628000000006,111.3336,115.10365,45.014435,35.764559999999996,test +5384,126.0,111.74493400000001,32.453340000000004,103.28635,108.218346,34.864666,26.411236,test +5385,123.0,105.36353999999999,28.773088,99.14361600000001,102.54517,22.277748000000003,20.022963,test +5386,104.0,95.21478,29.103283,97.28743,103.042694,18.913078,19.000038,test +5387,89.0,70.96356999999999,34.031998,91.70845,99.94905,30.354297999999996,22.829365,test +5388,88.0,81.41196,56.773796,85.574425,88.226135,54.46641999999999,56.25284,test +5389,92.0,90.88643,58.714462,82.86832,87.84571,57.898906999999994,54.75480699999999,test +5390,95.0,94.15496999999999,59.679134,79.31258000000001,88.20543,45.517887,52.966840000000005,test +5391,81.0,101.00625,60.054030000000004,77.11428000000001,87.449776,34.295853,52.893119999999996,test +5392,54.0,94.03713,60.547375,75.947784,84.79613,42.488316,55.231167000000006,test +5393,53.0,66.976,61.49166999999999,78.158585,84.15026,73.96631,58.760383999999995,test +5394,64.0,54.526559999999996,109.22278,59.210587,60.830535999999995,117.49856000000001,115.81265,test +5395,75.0,53.122032,105.79558,54.1016,59.53708,106.39842,110.64957,test +5396,81.0,63.44594,98.95721400000001,50.581196000000006,57.499165000000005,107.74051999999999,102.53914,test +5397,87.0,48.006145000000004,91.50363,59.174397,54.971664000000004,108.606575,95.49201,test +5398,108.0,71.8587,85.039,62.506718000000006,58.339496999999994,93.59914,90.984375,test +5399,109.0,65.5863,79.60565,77.3597,66.19346,59.386345,87.66356999999999,test +5400,104.0,109.84189599999999,106.98723000000001,113.78537,116.415726,117.13666,113.40053999999999,test +5401,107.0,123.1744,102.12649499999999,120.43638,116.90711,102.93205,109.60171499999998,test +5402,122.0,123.91936499999998,94.05748,124.258705,123.915474,104.20900999999999,100.9939,test +5403,123.0,125.00272,85.50849000000001,124.24356,120.6688,108.03641999999999,90.95753,test +5404,98.0,131.01843,78.60599,124.36859,118.99543,96.4915,82.75841,test +5405,99.0,108.89136,74.151505,119.977005,115.18513999999999,63.144946999999995,77.973465,test +5406,137.0,105.04274,75.46615600000001,103.68334,107.96417,70.56195,76.434875,test +5407,165.0,111.80145,74.55006,101.35925999999999,105.9536,73.44025,74.33697,test +5408,160.0,104.82038,74.02767,96.48192,102.29892,67.98569,72.84962,test +5409,148.0,101.54858399999999,74.35374499999999,93.50641,98.59369000000001,62.59301800000001,72.830956,test +5410,136.0,100.75003000000001,76.07866,94.39488,99.75516999999999,67.54974,74.41976,test +5411,132.0,83.311745,79.29075,89.66984000000001,98.0728,86.068954,76.91351,test +5412,134.0,118.88716000000001,93.560295,123.5049,115.81894,86.58714,91.66017,test +5413,121.0,122.31415600000001,100.619644,115.91471999999999,110.23212,96.94866999999999,96.869576,test +5414,118.0,115.02762,106.7745,111.30908000000001,108.611145,90.724884,102.88338,test +5415,110.0,124.5916,110.216324,110.77006499999999,106.76756,83.2676,107.83861,test +5416,111.0,122.212296,111.104004,106.9243,100.95192,93.25379000000001,110.302605,test +5417,105.0,96.16608000000001,110.94046999999999,103.315765,98.45863,126.054924,109.93118999999999,test +5418,101.0,108.45981,116.41807,109.30651999999999,111.47867,115.50723,119.31955,test +5419,96.0,106.34883,114.88308,103.16069,111.59803000000001,109.223656,117.78296999999999,test +5420,96.0,118.7974,112.42491000000001,96.8978,107.77125500000001,112.50307,115.19203,test +5421,93.0,117.22793999999999,110.02988,100.18229000000001,102.18555,116.87633999999998,112.58541000000001,test +5422,152.0,123.77338,107.76787,99.2924,97.53693,112.00461000000001,110.18314,test +5423,173.0,107.03838999999999,105.10911999999999,111.88063000000001,100.50604,94.882706,107.60215,test +5424,175.0,192.13235,134.73645,164.0823,159.84471000000002,140.92793,138.67366,test +5425,163.0,184.16458,133.02492,168.72409,156.73425,129.90971000000002,139.63101,test +5426,60.0,187.95145,124.3415,170.42567,163.46277,130.2161,130.85998999999998,test +5427,36.0,182.85428000000002,110.29556000000001,170.1067,160.52121,129.47083,114.979095,test +5428,18.0,185.8415,94.67757399999999,170.6607,160.90948,112.95186000000001,98.31149,test +5429,19.0,151.9772,81.95095,167.42184,156.2745,77.71469,87.243935,test +5430,26.0,20.95494,98.96387,18.859543,18.813797,100.03649,100.75945,test +5431,40.0,16.466473,98.695366,15.052539999999999,17.706112,102.52175,99.09013,test +5432,41.0,23.541615,99.32234,15.49099,16.577057,97.23005,97.06595,test +5433,34.0,18.819042,100.74691,12.7176895,10.87001,95.41318000000001,95.84088,test +5434,35.0,17.62225,103.07993,13.592438000000001,13.941624,107.97891000000001,96.46141,test +5435,27.0,16.579678,106.332726,13.667561,13.924373999999998,135.39801,99.04584,test +5436,27.0,25.432331,95.10538000000001,23.510319,26.997835,93.83414,93.35483599999999,test +5437,31.0,21.344517,99.651825,26.094520000000003,30.908659999999998,99.67577,96.81189,test +5438,28.0,30.081232,106.09846,25.902801999999998,32.034172,96.578384,102.755775,test +5439,24.0,22.925243,111.982666,22.656021,27.433221999999997,93.19551,108.61927,test +5440,15.0,20.191517,116.00198,19.012943,21.551174,100.596405,112.378456,test +5441,12.0,10.309124,118.388725,14.497013,17.533981,122.25798,113.609344,test +5442,8.0,12.666328,41.9616,7.9849358,8.70462,33.485428000000006,44.630309999999994,test +5443,8.0,8.396397,48.759617,4.0718307000000005,6.0518684,41.511078000000005,52.873245,test +5444,8.0,2.3516235,59.367203,4.259704599999999,5.4669037000000005,40.435463,67.969574,test +5445,9.0,0.813488,66.58375500000001,5.955143,6.1103705999999995,37.136803,82.63288,test +5446,12.0,6.341133,69.55937,7.2874603,8.576427,47.23302,91.99,test +5447,16.0,11.421989,73.5569,10.6563835,14.984627,80.71866999999999,96.03896,test +5448,17.0,18.601189,35.30558,17.958046,20.087803,35.817023999999996,35.0195,test +5449,16.0,23.176535,37.090720000000005,21.692635,22.838953,39.309475,38.84274,test +5450,18.0,19.642882999999998,38.58313,24.666098,25.783182,34.096306,41.878815,test +5451,19.0,25.875898,37.400290000000005,24.925522,27.639017,25.930801000000002,41.085865000000005,test +5452,23.0,25.422817000000002,35.458115,16.643002,26.498565999999997,26.077804999999998,37.17839,test +5453,28.0,25.153848999999997,37.2731,14.209347,27.217175,41.776745,33.963997,test +5454,31.0,18.62452,31.050209000000002,21.696228,28.46939,26.583244,27.133125,test +5455,26.0,11.452286,29.473571999999997,17.489279999999997,26.652262,35.683567,24.648994000000002,test +5456,25.0,19.517124,30.46811,17.703892,20.179173000000002,32.363743,22.285529999999998,test +5457,19.0,12.6550255,33.38765,15.125248000000001,14.791129999999999,25.548911999999998,21.284042000000003,test +5458,19.0,10.323841,38.90475,16.3805,17.622608,31.572144,24.374878,test +5459,17.0,8.456505,47.904064,15.651928,17.130901,59.613216,33.236736,test +5460,18.0,17.025543,18.397517999999998,14.0973625,13.894264000000002,10.298447,12.305237,test +5461,30.0,14.598823999999999,23.60963,15.492237,20.43956,21.015048999999998,17.253304,test +5462,39.0,20.130413,29.518925,15.539688,23.831135,17.21482,22.128529,test +5463,27.0,16.847107,32.063953000000005,12.562286,21.273117000000003,8.2949295,23.365849,test +5464,26.0,14.853806,31.222225,9.261398,15.83046,11.59581,21.802029,test +5465,15.0,7.612075999999999,30.594162,4.8804398,11.485252000000001,37.171787,21.597305,test +5466,11.0,10.283871000000001,27.584071999999995,12.610813,9.490283999999999,22.310024,21.696709,test +5467,9.0,7.248123,32.138252,9.639915,9.043003,31.809359000000004,27.505391999999997,test +5468,12.0,1.0561905,40.48012,9.7368965,8.154152,29.280191,34.74371,test +5469,15.0,0.8868140999999999,47.66957,12.629368,8.735973,23.598651999999998,41.004215,test +5470,20.0,8.258087,50.20477,13.122334,11.527546000000001,28.620455,43.93931,test +5471,37.0,14.395042000000002,48.265995000000004,16.75724,18.387253,50.835075,42.49582,test +5472,41.0,47.635372,17.908203,46.11299,51.132023,17.91846,21.756489000000002,test +5473,45.0,59.225513,22.025488,62.094963,64.11377,25.58315,27.667109999999997,test +5474,47.0,62.643480000000004,27.41068,72.52353000000001,68.83285500000001,23.050514,32.969994,test +5475,50.0,73.66543,31.614384,76.33938,71.48686,18.572058,34.82962,test +5476,55.0,93.729614,33.623653000000004,77.836205,81.40269,24.407475,33.186394,test +5477,55.0,92.06285,34.18199,73.258545,87.04805999999999,45.822646999999996,30.510310999999998,test +5478,60.0,66.37571,30.079454,62.981674,56.858665,21.191952,26.445428999999997,test +5479,81.0,69.58156,30.674845,55.966330000000006,60.29119,33.749485,27.432987,test +5480,89.0,83.42209,32.985756,56.044518000000004,59.573505000000004,28.740444,29.858240000000002,test +5481,83.0,63.92951600000001,36.21868,55.078285,57.63459399999999,18.479315,33.959835,test +5482,72.0,71.443115,39.33612,62.071392,63.830975,21.779404,38.361,test +5483,61.0,46.823048,41.578125,53.828630000000004,63.936009999999996,47.605865,40.74933,test +5484,60.0,65.25035,15.784054000000001,62.214659999999995,61.445319999999995,16.120007,16.30997,test +5485,65.0,64.27027,17.567034,59.41203,63.43478399999999,19.47774,17.964544,test +5486,71.0,78.401085,19.765064000000002,59.797309999999996,64.26290999999999,17.783606,19.86212,test +5487,81.0,69.68847,21.61121,61.027573,64.05572,16.084357999999998,21.218225,test +5488,89.0,66.70953,22.862743,57.7714,61.149806999999996,20.175203,21.725285,test +5489,41.0,49.4876,23.761685999999997,57.115469999999995,57.973774,31.345306,21.642554999999998,test +5490,32.0,34.376728,45.58178,34.20279,40.450558,48.615425,48.526333,test +5491,31.0,26.771835,44.127792,24.802143,39.140427,46.878582,46.871722999999996,test +5492,37.0,27.009888,41.16017,22.843494,36.084891999999996,47.624687,43.11464,test +5493,48.0,18.176472,38.201054,26.177326,37.21841,47.155388,39.397926,test +5494,86.0,29.825857,35.94115,26.000134,37.81203,41.258070000000004,36.93588,test +5495,91.0,36.45626,34.04422,29.558695,43.00306,29.292528000000004,35.427409999999995,test +5496,98.0,83.29561,71.25249000000001,99.07545,81.24022,78.47532,74.20538,test +5497,99.0,81.166534,68.7572,103.82565,91.342476,74.117134,71.26186,test +5498,99.0,78.33097,63.986115000000005,106.89681999999999,92.90504,74.03988000000001,63.838294999999995,test +5499,92.0,76.20101,58.390395999999996,106.64873500000002,91.81691,72.89560999999999,55.640823,test +5500,99.0,88.17591999999999,52.65158,107.89401000000001,90.78041999999999,63.568535,49.682957,test +5501,107.0,64.538376,46.90317,103.02571,94.2314,44.1342,46.670315,test +5502,100.0,111.86556999999999,70.94700999999999,116.52883999999999,107.76445,75.1409,71.82543000000001,test +5503,100.0,100.117874,62.58526,111.43808999999999,104.17119,59.13041,60.85293000000001,test +5504,102.0,88.53412,50.984196000000004,107.54591,100.016235,57.20745,45.720932,test +5505,90.0,70.05624399999999,41.73737,109.14556,100.39875,60.238130000000005,34.002853,test +5506,74.0,69.86831,38.321228000000005,101.852264,97.72912600000001,53.586783999999994,30.452534000000004,test +5507,52.0,89.08754,40.178093,97.943214,95.93675,30.591232,34.24945,test +5508,12.0,29.067165000000003,48.923817,35.792908000000004,53.35605,49.382020000000004,49.14229,test +5509,8.0,36.250840000000004,54.068732999999995,29.179012,53.96595799999999,56.267452,50.45795,test +5510,12.0,27.485428000000002,58.45259,25.690594,46.6583,51.203995,53.164265,test +5511,14.0,26.295849,60.902443000000005,21.765929999999997,40.026703000000005,48.42157,56.435238,test +5512,10.0,15.847179,61.577137,16.93219,36.159637,61.75086999999999,58.42099,test +5513,8.0,8.136662,61.471424,14.205502,33.69234,91.897385,57.531517,test +5514,8.0,5.2188644,86.602295,4.809993700000001,2.359375,78.84116,93.02006999999999,test +5515,6.0,0.066043854,85.00046,6.3865623,3.8140144,84.719185,91.93406999999999,test +5516,3.0,0.0,81.72055,9.153553,3.9652519999999996,87.386566,87.98445,test +5517,3.0,4.5325394,77.96425,8.310532,6.7353363,81.29271,82.994736,test +5518,6.0,10.242722,74.68724,11.849548,9.681595,66.98558,78.47922,test +5519,8.0,17.134106,72.30253,17.305538000000002,20.518822,51.529556,74.99016999999999,test +5520,10.0,10.880562,89.53556,11.368114,9.942707,92.31019599999999,93.24944,test +5521,7.0,8.790169,87.09623,13.111988,14.305598999999999,83.6844,90.32412,test +5522,10.0,14.736633,84.08426999999999,13.151832999999998,16.210575,85.872475,85.38074499999999,test +5523,15.0,10.1100235,81.26793,10.126911,16.451420000000002,89.63628,80.171936,test +5524,14.0,15.788246,78.70721400000001,10.035553,16.483139,83.57840999999999,76.1898,test +5525,14.0,13.953586999999999,76.137924,10.300139999999999,17.151336999999998,64.438774,74.05689,test +5526,13.0,14.230057,14.6668625,13.257060999999998,15.456303,13.130203,13.507957000000001,test +5527,14.0,19.795868,15.249538000000001,14.927382999999999,14.739147,17.052845,10.995598,test +5528,12.0,16.15731,17.213482,12.380447,12.006003999999999,13.814663000000001,9.296837,test +5529,10.0,13.216548999999999,18.840801000000003,14.026279,15.342648,9.130123,7.7224770000000005,test +5530,11.0,14.127701,21.497326,13.558743,15.186085,13.601913,7.803875,test +5531,12.0,21.37933,28.078459999999996,14.347542,16.279957,33.31199,12.034382,test +5532,16.0,13.770321,12.958256,15.203056,18.817595999999998,7.210884,10.786736,test +5533,22.0,15.855473000000002,20.35114,16.041373999999998,21.266605,14.079689000000002,16.070953,test +5534,16.0,18.668728,30.279503000000002,13.540138,19.136505,15.353195000000001,23.483356,test +5535,10.0,15.115654000000001,38.20128,9.666527,15.15131,17.484558,29.845786999999998,test +5536,7.0,9.000114,42.594409999999996,5.265747,10.875003999999999,29.703812,33.581707,test +5537,5.0,4.840145,45.2109,1.4490738,8.048374,54.898033,35.204215999999995,test +5538,6.0,0.61984634,18.535763,1.4463005,1.4373931999999998,12.573532,13.057857499999999,test +5539,6.0,0.0,19.292084,2.7816467,4.546089,18.000335999999997,12.917175,test +5540,7.0,0.0,21.449379999999998,5.775104499999999,4.9634056,14.555042000000002,12.973202,test +5541,6.0,0.14561081,23.394787,4.7624664,6.222126,8.930889,12.567684,test +5542,2.0,5.4190483,24.68497,8.115944,10.347012,12.028244,11.820965,test +5543,10.0,12.155434,26.152714000000003,13.433113,20.513569,29.382624,11.495377000000001,test +5544,13.0,13.041473,15.027154999999999,12.294285,18.151653,9.979115,12.81658,test +5545,17.0,9.9314575,14.663799,13.117229,19.491196,15.755382999999998,12.943045,test +5546,18.0,15.385662,14.422359,13.223923000000001,19.483921,14.87994,12.906677,test +5547,14.0,12.506958000000001,13.544757999999998,9.928051,18.542427,11.179416999999999,12.384542,test +5548,14.0,16.09129,12.258089,9.080746000000001,16.317626999999998,12.105186,11.451965,test +5549,16.0,15.848846,11.6514435,9.518272,15.978916,22.15577,10.529434,test +5550,15.0,9.892521,12.049259,14.097462,14.659195,9.195205999999999,12.116709,test +5551,13.0,15.02084,13.429085,12.310310000000001,12.997772,12.812588,12.391755999999999,test +5552,12.0,11.551876,16.71341,9.128841,9.777592,11.477518,12.815017999999998,test +5553,11.0,11.049675,20.031305,10.850922,12.899405999999999,11.004686,13.861680999999999,test +5554,10.0,11.834014999999999,22.128548000000002,9.990608,12.359375,18.614992,15.917964999999999,test +5555,13.0,15.462753,23.054049,10.658417,12.908157000000001,36.1326,18.727435999999997,test +5556,16.0,11.821201,10.623452,15.187060999999998,15.559113,8.030391,5.2687263,test +5557,18.0,13.827572,12.233488000000001,13.099274000000001,16.863972,13.84554,6.765047,test +5558,17.0,14.035297,15.876076999999999,9.987331,13.854485,13.713372,8.95434,test +5559,14.0,12.324875,20.815737,6.131210299999999,9.121212,13.291656,12.149125999999999,test +5560,7.0,5.150821700000001,25.86225,1.3796386999999999,4.422966000000001,19.716396,16.194542000000002,test +5561,7.0,0.0,29.771653999999998,0.0,1.5484619,34.88002,20.117714000000003,test +5562,7.0,3.6796875,16.377817,2.6197852999999998,0.0,16.688253,14.654447,test +5563,6.0,0.0,17.582457,0.5478096,0.54332733,21.82455,16.144676,test +5564,7.0,0.0,18.677048000000003,4.431698,0.989624,19.020319,17.63234,test +5565,7.0,3.4267654000000003,19.367414,4.3447455999999995,2.2927513,15.263423999999999,18.636902,test +5566,10.0,6.850780499999999,19.473606,6.7767906,7.654461,18.794952,18.807182,test +5567,17.0,13.716148,19.007462,14.012791,16.89198,31.838435999999998,18.107729,test +5568,29.0,23.341772,10.930705999999999,23.960003,24.356613,10.279122000000001,11.234919999999999,test +5569,27.0,14.339007999999998,11.770239,24.003994,28.180025,12.580198,11.58205,test +5570,18.0,18.19655,12.435476,25.536077,29.357174,14.795803,12.021728999999999,test +5571,21.0,18.260555,12.390613,17.775585,31.40281,15.010675,12.114941,test +5572,33.0,15.912621,11.634871,16.012660999999998,31.598074,12.71209,11.692126,test +5573,34.0,24.173614999999998,10.711815,14.872742,38.007214000000005,9.247221000000001,11.002594,test +5574,58.0,20.710264000000002,12.204774,31.714582,29.243525,12.098636,12.105829,test +5575,50.0,23.75029,11.529494,27.880053000000004,27.03075,12.107467,11.22002,test +5576,61.0,10.803345,10.53863,22.638721,17.613028,10.2432785,9.996051,test +5577,69.0,7.354228999999999,9.610794,27.124863,18.029398,8.444105,8.901218,test +5578,87.0,3.4855995,9.093886999999999,24.219397,15.718239,8.805907000000001,8.304397999999999,test +5579,80.0,2.5981712000000003,9.113146,28.408409999999996,22.517435,11.859614,8.2863035,test +5580,95.0,76.17905999999999,8.244585,84.17709,69.55901,7.287967999999999,7.921585,test +5581,77.0,75.7315,10.330096000000001,82.37181,65.10155999999999,10.003117,9.911152000000001,test +5582,49.0,72.00657,12.64564,77.18614000000001,61.101369999999996,10.337947999999999,12.627463,test +5583,25.0,57.973225,14.19224,75.97778000000001,55.71078000000001,10.562965,14.861104999999998,test +5584,17.0,48.701817,14.671763,71.27723,49.68538,13.592166,15.810147,test +5585,13.0,33.107040000000005,14.542218,63.987280000000005,40.26572,20.178482000000002,15.513132,test +5586,10.0,0.0,20.502834,11.552073,4.5825615,21.562353,21.836653,test +5587,10.0,0.0,20.091381,11.727253,11.196159,21.585262,21.346153,test +5588,16.0,2.9724044999999997,19.126392000000003,10.70945,12.593929,22.183739000000003,20.216562,test +5589,45.0,6.57008,18.115307,16.362029999999997,23.409569,21.651608,19.054579999999998,test +5590,57.0,14.285082000000001,17.322096,25.43839,37.921577,18.694084,18.156944,test +5591,68.0,27.474594,16.676016,34.695663,51.99034,13.74095,17.406422,test +5592,88.0,79.069305,58.436409999999995,80.66055,79.85374499999999,64.55535,62.77409399999999,test +5593,101.0,80.14731,55.269775,83.722595,81.226,57.81449,59.31572,test +5594,117.0,89.26187,49.764046,85.54489000000001,84.05038499999999,54.812630000000006,51.122246000000004,test +5595,124.0,81.673935,44.00434,82.90160999999999,86.89871,52.926155,43.109116,test +5596,120.0,103.45333000000001,38.779823,81.4261,87.308174,46.460213,38.539127,test +5597,105.0,71.399635,33.718212,71.19394,87.84993,32.363265999999996,37.135826,test +5598,72.0,93.336,39.30516,97.69245,103.627426,41.793198,43.24031,test +5599,85.0,97.4333,37.938465,94.20501999999999,95.51694,35.54627,41.533173,test +5600,47.0,98.06166999999999,35.83405,91.618645,95.10733,35.401894,37.495125,test +5601,40.0,97.64679,33.43577,87.321815,92.693275,36.74514,32.890728,test +5602,51.0,88.5656,31.724290000000003,83.59163000000001,92.510666,33.624165000000005,29.734926,test +5603,73.0,68.47519,31.670054999999998,81.0072,90.56821,24.231482999999997,29.080431,test +5604,82.0,73.496414,22.264217000000002,78.4966,74.25569,18.875267,24.577427,test +5605,71.0,82.44983,26.089104000000003,78.08057,74.28232,31.75083,31.705890000000004,test +5606,81.0,88.29457,31.388313,74.5455,70.797165,34.09794,40.472694,test +5607,95.0,73.6868,36.038709999999995,74.89782,67.933716,36.47898,47.800232,test +5608,94.0,72.41941,38.87509,70.11484,64.76709,50.78257,51.044937,test +5609,93.0,47.003952000000005,40.118503999999994,64.212616,60.32406999999999,78.56959499999999,49.427933,test +5610,85.0,98.37926,113.48376,88.71245,96.12747,115.955055,117.95456999999999,test +5611,83.0,84.94847,112.81309499999999,86.31546999999999,95.85892,115.54561000000001,114.51512,test +5612,100.0,91.463356,107.26868400000001,79.46428,94.32118,125.41741999999999,106.79735600000001,test +5613,97.0,91.553894,99.98253000000001,87.72368,94.76621999999999,130.91054,99.843094,test +5614,126.0,105.64936999999999,92.63754,96.69044,99.620514,116.38408999999999,95.47935,test +5615,130.0,113.74641399999999,85.02578000000001,104.50833,104.27026,79.314964,91.67739,test +5616,113.0,130.01003,49.577335,126.65181000000001,131.05573,48.458755,43.04552,test +5617,129.0,127.65863,53.73389399999999,126.80450400000001,127.347626,49.53808,45.934742,test +5618,140.0,132.641,56.365306999999994,127.36303999999998,127.33026000000001,54.603106999999994,48.409355,test +5619,145.0,112.22345,54.130375,124.40068000000001,123.611176,53.911719999999995,45.90078,test +5620,148.0,116.73422,47.74988,119.56128000000001,120.599075,41.93319,38.614204,test +5621,151.0,100.54815,41.664314000000005,115.482605,115.88805,22.720863,31.734007000000002,test +5622,148.0,152.50848,72.80338,135.50473,134.08331,71.01285,73.06798,test +5623,144.0,136.18802,65.77534,128.43524,121.14835,73.62682,65.13911999999999,test +5624,128.0,136.44066999999998,56.34099200000001,120.27624499999999,116.44103999999999,63.304085,55.816463,test +5625,110.0,122.23772,48.779340000000005,112.42022,109.83685,46.58592,49.371243,test +5626,110.0,99.001434,46.216879999999996,106.6366,108.6322,35.126823,47.572309999999995,test +5627,104.0,88.81036,48.78563,102.65167,106.41413999999999,37.108612,48.960606,test +5628,81.0,92.66748,104.30122,100.91852,100.82304,100.02226,107.11283999999999,test +5629,73.0,103.234886,111.48863999999999,100.87047,101.10882600000001,111.21799999999999,113.92305,test +5630,68.0,111.99185,115.59358999999999,96.49866,98.69835,103.42888,118.96019,test +5631,44.0,105.376755,115.06816,95.66246,97.75098,89.97434,120.92913999999999,test +5632,21.0,98.405495,111.20779399999999,88.57822,93.24639,90.52336,119.27705,test +5633,14.0,66.40993,107.07667,81.47877,81.33652,114.42206000000002,114.48111000000002,test +5634,16.0,7.711292299999999,131.8717,10.485886,10.062286,137.03586,135.96614,test +5635,21.0,5.352005,127.73552,10.81287,14.723389000000001,121.80563000000001,132.51391999999998,test +5636,25.0,11.489349,119.31172,11.010464,15.846179999999999,122.32441999999999,123.88094,test +5637,38.0,14.787571,110.86827,15.026867000000001,25.49855,127.15178999999999,114.76176000000001,test +5638,61.0,22.301996,105.15993999999999,22.408976000000003,39.65023,119.047226,108.35399,test +5639,76.0,34.75582,102.0979,30.886599,50.820923,90.679535,104.713974,test +5640,104.0,88.03804000000001,116.233604,94.60065999999999,83.821,122.09258,120.10248999999999,test +5641,95.0,86.348236,113.11435,96.80242,84.98416,123.11733000000001,117.10268,test +5642,123.0,94.15751999999999,108.12100000000001,98.743484,86.8478,120.12813,111.60396000000001,test +5643,141.0,88.24887,103.160324,95.27857,88.43606,111.53353,105.93082,test +5644,130.0,107.56718400000001,100.03541,93.95367399999999,89.26491999999999,99.62113000000001,101.9702,test +5645,94.0,76.83422,99.510864,81.45423000000001,89.47494499999999,89.68189,100.25461999999999,test +5646,134.0,82.61341,70.1895,92.13897,83.64451,67.37154,71.145,test +5647,129.0,81.07311,71.98153,89.683876,81.80655,69.2258,71.20834,test +5648,123.0,78.38243,73.40025,88.94275,81.294235,65.37260400000001,71.42688000000001,test +5649,112.0,78.61320500000001,72.709785,82.50993000000001,78.84738,61.23839,71.1703,test +5650,112.0,83.13044000000001,71.75662,78.83411,79.29059000000001,65.00683599999999,71.25392,test +5651,111.0,63.80464,74.32393,75.35429,74.58203,80.45732,73.198814,test +5652,104.0,101.40726,36.44775,108.98899999999999,107.0919,29.164005,32.394016,test +5653,102.0,107.56125,44.398457,108.36797,107.11643000000001,45.691814,40.938404,test +5654,100.0,113.67883,56.114290000000004,104.18343,102.64723000000001,49.602634,51.084742999999996,test +5655,106.0,106.59733999999999,65.991264,103.922325,99.81296,50.851444,58.393319999999996,test +5656,114.0,99.53605999999999,71.5223,98.89907,96.1911,66.36707,61.969223,test +5657,111.0,72.76210999999999,74.1951,91.70099,91.52991999999999,103.736305,64.16874,test +5658,119.0,117.06023400000001,131.4859,112.996445,111.73467,133.94536000000002,129.78696000000002,test +5659,119.0,108.21921499999999,127.54751,117.83275,116.71092,126.72249,127.25452,test +5660,124.0,123.35745,120.00733999999999,110.8999,113.28573600000001,133.96958999999998,122.243645,test +5661,124.0,127.82359,112.355965,122.865036,115.75268600000001,140.68198,117.31361399999999,test +5662,132.0,144.9715,106.59148400000001,132.36983999999998,123.97934,129.10196000000002,113.04526499999999,test +5663,127.0,159.67453,102.49061999999999,139.80963,131.38806,94.59864,108.21593999999999,test +5664,120.0,127.69736499999999,111.75448999999999,134.5923,130.48987,118.6459,118.7005,test +5665,148.0,132.834,110.95525,133.43787,133.97525,106.755936,119.70168999999999,test +5666,151.0,140.22229,108.64078500000001,134.61786999999998,130.73877,111.01406999999999,118.78941999999999,test +5667,156.0,129.59415,103.61599,130.6325,128.88522,118.84845,114.692375,test +5668,160.0,134.03343,95.46253,128.8263,127.30171999999999,112.68446000000002,106.926445,test +5669,151.0,110.82533000000001,85.68831,123.68016000000001,126.16266999999999,85.49242,96.85919,test +5670,138.0,145.97693,92.68325,137.07426,142.99864,91.43128,89.949745,test +5671,132.0,139.17177,86.97438000000001,132.80908,133.37935,94.36179,84.948654,test +5672,130.0,135.2169,80.49,130.66063,131.00342,86.0466,76.135864,test +5673,105.0,134.31699,76.10463,124.37986000000001,126.710724,75.42089,68.06814,test +5674,114.0,128.57455,75.741875,119.41113,125.355644,74.7826,64.84581,test +5675,104.0,115.99768999999999,79.20212,116.2782,122.535774,89.69725,67.38728,test +5676,100.0,98.25375,125.8315,99.03806,105.602295,122.798584,130.99097,test +5677,102.0,104.58823000000001,132.92006999999998,97.27826,106.67567,136.39648,136.62798999999998,test +5678,111.0,102.3721,138.49618999999998,93.71452,102.58599,128.96854,140.97043,test +5679,130.0,93.213585,141.79019,94.12062,100.18200999999999,119.95631999999999,143.8331,test +5680,126.0,98.77667,143.39789,90.2762,98.427605,132.04873999999998,144.55226000000002,test +5681,97.0,75.93626,144.29828,85.0353,92.25312,170.99167,142.23334,test +5682,118.0,84.91027,141.20571999999999,95.18236999999999,100.27728,145.0437,145.74496000000002,test +5683,130.0,83.59698,137.77821,99.91655,101.86183,133.82214,142.79187,test +5684,2.0,118.92883,132.32663,93.05944000000001,96.95270500000001,135.20598,136.3365,test +5685,121.0,118.921745,127.78141000000001,109.740875,105.7528,137.70193,129.61833000000001,test +5686,150.0,170.24042,125.52128,128.64131,128.12248,127.54513,125.060326,test +5687,177.0,184.45236,124.77462,136.82848,132.26357,101.45915,123.02179,test +5688,157.0,177.12463,124.73985,178.05098,186.35488999999998,125.96045,129.66876000000002,test +5689,162.0,173.06753999999998,121.50954399999999,175.90317,181.17451,128.0123,128.65657,test +5690,165.0,144.19336,116.522896,169.53925,167.22628999999998,125.12858999999999,126.08996599999999,test +5691,167.0,136.57495,111.60091000000001,161.67131,159.88846,114.18613400000001,122.598564,test +5692,159.0,110.07416,108.69091999999999,148.62592,155.11441000000002,98.885544,118.74881,test +5693,152.0,113.84352,108.75968,133.89252,148.15048000000002,87.87196999999999,115.052376,test +5694,150.0,145.23013,115.77412,138.595,140.53465,111.32928000000001,115.66,test +5695,146.0,140.4951,116.366905,132.26668,143.5044,115.85311000000002,115.50871000000001,test +5696,129.0,142.06035,116.94344,127.02035500000001,134.94593999999998,109.90898,115.41982,test +5697,136.0,139.22571000000002,117.603226,121.66603,128.50623000000002,102.885574,115.56508000000001,test +5698,125.0,116.900314,118.73308600000001,117.87036,127.353806,106.56541399999999,116.14505,test +5699,102.0,107.52408600000001,120.54427,112.962814,128.62245,124.96586599999999,117.17721599999999,test +5700,77.0,76.238174,0.0,77.57356,70.35105,0.0,0.0,test +5701,44.0,66.525795,0.0,60.191063,55.354682999999994,0.0,0.0,test +5702,34.0,51.118904,0.0,38.52491,50.235012,0.0,0.0,test +5703,26.0,38.601246,0.0,32.7841,45.4401,0.0,0.0,test +5704,26.0,24.445538,0.0,22.739342,39.06539,0.0,0.0,test +5705,21.0,16.18454,0.0,19.069511,32.168556,6.253852999999999,0.0,test +5706,22.0,6.210541,154.32983000000002,15.599159,13.756088,155.1225,154.07185,test +5707,26.0,13.770401000000001,149.03496,17.310345,17.007732,142.89282,147.51036000000002,test +5708,26.0,20.120235,140.60078000000001,18.63211,22.860870000000002,140.74478,138.42858999999999,test +5709,24.0,24.43589,133.0029,26.136074,33.370459999999994,138.82506999999998,129.84026,test +5710,24.0,31.36716,128.53806,32.776035,48.20794,125.73612,123.76393,test +5711,25.0,30.876759000000003,126.80273400000002,36.3365,44.229690000000005,99.67245,120.594696,test +5712,22.0,24.12614,136.25064,25.748356,29.875538,136.85074,136.6352,test +5713,20.0,20.19933,130.51155,18.703506,26.977757,124.68654,127.17083999999998,test +5714,14.0,24.33646,124.99898999999999,17.563357999999997,23.62741,122.57858,116.8506,test +5715,11.0,23.59879,121.79106999999999,17.682064,23.04506,123.29496999999999,110.37469499999999,test +5716,11.0,20.34711,121.585594,15.492134,22.061726,117.557724,109.918526,test +5717,13.0,29.884327000000003,123.52878600000001,15.943119,22.227867,102.76531,114.02206000000001,test +5718,25.0,14.06427,40.053818,7.1901474,5.803406,43.0913,47.518966999999996,test +5719,45.0,10.304741,43.478592,11.511642,10.004669,42.574806,46.3198,test +5720,41.0,14.236042000000001,49.408875,10.869507,11.280510000000001,36.560179999999995,46.23223,test +5721,37.0,15.915916000000001,53.020545999999996,11.712296,12.445477,31.979843,46.03386,test +5722,28.0,16.328917999999998,55.417915,14.401878,17.281116,39.45957,47.3824,test +5723,35.0,22.652618,62.021767000000004,15.366427999999999,20.53997,63.86861,53.22596,test +5724,23.0,39.233771999999995,40.67269,33.78585,33.869762,33.755226,39.89235,test +5725,18.0,33.3633,51.970333000000004,25.225193,27.651611,48.279076,50.70303,test +5726,11.0,25.601551,69.243904,19.344406,22.566715,52.804173,63.993263,test +5727,10.0,18.127827,84.91773,17.334106,18.839405,57.366436,73.94736999999999,test +5728,9.0,10.828705000000001,94.99286,15.176331,15.113247,77.62795,78.70985999999999,test +5729,10.0,5.354332,100.50983000000001,15.438972,14.00412,119.29813,80.58963,test +5730,11.0,1.2728882,34.99555,5.107231,2.222618,22.13472,26.980621000000003,test +5731,17.0,8.834914999999999,37.58574,10.898224,10.226494,35.5934,30.69949,test +5732,27.0,17.009956,41.53459,13.925491000000001,13.899647,31.237251,34.36136,test +5733,40.0,24.89613,43.886738,21.365185,26.892643,19.594604,36.144290000000005,test +5734,49.0,42.441159999999996,44.125859999999996,31.010215999999996,37.333706,21.407341,36.235863,test +5735,50.0,55.410323999999996,44.248318,37.522987,43.461998,49.568672,36.25565,test +5736,54.0,54.013863,50.952118,48.79061,49.34073,48.55712,52.65439,test +5737,54.0,57.386880000000005,51.881434999999996,48.794937,51.90762,55.757877,53.558581999999994,test +5738,57.0,53.940982999999996,52.344840000000005,49.056515000000005,50.131523,46.788357,54.682076,test +5739,60.0,64.392746,51.18711,49.002213,49.599486999999996,33.231346,53.673559999999995,test +5740,63.0,50.980835,48.41002,45.281364,47.960014,32.837208000000004,49.153755,test +5741,74.0,69.127365,45.280353999999996,46.06051,45.656864,54.6136,42.09135,test +5742,91.0,74.11912,18.961037,66.7478,78.65479,14.917976000000001,17.401443,test +5743,87.0,81.441536,19.706928,69.43966,84.43861,21.366997,19.006954,test +5744,80.0,72.07533000000001,24.210594,66.24682,84.83606,20.817253,22.271595,test +5745,80.0,88.8272,29.718765,67.27745,85.58036,19.861279,27.223171,test +5746,76.0,69.29800999999999,34.274506,70.12710600000001,86.796524,28.56467,33.285538,test +5747,73.0,91.227684,37.741257,70.19713,87.74991999999999,51.006508000000004,39.03418,test +5748,69.0,76.90420999999999,26.934772,67.61543,79.979866,21.346031,21.111086,test +5749,66.0,77.366425,31.134182,61.93479,78.421,29.699309999999997,22.334269,test +5750,62.0,74.12992,35.854865999999994,58.151936,76.84044,27.589997999999998,23.416786,test +5751,63.0,79.6893,40.014896,55.559814,75.675934,24.648146,24.551214,test +5752,67.0,64.18191999999999,43.22676,50.310493,71.35381,33.46886,26.38812,test +5753,74.0,61.435417,45.53584,50.658559999999994,66.703896,58.065575,29.20536,test +5754,85.0,67.7266,51.25612,70.844376,71.06258000000001,49.503685,50.339077,test +5755,66.0,75.496544,50.59998,72.71592,73.619514,58.044830000000005,48.73252,test +5756,48.0,83.09069000000001,50.92723,87.287254,80.57301,54.59842,47.810097,test +5757,46.0,87.58925,52.403496000000004,105.42114,88.20291999999999,47.426918,49.032494,test +5758,65.0,93.83043,53.74673000000001,121.80383,94.10043,48.330535999999995,51.468933,test +5759,84.0,108.9785,53.252759999999995,130.71034,96.13074,62.520527,52.506565,test +5760,98.0,83.24625999999999,72.83195,85.89595,83.45688,74.05597,77.67264,test +5761,94.0,81.74332,67.988014,87.36972,83.23302,61.01106,73.72078,test +5762,108.0,80.63046999999999,59.4777,87.77350600000001,81.71549,58.622195999999995,66.099915,test +5763,107.0,82.47827,50.996323,85.56534,80.85964,60.593803,58.360214,test +5764,113.0,65.7728,45.18763,78.98756,79.12846,55.596825,52.884842000000006,test +5765,112.0,74.189316,42.41787,77.25278,77.03806,37.772163,49.800971999999994,test +5766,100.0,114.80235,55.61928,108.03486000000001,105.3705,61.954693000000006,59.233166000000004,test +5767,102.0,103.80334,51.025208,102.16067,102.37299999999999,58.03306,55.133423,test +5768,101.0,102.689316,45.247337,93.33461,98.8739,57.123077,47.810608,test +5769,100.0,96.35651999999999,40.884422,88.07226,96.342636,54.795258,41.10322,test +5770,102.0,87.58493,39.76228,86.39093000000001,95.51934,46.906403000000005,38.225506,test +5771,104.0,96.57992,41.864613,87.308304,94.808685,33.89405,39.72715,test +5772,103.0,108.36521,58.666934999999995,105.11348000000001,108.72663999999999,58.693535,62.863274,test +5773,91.0,104.69164,60.40428000000001,100.72856,105.24784,62.21618,60.97192,test +5774,89.0,99.65961999999999,62.147873,98.877525,103.02693000000001,53.570206000000006,57.958504000000005,test +5775,96.0,108.5802,63.462295999999995,94.22848,101.29839,46.419315000000005,55.911453,test +5776,89.0,92.15281999999999,64.313644,88.44601,99.57244,55.278121999999996,56.284130000000005,test +5777,67.0,104.27608000000001,64.93556,85.81193499999999,97.04278599999999,82.797485,58.850212,test +5778,39.0,54.621,85.82229,52.400303,62.93271,82.6299,87.530975,test +5779,20.0,56.507785999999996,84.16306,45.530914,62.827377,88.52449,83.93466,test +5780,17.0,55.461822999999995,81.70508000000001,49.459270000000004,70.63323000000001,89.62163000000001,78.56305,test +5781,17.0,60.932106000000005,79.807526,61.351353,78.47446,84.03918,74.43796999999999,test +5782,17.0,72.90760999999999,78.7768,69.79343,85.63206,74.439415,73.23653399999999,test +5783,15.0,81.14386,77.89554,74.73328000000001,88.949875,66.35723,74.35563,test +5784,12.0,15.026581,96.18455,9.9763565,18.711868,103.12431,98.3687,test +5785,11.0,6.734413000000001,93.727104,12.177567,19.436737,93.29557,96.9174,test +5786,10.0,13.649726999999999,89.47508,13.330376000000001,19.310852,91.92591999999999,92.80699,test +5787,12.0,10.009414999999999,85.10525,14.371635000000001,20.218163,92.84857,87.49655,test +5788,12.0,9.431358,81.725426,13.460448999999999,19.645294,87.20348,82.66842,test +5789,11.0,17.466843,79.49786999999999,14.714363,20.749046,71.742584,79.452736,test +5790,11.0,6.403961,84.50017,6.1421204000000005,12.43293,85.6032,84.52192,test +5791,9.0,0.0,82.43226999999999,10.981682000000001,16.024002,85.12744,84.0512,test +5792,10.0,3.2250900000000002,79.41951999999999,10.122437,17.248070000000002,88.33230999999999,82.04491,test +5793,8.0,9.790291,76.25029,11.767853,18.061394,88.14084,79.25905,test +5794,12.0,10.141472,74.06651,13.604454,21.53246,79.42399999999999,76.9984,test +5795,18.0,21.236881,73.7548,15.031898499999999,23.13705,63.908348,76.29684,test +5796,14.0,26.82603,17.472816,14.411575,18.531067,15.634331,21.392601000000003,test +5797,16.0,20.693614999999998,18.633587,13.834518,17.957275,17.68153,20.44965,test +5798,11.0,13.746994,21.668575,9.893349,15.2007675,15.842552,19.736275,test +5799,10.0,7.429115299999999,23.733814000000002,5.417259,13.634879999999999,13.5974655,18.010307,test +5800,12.0,1.8632506999999998,26.306834999999996,4.5316315000000005,11.397926,19.030159,17.61306,test +5801,11.0,0.0,33.46828,5.853752,10.379402,37.475273,22.477673,test +5802,12.333333,9.221291,19.625164,6.0227965999999995,6.3980026,14.294849,15.684467000000001,test +5803,13.666667000000002,15.5317,23.539509,11.42556,10.678864,20.719963,17.931564,test +5804,15.0,22.132156,28.24488,14.410473000000001,16.197548,20.745544,19.77155,test +5805,35.5,30.267409999999998,30.105015,22.36702,36.267540000000004,19.163574,19.145676,test +5806,56.0,48.576515,29.184105,33.937508,47.777687,25.09058,16.945389000000002,test +5807,69.0,61.70456,28.862765999999997,42.73458,57.873272,43.5018,16.175570999999998,test +5808,73.0,66.575554,14.839232999999998,72.04244,71.329285,11.177753,11.286655,test +5809,82.0,74.97423,16.581474,74.57484000000001,69.299965,18.108532,11.547756,test +5810,73.0,78.083496,20.339859,75.41948000000001,68.50545,16.211105,12.624145500000001,test +5811,72.0,85.9863,23.62487,73.385414,68.577484,10.924866,13.713593,test +5812,71.0,71.36579,25.567719,66.27296,67.19346999999999,13.539485999999998,15.010860000000001,test +5813,70.0,78.52176999999999,27.212719,64.592285,65.122665,31.192697999999996,17.261670000000002,test +5814,68.0,69.820564,19.86853,69.70869,67.9619,14.365749,13.91494,test +5815,69.666664,76.22502,20.079929999999997,68.66404,69.88231,16.620697,13.548115,test +5816,71.333336,68.31779499999999,20.8186,63.737140000000004,69.00685,14.135742,13.219657999999999,test +5817,73.0,84.44409,20.943985,63.833817,68.760765,11.054897,12.607384,test +5818,72.333336,64.76489000000001,20.467457,65.62316,70.233986,14.016174,12.117523,test +5819,71.666664,85.00076,20.473648,65.53255,70.808815,26.246423999999998,12.518524000000001,test +5820,71.0,75.381874,58.860603000000005,64.07419,74.286766,64.3138,65.448235,test +5821,90.0,75.75034000000001,59.555836,59.77454399999999,71.743774,74.88391999999999,64.6254,test +5822,84.0,72.73485,57.99098000000001,58.265280000000004,69.59818,71.829605,59.209297,test +5823,78.0,76.25232,54.96572,56.302780000000006,67.34591,59.392807,52.835587,test +5824,59.5,58.52871,50.893574,50.554054,61.705963,47.849197,48.04987,test +5825,41.0,54.627196999999995,45.859055,50.29161,56.71576999999999,45.583861999999996,44.8086,test +5826,42.0,30.362957,54.097609999999996,40.742283,35.833459999999995,59.501082999999994,56.543755000000004,test +5827,37.0,39.366974,50.514829999999996,44.961059999999996,37.483166,56.0279,54.99491999999999,test +5828,40.0,51.777977,46.49669,56.15928,44.413242,56.08526,51.828359999999996,test +5829,51.0,59.42099399999999,43.855,78.80155,53.131104,53.287735,49.142567,test +5830,48.0,68.367714,43.064415000000004,92.95432,63.33889,42.18877,47.936904999999996,test +5831,50.0,77.443344,43.232876,99.68510400000001,67.45982,23.890087,47.566986,test +5832,57.0,42.239777000000004,38.718067,55.803864000000004,51.955436999999996,42.400635,42.41713,test +5833,47.0,40.424766999999996,37.497646,56.22176999999999,52.157090000000004,52.334872999999995,42.505966,test +5834,48.0,36.245585999999996,36.062954,57.258385,47.434647,54.51478,40.83146,test +5835,37.0,45.422096,34.868748,56.180836,45.360657,47.910187,37.515865000000005,test +5836,36.0,29.962952,34.771008,51.18524,42.371964,38.557293,33.857655,test +5837,37.0,48.85989,36.420403,50.776604,39.341125,34.831463,31.604034000000002,test +5838,40.0,36.504715000000004,57.546314,32.997192,31.564429999999998,53.999596,64.362,test +5839,36.0,38.142326000000004,56.144119999999994,35.897526,38.670177,60.755382999999995,63.164993,test +5840,45.0,34.618694,55.867819999999995,36.05768,38.091045,52.477869999999996,63.685883,test +5841,49.0,36.522694,59.707694999999994,36.363377,38.025078,46.191917,68.48246,test +5842,56.0,37.750572,67.535515,42.67414,42.954205,58.838654000000005,76.12456999999999,test +5843,57.0,55.645824,75.68892,43.337807,45.33056,92.122574,81.87694499999999,test +5844,56.0,62.576298,48.096924,52.194396999999995,61.479769999999995,44.838318,52.07792,test +5845,47.0,62.81833,53.33044,48.642067,61.27616,53.887640000000005,56.23915,test +5846,52.0,60.620865,59.47400699999999,47.42303,60.284542,51.328102,60.907753,test +5847,58.0,66.37526,63.519012,44.753098,59.190765,47.992252,64.41913000000001,test +5848,68.0,53.044003000000004,64.051506,39.35212,53.588640000000005,57.20109,65.60211,test +5849,71.0,49.875484,62.02536,38.730247,49.19342,82.611465,64.40817,test +5850,79.0,59.405795999999995,52.963566,75.116425,65.67403399999999,49.176140000000004,51.663536,test +5851,95.0,63.533913,52.52438000000001,72.42931999999999,67.46823,51.128662,50.664265,test +5852,17.0,61.597182999999994,50.87105,81.26018,73.68538000000001,58.12955,48.0687,test +5853,20.0,64.05851,47.835278,86.18158000000001,78.60276999999999,59.987877000000005,44.276665,test +5854,23.0,73.66669499999999,44.195763,93.22548,83.64935,50.02173,40.410435,test +5855,43.0,88.76938,41.389656,99.84144599999999,84.11049,31.144539,37.80853,test +5856,54.0,36.797104,72.06484,37.493515,42.859905,78.22620400000001,75.056465,test +5857,46.0,36.03273,71.27916,29.662643,40.43611,69.92495,73.688324,test +5858,26.0,31.710701,67.72031,27.024292,34.146038,63.620003000000004,68.726105,test +5859,30.0,38.260853000000004,62.16409,24.759510000000002,32.83204,56.90114200000001,62.368545999999995,test +5860,29.0,26.386086,55.9579,23.713428,32.264114,46.83005,57.049664,test +5861,21.0,36.835346,50.572070000000004,23.96915,32.187057,33.739494,54.070556999999994,test +5862,35.0,21.574192,56.09073000000001,17.491982,15.785988,52.7219,56.105408,test +5863,31.0,19.040760000000002,55.770653,17.70271,18.605202,60.963936,57.847435,test +5864,28.0,18.016476,55.03841,17.444645,18.368920000000003,61.45565799999999,57.752953000000005,test +5865,45.0,23.358337,54.695393,17.99522,19.208809,58.412822999999996,56.587616000000004,test +5866,47.0,20.334423,55.141914,21.087310000000002,25.899654,58.660396999999996,55.387413,test +5867,42.0,38.98316,56.0492,22.059654000000002,30.077678999999996,65.593956,54.634533,test +5868,31.0,44.382015,39.77734,46.087265,45.652397,36.00313,39.267857,test +5869,23.0,44.559371999999996,44.579468,44.099464000000005,45.251293,40.647459999999995,42.742207,test +5870,22.0,40.388855,49.2448,43.547546000000004,43.622715,37.281178000000004,46.621456,test +5871,17.0,44.140194,52.441456,41.343292,42.400079999999996,34.739403,49.723459999999996,test +5872,8.0,31.04301,54.04728000000001,36.746254,38.232964,42.850066999999996,51.193302,test +5873,8.0,32.297670000000004,54.79801,36.95102,35.1651,63.473614000000005,50.838966,test +5874,17.0,0.66641617,32.461467999999996,6.2404137,9.105967999999999,28.871384000000003,30.740864000000002,test +5875,24.0,5.586216,33.6438,9.211029,9.736922999999999,33.228962,30.574890000000003,test +5876,26.0,10.608002,35.676159999999996,11.552357,15.481213,32.571723999999996,30.968821999999996,test +5877,20.0,15.633010999999998,37.510162,16.470612,28.948153,30.341659999999997,31.276028000000004,test +5878,42.0,26.050435999999998,38.89434,22.713556,38.262268,32.73137,31.569345000000002,test +5879,77.0,32.899665999999996,40.349841999999995,27.066162,45.604958,43.12936,32.519703,test +5880,94.0,81.06430999999999,18.97232,83.75083000000001,77.7779,15.019608999999999,19.459139,test +5881,88.0,82.63245,17.218597,85.10555,78.15091,21.999037,19.265453,test +5882,80.0,76.473694,17.13928,81.489655,77.7156,21.593674,21.436993,test +5883,85.0,85.00729,18.531904,79.98040999999999,79.16984000000001,17.752792000000003,25.3914,test +5884,107.0,65.37694499999999,21.048485,70.89964,80.71367,18.729748,29.365353000000002,test +5885,104.0,64.92536,24.30375,64.8542,79.89164,29.792334000000004,31.469540000000002,test +5886,121.0,102.546364,89.05283,97.48339,95.29914000000001,86.41291,90.710464,test +5887,109.0,96.60226,83.35475,94.11447,95.26535,79.856995,85.510254,test +5888,96.0,98.98048399999999,74.12442,89.908005,91.05154,80.17886,75.81511,test +5889,90.0,96.193344,66.32725500000001,86.312485,89.82117,80.485825,67.427086,test +5890,83.0,85.11957,61.58943000000001,83.75314,87.62219,70.83485999999999,63.043427,test +5891,72.0,71.90793000000001,57.830307,80.59328000000001,85.91844,47.650295,60.94928,test +5892,58.0,66.86389,107.284805,71.00966,69.24531999999999,112.45029,106.93906000000001,test +5893,41.0,65.41264,103.86885,65.15515,65.6733,99.81579,101.66798399999999,test +5894,30.0,55.544914,95.21070999999999,60.345055,61.834656,97.6308,91.402054,test +5895,23.0,58.517513,85.12945,54.77973000000001,59.913826,97.29375999999999,81.27812,test +5896,22.0,43.251076,76.44876,44.971497,52.101665000000004,85.378784,74.42765,test +5897,24.0,52.0821,69.85679,38.85331,42.64245,56.48660699999999,70.53316,test +5898,17.0,15.649501999999998,50.463158,23.66976,23.897316,56.408432,50.348442,test +5899,11.0,20.231057999999997,48.293820000000004,23.85387,26.302828,50.99282,47.689144,test +5900,14.0,23.089073000000003,45.31508,26.562016999999997,31.80002,52.75895,43.923621999999995,test +5901,21.0,27.959220000000002,41.706154,33.575404999999996,42.105576,54.061156999999994,40.754658,test +5902,30.0,36.860046000000004,38.820686,40.721203,47.479,47.00162,39.62165,test +5903,37.0,41.973564,38.438313,47.22448,48.38149,30.750494,40.80366,test +5904,70.0,32.457634000000006,19.782003,34.958220000000004,38.803974,17.374147,19.994387,test +5905,71.0,30.9688,26.485031,29.147715,37.744194,28.991356,22.09265,test +5906,77.0,28.123844000000002,37.328228,27.466479999999997,32.88864,32.95893,28.9401,test +5907,65.0,33.08449,48.55464,25.49695,31.706007,37.23938,39.222603,test +5908,64.0,23.549198,57.786797,24.447712,30.978502000000002,52.674236,50.313159999999996,test +5909,62.0,32.831093,64.64027,24.750946,31.66068,82.04979,59.2492,test +5910,46.0,59.932044999999995,79.99505,62.035175,60.976437,73.87755,80.60295,test +5911,47.0,59.05024,82.90584,61.139571999999994,59.93601999999999,86.57768,81.80533,test +5912,54.0,55.182873,83.936584,57.015366,58.967307999999996,74.054405,81.92866500000001,test +5913,87.0,64.53073,82.71084,56.301216000000004,63.115584999999996,58.13294200000001,81.35455,test +5914,90.0,51.001667,79.48944,56.068946999999994,65.27351,65.12344,80.44064,test +5915,87.0,64.63653599999999,75.14046,56.082462,65.85937,103.2023,79.31265,test +5916,62.0,75.20155,50.394465999999994,83.62025,82.105354,39.220276,41.10167,test +5917,45.0,71.44043,51.263870000000004,78.579636,79.11537,54.61939,41.489005999999996,test +5918,21.0,62.000877,53.284073,74.52139,77.63145,61.165325,44.184235,test +5919,12.0,55.12055,54.82291,68.28372,74.31936999999999,59.47363299999999,47.278687,test +5920,9.0,41.499855,54.537907,56.945793,68.133156,57.45674,48.753426,test +5921,9.0,33.94106,52.425556,48.696940000000005,61.237686,63.05253199999999,47.927547,test +5922,9.0,0.6845703000000001,51.74414,8.562889,8.43985,55.812332,55.094345,test +5923,10.0,3.4719772000000004,45.909843,10.422096,11.3433,54.4882,47.947376,test +5924,13.0,8.059036,38.323868,13.393210999999999,15.35997,42.141678000000006,36.437675,test +5925,19.0,13.305411999999999,31.506594,17.558685,31.64081,24.394966,25.579227,test +5926,33.0,21.522688,27.905327000000003,22.687353,43.89145,11.767155,20.159060999999998,test +5927,42.0,24.440434,28.575138,24.704247,43.36226,12.316017,21.77919,test +5928,47.0,43.87903,12.332305999999999,41.706897999999995,45.021996,12.566818,10.900172999999999,test +5929,66.0,40.095535,17.304695000000002,37.073845,44.673977,18.13924,14.417522,test +5930,42.0,37.32651,26.537259999999996,35.734295,42.273388,17.662498,21.47039,test +5931,57.0,41.683426000000004,36.194008000000004,33.054558,42.081379999999996,18.59555,29.715387,test +5932,62.0,26.034325,44.11466,30.767979999999998,42.790462,30.633892,37.22663,test +5933,51.0,37.237106,50.434982,31.162533000000003,41.093838,56.35255,43.082794,test +5934,93.0,49.444706,55.440277,51.63143,47.931057,54.042366,52.745180000000005,test +5935,102.0,51.265884,61.096275,52.02349,50.0931,62.011887,55.101223,test +5936,95.0,46.7371,64.85435,48.915237,49.300697,50.138214000000005,55.768074,test +5937,103.0,54.50524,65.230736,49.266304,50.4428,37.903484000000006,54.76375,test +5938,105.0,43.00908,62.422881999999994,50.10107,53.09486,46.812366,52.870388,test +5939,94.0,55.67929,58.082954,50.255478000000004,54.02809,81.77538,51.04374,test +5940,56.0,85.604034,88.56073,90.60647,89.59791,93.51222,91.58722,test +5941,55.0,81.69484,87.25403,87.16969,87.82672,84.60404,89.51931,test +5942,52.0,73.39964,82.92156,84.48161,86.810715,83.63695,84.851395,test +5943,37.0,76.2622,76.86255,80.4145,83.278076,83.08641,79.73987,test +5944,35.0,57.805440000000004,69.714424,71.77144,78.49129,72.4751,74.48029,test +5945,35.0,63.243793000000004,61.77823000000001,65.48238,75.8359,48.439840000000004,68.00724,test +5946,38.0,31.547821000000003,46.153290000000005,34.53459,36.402565,48.228874,51.084538,test +5947,43.0,38.027103000000004,43.224525,35.918903,40.329229999999995,50.508125,46.221268,test +5948,39.0,41.79609,39.640938,43.814037,50.625378000000005,50.08907,39.12876,test +5949,41.0,46.50527,35.838454999999996,58.671066,63.124302,43.88861,32.444134000000005,test +5950,52.0,51.95701,32.77932,69.05096999999999,75.84407,32.989197,28.290024,test +5951,62.0,59.884537,31.601713,74.02606,81.814316,22.545666,27.235221999999997,test +5952,71.0,60.65895,40.14839,71.98973000000001,67.4886,38.397087,42.272422999999996,test +5953,93.0,60.73986,44.4797,73.26990500000001,67.912254,48.088875,42.053158,test +5954,98.0,63.458434999999994,49.537459999999996,71.03404,68.73966999999999,42.299095,43.038790000000006,test +5955,115.0,72.43715,53.986652,69.64882,70.53584000000001,33.480667,45.013999999999996,test +5956,117.0,59.714752000000004,57.746513,62.47325,71.288666,38.6031,47.629985999999995,test +5957,114.0,61.967663,61.421738,58.413864000000004,67.87668000000001,64.33799,50.445118,test +5958,108.0,107.060074,74.82935,103.65465,102.46901,71.4341,73.4031,test +5959,106.0,102.647026,76.37343,98.94197,98.7746,77.57713000000001,73.77145,test +5960,94.0,101.72883,76.64411,92.450066,93.06582,64.33037,72.767685,test +5961,94.0,98.29431,76.07859,87.9639,91.703186,51.035297,71.61259,test +5962,91.0,91.76516,75.07822,84.96525600000001,89.181725,58.87834,71.13049000000001,test +5963,85.0,76.0574,73.74956,81.67685999999999,87.53808000000001,92.75036999999999,71.16250600000001,test +5964,65.0,86.93738,98.917114,84.558464,83.44925,103.84371999999999,99.02017,test +5965,86.0,90.39373,96.59897,81.91171,83.55452,90.340805,95.42145,test +5966,93.75,89.19700999999999,92.58285500000001,80.90267,83.454575,91.3047,89.70349,test +5967,101.5,89.02008000000001,87.96417,77.82329,80.60529,96.36763,83.32741999999999,test +5968,109.25,74.522316,83.24481,71.29163,77.18915,90.43477,77.62942,test +5969,117.0,66.472015,78.58426,67.62635999999999,75.86361,67.31163000000001,73.54129,test +5970,105.0,100.39274,57.18404,114.63622,108.53471,61.772957,61.12726,test +5971,64.0,87.8853,53.838173,105.63955,107.08845500000001,59.74954,59.385146999999996,test +5972,50.0,88.06398,49.983723,114.41481,110.87834,59.671623,56.392952,test +5973,53.0,93.96032,46.225945,120.72547,112.96465,57.30039,53.277331999999994,test +5974,90.0,106.13538999999999,44.210693,125.24059,116.19707,49.896793,51.04461,test +5975,116.0,110.22721999999999,45.61245,127.22273999999999,119.91103000000001,39.181595,50.072433000000004,test +5976,124.0,115.16176999999999,53.47834399999999,119.04413999999998,117.95996000000001,55.640246999999995,57.631240000000005,test +5977,133.0,127.21193000000001,57.320747,119.5083,119.14577,64.64265,58.451423999999996,test +5978,131.0,110.58734,63.3366,116.90088999999999,118.02505500000001,62.166412,61.108162,test +5979,119.0,114.44536000000001,69.18616,114.66925,116.85237,61.063976000000004,64.76471,test +5980,45.0,96.83899,73.797,109.30551000000001,114.72952,75.46824000000001,68.52341,test +5981,33.0,92.90841,77.529045,102.420906,108.82257,107.52327,71.74069,test +5982,42.0,28.474079999999997,117.09845,29.319836,27.402163,108.37103,115.68899499999999,test +5983,45.0,26.623592,116.13948,30.424086,28.321175,122.96403000000001,112.346924,test +5984,29.0,27.038953999999997,114.60423,30.028093,27.914513,124.96478,107.95284,test +5985,34.0,31.474657,113.11693000000001,30.488884000000002,29.060387,117.48530600000001,104.27935,test +5986,47.0,29.966707,111.62561000000001,33.429359999999996,32.96515,111.05113,102.17345,test +5987,52.0,44.99392,109.72568000000001,34.24896,33.921764,114.74196,101.35151,test +5988,46.0,48.276005,39.607483,48.469482,51.986702,33.766166999999996,35.961853000000005,test +5989,24.0,45.200103999999996,40.498074,41.436046999999995,49.611893,39.17519,37.90011,test +5990,12.0,38.486664000000005,42.015278,35.624396999999995,46.952587,34.062870000000004,39.494040000000005,test +5991,10.0,35.730007,42.442040000000006,33.105583,46.08054,27.232594,39.12885,test +5992,9.0,29.579846999999997,42.88517,30.726366,42.802406,32.11261,37.740035999999996,test +5993,8.0,25.327618,46.15061,30.908525,40.45908,54.981926,37.945465000000006,test +5994,8.0,0.9740409999999999,15.030697,7.712898299999999,7.876938000000001,10.488525,13.790401000000001,test +5995,9.0,2.6155242999999997,14.680469500000001,8.31916,11.308781,13.720539000000002,12.689316,test +5996,13.0,6.9460372999999995,15.138565,12.108128,14.289764000000002,11.077156,10.097816,test +5997,22.0,13.068272,15.4986,15.789791000000001,26.998620000000003,7.249358999999999,6.4799347,test +5998,35.0,19.87991,17.236595,20.259487,35.9654,11.390099000000001,4.7866135000000005,test +5999,45.0,21.169449,22.716839,20.496132,44.068356,28.92212,8.10524,test -- GitLab From 4dbbe638df58442b04a9e271b1c30bdf852f313d Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Fri, 31 Dec 2021 09:40:00 +0100 Subject: [PATCH 2/7] ensembler added --- deployment/ensembler/Dockerfile | 28 ++ deployment/ensembler/README.md | 40 +++ deployment/ensembler/app.py | 61 +++++ deployment/ensembler/env | 12 + deployment/ensembler/example_curl.txt | 27 ++ deployment/ensembler/requirements.txt | 12 + .../dataset/__pycache__/data.cpython-37.pyc | Bin 0 -> 921 bytes deployment/ensembler/src/dataset/data.py | 20 ++ .../src/dataset/preprocess_dataset.py | 245 ++++++++++++++++++ deployment/ensembler/src/ensembler.py | 163 ++++++++++++ deployment/ensembler/src/env_config.py | 17 ++ deployment/ensembler/src/messages_schemas.py | 40 +++ deployment/ensembler/src/mocking/helpers.py | 65 +++++ .../ensembler/src/models/ensembler_models.py | 165 ++++++++++++ 14 files changed, 895 insertions(+) create mode 100644 deployment/ensembler/Dockerfile create mode 100644 deployment/ensembler/README.md create mode 100644 deployment/ensembler/app.py create mode 100644 deployment/ensembler/env create mode 100644 deployment/ensembler/example_curl.txt create mode 100644 deployment/ensembler/requirements.txt create mode 100644 deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc create mode 100644 deployment/ensembler/src/dataset/data.py create mode 100644 deployment/ensembler/src/dataset/preprocess_dataset.py create mode 100644 deployment/ensembler/src/ensembler.py create mode 100644 deployment/ensembler/src/env_config.py create mode 100644 deployment/ensembler/src/messages_schemas.py create mode 100644 deployment/ensembler/src/mocking/helpers.py create mode 100644 deployment/ensembler/src/models/ensembler_models.py diff --git a/deployment/ensembler/Dockerfile b/deployment/ensembler/Dockerfile new file mode 100644 index 00000000..2bd617bb --- /dev/null +++ b/deployment/ensembler/Dockerfile @@ -0,0 +1,28 @@ +FROM python:3.8-slim-buster + +# Install Python dependencies. +WORKDIR /wd +# COPY deployment/nbeats/requirements.txt . +COPY deployment/ensembler/requirements.txt . + +RUN apt-get update && apt-get install -y build-essential g++ libgl1-mesa-glx libx11-6 +RUN pip3 install --no-cache-dir -r requirements.txt && mkdir models + +ADD https://gitlab.ow2.org/melodic/morphemic-preprocessor/-/archive/morphemic-rc1.5/morphemic-preprocessor-morphemic-rc1.5.tar.gz /var/lib/morphemic/ + +# Copy the rest of the codebase into the image +COPY deployment/ensembler/ ./ + +RUN cd /var/lib/morphemic/ \ + && tar -zxf morphemic-preprocessor-morphemic-rc1.5.tar.gz \ + && cd morphemic-preprocessor-morphemic-rc1.5 \ + && cd morphemic-datasetmaker && python3 setup.py install \ + && cd ../.. \ + && cp -R /var/lib/morphemic/morphemic-preprocessor-morphemic-rc1.5/amq-message-python-library /wd/amq_message_python_library \ + && rm -rf /var/lib/morphemic \ + && mkdir -p /wd/logs + + +CMD ["uvicorn", "app:app"] + + diff --git a/deployment/ensembler/README.md b/deployment/ensembler/README.md new file mode 100644 index 00000000..2dad9211 --- /dev/null +++ b/deployment/ensembler/README.md @@ -0,0 +1,40 @@ +# Ensembler + +To test locally: + + cd ../../ + docker build -t ensembler -f ./deployment/ensembler/Dockerfile . + docker run -t --env-file=deployment/ensembler/env -v :/wd/logs --network=host ensembler + +Go to local amw web cosnole: http://localhost:8161/admin + +send example start_ensembler message: + + { + "metrics":[ + { + "metric":"MaxCPULoad", + "level":3, + "publish_rate":60000 + }, + { + "metric":"MinCPULoad", + "level":3, + "publish_rate":50000 + } + ], + "models":[ + "tft", + "nbeats", + "gluon" + ] + } + + +send ensemble request: + + curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"BestSubset", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' + + + + diff --git a/deployment/ensembler/app.py b/deployment/ensembler/app.py new file mode 100644 index 00000000..6ad1dd18 --- /dev/null +++ b/deployment/ensembler/app.py @@ -0,0 +1,61 @@ +"""main script for ensembler module""" + +import logging +from datetime import datetime +from pytz import timezone +import setproctitle +from fastapi import FastAPI +from amq_message_python_library import * # python amq-message-python-library +from src.messages_schemas import Prediction, EnsembleResponse +from src.ensembler import Ensembler +from src.env_config import create_env_config + + +class Services: + """Class for starting amq service""" + + def __init__(self, config): + """init function""" + self.start_amq_service(config) + # self.start_fastapi_service() + + def start_amq_service(self, config): + """Connect to amq, subscribe to start ensembling topic""" + start_conn = morphemic.Connection( + config["AMQ_USER"], + config["AMQ_PASSWORD"], + host=config["AMQ_HOST"], + port=config["AMQ_PORT_BROKER"], + debug=True, + ) + start_conn.connect() + start_conn.conn.subscribe(f"/topic/{config['START_TOPIC']}", "1", ack="auto") + self.ens = Ensembler(start_conn) + start_conn.conn.set_listener("ensemble", self.ens) + + +env_config = create_env_config() +setproctitle.setproctitle("Ensembler") +logging.basicConfig( + filename=f"logs/{env_config['LOGING_FILE_NAME']}.out", + level=logging.INFO, + datefmt="%Y-%m-%d %H:%M:%S", + format="START %(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s", +) +logging.Formatter.converter = lambda *args: datetime.now( + tz=timezone(env_config["TZ"]) +).timetuple() + +s = Services(env_config) + +app = FastAPI() + + +@app.post("/ensemble", response_model=EnsembleResponse) +async def add_country(prediction: Prediction): + """Function for returning ensembled value on request""" + return s.ens.on_ensemble(prediction.dict()) + + +log = logging.getLogger() +log.info(f"Ensebler service started for application: {env_config['APP_NAME']}") diff --git a/deployment/ensembler/env b/deployment/ensembler/env new file mode 100644 index 00000000..6f917a73 --- /dev/null +++ b/deployment/ensembler/env @@ -0,0 +1,12 @@ +AMQ_HOSTNAME=localhost +AMQ_USER=morphemic +AMQ_PASSWORD=morphemic +AMQ_PORT=61613 +APP_NAME=demo +METHOD=tft +DATA_PATH=./ +INFLUXDB_HOSTNAME=localhost +INFLUXDB_PORT=8086 +INFLUXDB_USERNAME=morphemic +INFLUXDB_PASSWORD=password +INFLUXDB_DBNAME=morphemic diff --git a/deployment/ensembler/example_curl.txt b/deployment/ensembler/example_curl.txt new file mode 100644 index 00000000..0507cb90 --- /dev/null +++ b/deployment/ensembler/example_curl.txt @@ -0,0 +1,27 @@ +curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"Linnear_programming", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' + + +curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"BestSubset", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' + + + +{ + "metrics":[ + { + "metric":"MaxCPULoad", + "level":3, + "publish_rate":60000 + }, + { + "metric":"MinCPULoad", + "level":3, + "publish_rate":50000 + } + ], + "models":[ + "tft", + "nbeats", + "gluon" + ] +} + diff --git a/deployment/ensembler/requirements.txt b/deployment/ensembler/requirements.txt new file mode 100644 index 00000000..374c0e16 --- /dev/null +++ b/deployment/ensembler/requirements.txt @@ -0,0 +1,12 @@ +stomp.py +wheel +sklearn +pandas==1.1.3 +pydantic==1.8.2 +uvicorn==0.15.0 +fastapi==0.68.1 +cvxpy==1.1.15 +filelock==3.0.12 +influxdb +python-slugify +setproctitle diff --git a/deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc b/deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47c850e10146e02fd82aa27a2c0ea5cf907c981c GIT binary patch literal 921 zcmZuv!EO^V5VgIV&34;VfB#l3{D7~V_ytbPc$1J;9m(Svk3DbR+kH0}WCZNji=R?3LVjbiu?T{rK58K}-qa$m|Bdl8O!akZ``BaDsfQ7(IHUURiLJ#Tk z>5hn}XQR!v5`K+fxNjLggXBJjYi`G%=Thl4xgjs7vboUk5r#qNj+Eth8IJSV;4f)< z=x{XC2bVLmhjA$3)PbKlfXF9ZuZIxZ7#wn0KEBPQyE4wH!SVA1CBV-ogwKSSwQ5mg zd?3V^g{;?=z7VP{g)jqnV-C^%hYk_q8x#cx4ML_-%(5h$<&k-W^*{nI-S^t3uRHWN L6kFi@F-xO=a=PSD literal 0 HcmV?d00001 diff --git a/deployment/ensembler/src/dataset/data.py b/deployment/ensembler/src/dataset/data.py new file mode 100644 index 00000000..a5fff160 --- /dev/null +++ b/deployment/ensembler/src/dataset/data.py @@ -0,0 +1,20 @@ +"""Script for data frame with prediction class""" + +import time + + +class PredictionsDF: + """Predictions data frame class + df: data frame with predictions and real value, + target_column: target column name""" + + def __init__(self, data_frame, target_column="y"): + """Init method""" + self.df = data_frame + self.last_update_time = int(time.time()) + self.target_column = target_column + + def update(self, data_frame): + """Upade method, change df, and updates last_update_time""" + self.data_frame = data_frame + self.last_update_time = int(time.time()) diff --git a/deployment/ensembler/src/dataset/preprocess_dataset.py b/deployment/ensembler/src/dataset/preprocess_dataset.py new file mode 100644 index 00000000..aa674974 --- /dev/null +++ b/deployment/ensembler/src/dataset/preprocess_dataset.py @@ -0,0 +1,245 @@ +import pandas as pd +from pytorch_forecasting import TimeSeriesDataSet +from pytorch_forecasting.data import NaNLabelEncoder +import numpy as np +import logging +import time + +pd.options.mode.chained_assignment = None + +"""Script for preparing time series dataset from pythorch-forecasting package +TODO: add checking whether data consists of multiple series, handle nans values""" + + +class Dataset(object): + def __init__( + self, + dataset, + target_column="value", + time_column="ems_time", + tv_unknown_reals=[], + known_reals=[], + tv_unknown_cat=[], + static_reals=[], + classification=0, + context_length=40, + prediction_length=5, + publish_rate=10000, + ): + + self.max_missing_values = ( + 20 # max consecutive missing values allowed per series + ) + self.target_column = target_column + self.time_column = time_column + self.tv_unknown_cat = tv_unknown_cat + self.known_reals = known_reals + self.tv_unknown_reals = tv_unknown_reals + self.static_reals = static_reals + self.classification = classification + self.context_length = context_length + self.prediction_length = prediction_length + self.publish_rate = publish_rate + self.dataset = dataset + self.dropped_recent_series = True # default set to be true + if self.dataset.shape[0] > 0: + self.check_gap() + self.n = dataset.shape[0] + if self.dataset.shape[0] > 0: + self.ts_dataset = self.create_time_series_dataset() + + def cut_nan_start(self, dataset): + dataset.index = range(dataset.shape[0]) + first_not_nan_index = dataset[self.target_column].first_valid_index() + if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan + if first_not_nan_index is not None: + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] + else: + return dataset.dropna() + + def fill_na(self, dataset): + dataset = dataset.replace(np.inf, np.nan) + dataset = dataset.ffill(axis="rows") + return dataset + + def convert_formats(self, dataset): + if not self.classification: + dataset[self.target_column] = dataset[self.target_column].astype(float) + else: + dataset[self.target_column] = dataset[self.target_column].astype(int) + + for name in self.tv_unknown_cat: + dataset[name] = dataset[name].astype(str) + return dataset + + def convert_time_to_ms(self): + if self.dataset.shape[0] > 0: + digit_len = len(str(int(self.dataset[self.time_column].values[0]))) + if digit_len >= 13: + self.dataset[self.time_column] = self.dataset[self.time_column].apply( + lambda x: int(str(int(x))[:13]) + ) + else: + self.dataset[self.time_column] = self.dataset[self.time_column].apply( + lambda x: int(int(str(int(x))[:digit_len]) * 10 ** (13 - digit_len)) + ) + self.dataset[self.time_column] = self.dataset[self.time_column].apply( + lambda x: int(x // 1e4 * 1e4) + ) + + def add_obligatory_columns(self, dataset): + n = dataset.shape[0] + dataset["time_idx"] = range(n) # TODO check time gaps + return dataset + + def get_time_difference_current(self): + if self.dataset.shape[0] > 0: + last_timestamp_database = self.dataset[self.time_column].values[-1] + current_time = int(time.time()) + print( + f"Time difference between last timestamp and current time: {current_time - last_timestamp_database}" + ) + logging.info( + f"Time difference between last timestamp and current time: {current_time - last_timestamp_database}" + ) + + def check_gap(self): + if (self.dataset.shape[0] > 0) and (self.target_column in self.dataset.columns): + self.dataset = self.dataset.groupby(by=[self.time_column]).min() + self.dataset[self.time_column] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) + self.convert_time_to_ms() + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset[self.time_column].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + series_freq = ( + (self.dataset[self.time_column]) + .diff() + .fillna(0) + .value_counts() + .index.values[0] + ) + + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + if series_freq != self.publish_rate: + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset[self.time_column] + .diff() + .abs() + .fillna(0) + .astype(int) + >= np.abs(self.max_missing_values * self.publish_rate) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s["split"] = "train" + s = self.convert_formats(s) + logging.info( + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" + ) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) + + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + logging.info(f"metric: {self.target_column} no data found") + if self.dataset.shape[0] > 0: + self.get_time_difference_current() + + def inherited_dataset(self, split1, split2): + df1 = ( + self.dataset[lambda x: x.split == split1] + .groupby("series", as_index=False) + .apply(lambda x: x.iloc[-self.context_length :]) + ) # previous split fragment + df2 = self.dataset[lambda x: x.split == split2] # split part + inh_dataset = pd.concat([df1, df2]) + inh_dataset = inh_dataset.sort_values(by=["series", "time_idx"]) + inh_dataset = TimeSeriesDataSet.from_dataset( + self.ts_dataset, inh_dataset, min_prediction_idx=0, stop_randomization=True + ) + return inh_dataset + + def create_time_series_dataset(self): + if not self.classification: + self.time_varying_unknown_reals = [ + self.target_column + ] + self.tv_unknown_reals + self.time_varying_unknown_categoricals = self.tv_unknown_cat + else: + self.time_varying_unknown_reals = self.tv_unknown_reals + self.time_varying_unknown_categoricals = [ + self.target_column + ] + self.tv_unknown_cat + + ts_dataset = TimeSeriesDataSet( + self.dataset[lambda x: x.split == "train"], + time_idx="time_idx", + target=self.target_column, + categorical_encoders={"series": NaNLabelEncoder().fit(self.dataset.series)}, + group_ids=["series"], + time_varying_unknown_reals=[self.target_column], + min_encoder_length=self.context_length, + max_encoder_length=self.context_length, + max_prediction_length=self.prediction_length, + min_prediction_length=self.prediction_length, + add_relative_time_idx=False, + allow_missings=False, + ) + return ts_dataset + + def get_from_dataset(self, dataset): + return TimeSeriesDataSet.from_dataset( + self.ts_dataset, dataset, min_prediction_idx=0, stop_randomization=True + ) diff --git a/deployment/ensembler/src/ensembler.py b/deployment/ensembler/src/ensembler.py new file mode 100644 index 00000000..ed9d8b39 --- /dev/null +++ b/deployment/ensembler/src/ensembler.py @@ -0,0 +1,163 @@ +"""Script for ensembler class""" + +import json +import logging +import time +import threading +from slugify import slugify +import stomp +from src.mocking.helpers import mock_predictions_df +from src.models.ensembler_models import ( + AverageEnsembler, + BestSubsetEnsembler, + LinnearProgrammingEnsembler, +) +from src.dataset.data import PredictionsDF + + +class Ensembler(stomp.ConnectionListener): + """Custom listener, parameters: + - conn (stomp connector)""" + + def __init__(self, conn): + self.conn = conn + self.publish_rate = None + self.metrics = None + self.forecasters_names = None + self.ensemblers = {} + self.prediction_dfs = {} + self.metrics_frequency = {} + self.predictions_tables_names = None + + def get_data(self, metric, columns): + """Download data frame with predictions and real + values for given metric, + currently mocked.""" + if not self.prediction_dfs[metric]: + self.prediction_dfs[metric] = PredictionsDF(mock_predictions_df(columns)) + else: + self.prediction_dfs[metric].update(mock_predictions_df(columns)) + + def get_predictions_fields(self): + """Get predictions columns names""" + self.predictions_tables_names = { + metric: [ + f"{metric}.{forecaster}.prediction" + for forecaster in self.forecasters_names + ] + for metric in self.metrics + } + + def on_error(self, frame): + """On message error""" + print(f"received an error {frame.body}") + + def on_start_ensembler(self, body): + """Get predicted metrics, methods, frequency""" + self.metrics = [metric["metric"] for metric in body["metrics"]] + self.forecasters_names = body["models"] + self.get_predictions_fields() + self.metrics_frequency = { + metric_dict["metric"]: metric_dict["publish_rate"] + for metric_dict in body["metrics"] + } + self.ensemblers = { + metric: { + "Average": AverageEnsembler(True, self.forecasters_names), + "BestSubset": BestSubsetEnsembler(False, self.forecasters_names), + "Linnear_programming": LinnearProgrammingEnsembler( + False, self.forecasters_names + ), + } + for metric in self.metrics + } + self.prediction_dfs = {metric: None for metric in self.metrics} + + def on_ensemble(self, body): + """On ensemble message""" + ensembler = self.ensemblers[body["metric"]][body["method"]] + if ensembler.available: + if body["method"] != "Average": + if ( + int(time.time()) - ensembler.last_update_time + > self.metrics_frequency[body["metric"]] // 1000 + ): + self.get_data( + body["metric"], self.predictions_tables_names[body["metric"]] + ) + ensembler.train(self.prediction_dfs[body["metric"]]) + prediction = ensembler.predict(body) + else: + self.get_data(body["metric"], self.predictions_tables_names[body["metric"]]) + ensembler.train(self.prediction_dfs[body["metric"]]) + if ensembler.available: + prediction = ensembler.predict(body) + else: + print("Ensembler not available returning average prediction insetad") + logging.info( + "Ensembler not available returning average prediction insetad" + ) + prediction = self.ensemblers[body["metric"]["Average"]].predict(body) + + ensembling_msg = self.create_msg(prediction, body["predictiontime"]) + return ensembling_msg + # self.send_ensembled_prediction(ensembling_msg, f"ensembled.{body['metric']}") + + @staticmethod + def is_topic(headers, event): + """Check is topic""" + if not hasattr(event, "_match"): + return False + match = getattr(event, "_match") + return headers.get("destination").startswith(match) + + @staticmethod + def has_topic_name(headers, string): + """Check topic name""" + return headers.get("destination").startswith(string) + + @staticmethod + def get_topic_name(headers): + """Get topic name""" + return headers.get("destination").replace("/topic/", "") + + def on_message(self, frame): + """On any message, runs 'on_[MESSAGE NAME]'""" + body = json.loads(frame.body) + headers = frame.headers + topic_name = slugify( + headers.get("destination").replace("/topic/", ""), + separator="_", + ) + func_name = f"on_{topic_name}" + if hasattr(self, func_name): + func = getattr(self, func_name) + func(body) + else: + print(f"Unknonw topic name: {topic_name}") + + @staticmethod + def create_msg(prediction, prediction_time): + """Create message with ensembled prediction and prediction time""" + msg = { + "metricValue": prediction, + "timestamp": int(time.time()), + "predictionTime": prediction_time, + } + + return msg + + def send_ensembled_prediction(self, msg, dest): + """Send prediction via ActiveMQ""" + self.conn.send_to_topic(dest, msg) + + def train_ensembling_methods(self): + """Train esnembling methods (which require time consuming training)""" + print(self.forecasters_names) + print("trainig ensemblers!") + + def run_ensemblers_training(self): + """Run ensemblers training (in sepparate thread)""" + training_thread = threading.Thread(target=self.train_ensembling_methods) + training_thread.start() + training_thread.join() diff --git a/deployment/ensembler/src/env_config.py b/deployment/ensembler/src/env_config.py new file mode 100644 index 00000000..65667e65 --- /dev/null +++ b/deployment/ensembler/src/env_config.py @@ -0,0 +1,17 @@ +"""Script for reading enviromental variables""" + +import os + + +def create_env_config(): + """return dict with enviromental variables,""" + config = {} + config["APP_NAME"] = os.environ.get("APP_NAME", "demo") + config["AMQ_USER"] = os.environ.get("AMQ_USER", "admin") + config["AMQ_PASSWORD"] = os.environ.get("AMQ_PASSWORD", "admin") + config["AMQ_HOST"] = os.environ.get("AMQ_HOST", "localhost") + config["AMQ_PORT_BROKER"] = os.environ.get("AMQ_PORT_BROKER", "61613") + config["START_TOPIC"] = "start_ensembler" + config["TZ"] = os.environ.get("TIME_ZONE", "Europe/Vienna") + config["LOGING_FILE_NAME"] = os.environ.get("LOGING_FILE_NAME", "ensembler") + return config diff --git a/deployment/ensembler/src/messages_schemas.py b/deployment/ensembler/src/messages_schemas.py new file mode 100644 index 00000000..af2a1df2 --- /dev/null +++ b/deployment/ensembler/src/messages_schemas.py @@ -0,0 +1,40 @@ +"""Script for defining objects in pydantic. Untrusted data can +be passed to a model, and after parsing and validation pydantic +guarantees that the fields of the resultant model instance will +conform to the field types defined on the model. """ +from typing import Dict, Optional + +# pylint: disable=no-name-in-module +from pydantic import BaseModel + +# pylint: enable=no-name-in-module + +# pylint: disable=too-few-public-methods +class Prediction(BaseModel): + """Ensemble request message body + method: string, requested ensembling method e.g linnear_programming + metric: string, predicted metric + predictiontime: int, prediction time in seconds + values: map with fields : forecaster (string): prediction (float value or None)""" + + method: str + metric: str + predictiontime: int + values: Dict[ + str, + Optional[float], + ] + + +class EnsembleResponse(BaseModel): + """Ensemble response message body + metricValue: float, ensembled prediction + timestamp: int, ensembled prediction creation time in seconds + predictiontime: int, prediction time in seconds""" + + metricValue: float + timestamp: int + predictionTime: int + + +# pylint: enable=too-few-public-methods diff --git a/deployment/ensembler/src/mocking/helpers.py b/deployment/ensembler/src/mocking/helpers.py new file mode 100644 index 00000000..a9955041 --- /dev/null +++ b/deployment/ensembler/src/mocking/helpers.py @@ -0,0 +1,65 @@ +"""Script with helpers for testing ensemblers, mocking ActiveMQ messages etc.""" +import json +import pandas as pd +import numpy as np + + +class Msg(object): + """Mocked ActiveMQ message""" + + def __init__(self, body, headers): + self.body = json.dumps(body) + self.headers = headers + + +start_ens_header = { + "expires": "0", + "correlation-id": "", + "destination": "/topic/start_ensembler", + "subscription": "2", + "priority": "0", + "type": "", + "message-id": "ID:bulls-ThinkPad-T480-39609-1639727895279-6:1:1:1:6", + "timestamp": "1639738796231", +} +start_ens_body = { + "metrics": [ + {"metric": "MaxCPULoad", "level": 3, "publish_rate": 60000}, + {"metric": "MinCPULoad", "level": 3, "publish_rate": 50000}, + ], + "models": ["tft", "nbeats", "gluon"], +} + + +ens_header = { + "expires": "0", + "correlation-id": "", + "destination": "/topic/ensemble", + "subscription": "2", + "priority": "0", + "type": "", + "message-id": "ID:bulls-ThinkPad-T480-39609-1639727895279-6:1:1:1:6", + "timestamp": "1639738796231", +} + + +ens_body = { + "method": "Average", + "metric": "MaxCPULoad", + "timestamp": 123456789, + "nbeats": 13, + "tft": None, + "gluon": 123, +} + + +def mock_predictions_df(columns_fields): + mock_df = pd.DataFrame() + for column in columns_fields: + mock_df[column] = np.random.rand(1000) + mock_df = mock_df.mask(np.random.random(mock_df.shape) < 0.1) + mock_df["y"] = np.random.rand(1000) + return mock_df + + +# start_ensemble_msg = Msg(body, header) diff --git a/deployment/ensembler/src/models/ensembler_models.py b/deployment/ensembler/src/models/ensembler_models.py new file mode 100644 index 00000000..1f9e09e5 --- /dev/null +++ b/deployment/ensembler/src/models/ensembler_models.py @@ -0,0 +1,165 @@ +"""Script for ensembling methods""" + +import time +import re +from itertools import chain, combinations +from src.mocking.helpers import * +from sklearn.metrics import mean_absolute_error +import cvxpy as cp +import numpy as np +import pandas as pd + + +class BaseEnsembler: + """Base ensembler class""" + + def __init__(self, available, forecasters, metric="cpu", last_n_rows=100): + """Initialization, available is always true for mean esnembler, + other ensemblers firstly need to collect some historical data""" + self.available = available + self.forecasters = forecasters + self.metric = metric + self.last_n_rows = last_n_rows + + def train(self, historcal_df): + """training function for ensemblers, for neural networks oridinary training + is performed, + for other ensemblers just forecasters weights are + updated according to historical data""" + pass + + def predict(self, msg_body): + """prediction function for ensemblers""" + pass + + @staticmethod + def fill_nans(data_frame, columns): + """Fill nans with rows from given columns average""" + data_frame[columns] = ( + data_frame[columns].T.fillna(data_frame[columns].mean(axis=1)).T + ) + data_frame = data_frame.fillna(0) + return data_frame + + +class AverageEnsembler(BaseEnsembler): + """Mean ensembler class""" + + def predict(self, msg_body): + """prediction is just a mean""" + predicted_values = [ + float(msg_body["values"][forecaster]) + for forecaster in self.forecasters + if msg_body["values"][forecaster] + ] + return np.mean(np.array(predicted_values)) + + +class BestSubsetEnsembler(BaseEnsembler): + """Combination (from all possible combinantions of top k forecastres) + of forecastres which boost the prediction performance the most""" + + def __init__(self, *args, top_k_limit=5, **kwargs): + super(BestSubsetEnsembler, self).__init__(*args, **kwargs) + self.top_k = top_k_limit + self.last_update_time = int(time.time()) + self.selected_forecasters = None + self.prediction_columns = None + + def select_top_k(self, data_frame): + """Select top K forecasters basing on historcal mae""" + data_frame[self.prediction_columns] = data_frame[self.prediction_columns].apply( + lambda x: np.abs(x.values - data_frame["y"].values) + ) + return list( + data_frame[self.prediction_columns] + .mean() + .sort_values(ascending=True) + .index[: self.top_k] + ) + + def train(self, historcal_df): + """Select best subset basing on historical predictions""" + self.prediction_columns = [ + col for col in historcal_df.df.columns if re.search(r"prediction$", col) + ] + historcal_df = self.fill_nans(historcal_df.df, self.prediction_columns) + historcal_df = historcal_df.tail(self.last_n_rows) + top_k_predictions = self.select_top_k(historcal_df) + all_top_k_subsets = list( + chain.from_iterable( + combinations(top_k_predictions, r) + for r in range(len(top_k_predictions) + 1) + ) + ) + best_mae = None + for subset in all_top_k_subsets: + if subset: + prediction = historcal_df[list(subset)].mean(axis=1) + mae = mean_absolute_error(prediction, historcal_df["y"]) + if best_mae: + if mae < best_mae: + best_subset = subset + best_mae = mae + else: + best_subset = subset + best_mae = mae + self.selected_forecasters = [ + foreaster.split(".")[1] for foreaster in best_subset + ] + self.last_update_time = int(time.time()) + self.available = True + + def predict(self, msg_body): + """prediction function for ensemblers""" + predicted_values = pd.DataFrame( + { + forecaster: [msg_body["values"][forecaster]] + for forecaster in self.forecasters + } + ) + predicted_values = self.fill_nans(predicted_values, self.forecasters) + prediction = predicted_values[self.selected_forecasters].mean(axis=1) + return prediction.values[0] + + +class LinnearProgrammingEnsembler(BaseEnsembler): + """Weights of ensemblers calculated with linnear + porgramming (so that all weights sum up to 1)""" + + def __init__(self, *args, **kwargs): + super(LinnearProgrammingEnsembler, self).__init__(*args, **kwargs) + self.last_update_time = int(time.time()) + self.weights = None + self.prediction_columns = None + + def train(self, historcal_df): + """Select best subset basing on historical predictions""" + self.prediction_columns = [ + col for col in historcal_df.df.columns if re.search(r"prediction$", col) + ] + historcal_df = self.fill_nans(historcal_df.df, self.prediction_columns) + historcal_df = historcal_df.tail(self.last_n_rows) + X = historcal_df[self.prediction_columns].to_numpy() + y = historcal_df["y"].to_numpy() + # Construct the problem. + b = cp.Variable(X.shape[1]) + objective = cp.Minimize(cp.sum_squares(X @ b - y)) + constraints = [cp.sum(b) == 1] + prob = cp.Problem(objective, constraints) + result = prob.solve() + self.weights = b.value + self.last_update_time = int(time.time()) + self.available = True + + def predict(self, msg_body): + """prediction function for ensemblers""" + predicted_values = pd.DataFrame( + { + forecaster: [msg_body["values"][forecaster]] + for forecaster in self.forecasters + } + ) + predicted_values = self.fill_nans(predicted_values, self.forecasters) + prediction = predicted_values @ self.weights + return prediction.values[0] -- GitLab From 34cbd1744d49d1f4e76ff6121b730ebd432fc2f5 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Fri, 31 Dec 2021 10:36:28 +0100 Subject: [PATCH 3/7] readme corrected, fields names corrected --- deployment/ensembler/README.md | 2 +- deployment/ensembler/env | 19 ++++++++----------- deployment/ensembler/src/ensembler.py | 4 ++-- deployment/ensembler/src/messages_schemas.py | 6 +++--- .../ensembler/src/models/ensembler_models.py | 8 ++++---- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/deployment/ensembler/README.md b/deployment/ensembler/README.md index 2dad9211..1594b696 100644 --- a/deployment/ensembler/README.md +++ b/deployment/ensembler/README.md @@ -33,7 +33,7 @@ send example start_ensembler message: send ensemble request: - curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"BestSubset", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' + curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"BestSubset", "metric": "MaxCPULoad", "predictionTime": 1234567, "predictionsToEnsemble": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' diff --git a/deployment/ensembler/env b/deployment/ensembler/env index 6f917a73..50309b2e 100644 --- a/deployment/ensembler/env +++ b/deployment/ensembler/env @@ -1,12 +1,9 @@ -AMQ_HOSTNAME=localhost -AMQ_USER=morphemic -AMQ_PASSWORD=morphemic -AMQ_PORT=61613 +AMQ_HOST=localhost +AMQ_USER=admin +AMQ_PASSWORD=admin APP_NAME=demo -METHOD=tft -DATA_PATH=./ -INFLUXDB_HOSTNAME=localhost -INFLUXDB_PORT=8086 -INFLUXDB_USERNAME=morphemic -INFLUXDB_PASSWORD=password -INFLUXDB_DBNAME=morphemic +AMQ_PORT_BROKER=61613 +START_TOPIC=start_ensembler +TZ=Europe/Vienna +LOGING_FILE_NAME=ensembler + diff --git a/deployment/ensembler/src/ensembler.py b/deployment/ensembler/src/ensembler.py index ed9d8b39..bf7164b3 100644 --- a/deployment/ensembler/src/ensembler.py +++ b/deployment/ensembler/src/ensembler.py @@ -99,7 +99,7 @@ class Ensembler(stomp.ConnectionListener): ) prediction = self.ensemblers[body["metric"]["Average"]].predict(body) - ensembling_msg = self.create_msg(prediction, body["predictiontime"]) + ensembling_msg = self.create_msg(prediction, body["predictionTime"]) return ensembling_msg # self.send_ensembled_prediction(ensembling_msg, f"ensembled.{body['metric']}") @@ -140,7 +140,7 @@ class Ensembler(stomp.ConnectionListener): def create_msg(prediction, prediction_time): """Create message with ensembled prediction and prediction time""" msg = { - "metricValue": prediction, + "ensembledValue": prediction, "timestamp": int(time.time()), "predictionTime": prediction_time, } diff --git a/deployment/ensembler/src/messages_schemas.py b/deployment/ensembler/src/messages_schemas.py index af2a1df2..6e3fb5df 100644 --- a/deployment/ensembler/src/messages_schemas.py +++ b/deployment/ensembler/src/messages_schemas.py @@ -19,8 +19,8 @@ class Prediction(BaseModel): method: str metric: str - predictiontime: int - values: Dict[ + predictionTime: int + predictionsToEnsemble: Dict[ str, Optional[float], ] @@ -32,7 +32,7 @@ class EnsembleResponse(BaseModel): timestamp: int, ensembled prediction creation time in seconds predictiontime: int, prediction time in seconds""" - metricValue: float + ensembledValue: float timestamp: int predictionTime: int diff --git a/deployment/ensembler/src/models/ensembler_models.py b/deployment/ensembler/src/models/ensembler_models.py index 1f9e09e5..7b8b0732 100644 --- a/deployment/ensembler/src/models/ensembler_models.py +++ b/deployment/ensembler/src/models/ensembler_models.py @@ -48,9 +48,9 @@ class AverageEnsembler(BaseEnsembler): def predict(self, msg_body): """prediction is just a mean""" predicted_values = [ - float(msg_body["values"][forecaster]) + float(msg_body["predictionsToEnsemble"][forecaster]) for forecaster in self.forecasters - if msg_body["values"][forecaster] + if msg_body["predictionsToEnsemble"][forecaster] ] return np.mean(np.array(predicted_values)) @@ -114,7 +114,7 @@ class BestSubsetEnsembler(BaseEnsembler): """prediction function for ensemblers""" predicted_values = pd.DataFrame( { - forecaster: [msg_body["values"][forecaster]] + forecaster: [msg_body["predictionsToEnsemble"][forecaster]] for forecaster in self.forecasters } ) @@ -156,7 +156,7 @@ class LinnearProgrammingEnsembler(BaseEnsembler): """prediction function for ensemblers""" predicted_values = pd.DataFrame( { - forecaster: [msg_body["values"][forecaster]] + forecaster: [msg_body["predictionsToEnsemble"][forecaster]] for forecaster in self.forecasters } ) -- GitLab From c354551b459e100171e1ed274266b6a169daa470 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Tue, 11 Jan 2022 14:58:14 +0100 Subject: [PATCH 4/7] adding port and host --- deployment/ensembler/app.py | 33 ++++----------------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/deployment/ensembler/app.py b/deployment/ensembler/app.py index 6ad1dd18..9539ba0f 100644 --- a/deployment/ensembler/app.py +++ b/deployment/ensembler/app.py @@ -5,34 +5,9 @@ from datetime import datetime from pytz import timezone import setproctitle from fastapi import FastAPI -from amq_message_python_library import * # python amq-message-python-library from src.messages_schemas import Prediction, EnsembleResponse -from src.ensembler import Ensembler from src.env_config import create_env_config - - -class Services: - """Class for starting amq service""" - - def __init__(self, config): - """init function""" - self.start_amq_service(config) - # self.start_fastapi_service() - - def start_amq_service(self, config): - """Connect to amq, subscribe to start ensembling topic""" - start_conn = morphemic.Connection( - config["AMQ_USER"], - config["AMQ_PASSWORD"], - host=config["AMQ_HOST"], - port=config["AMQ_PORT_BROKER"], - debug=True, - ) - start_conn.connect() - start_conn.conn.subscribe(f"/topic/{config['START_TOPIC']}", "1", ack="auto") - self.ens = Ensembler(start_conn) - start_conn.conn.set_listener("ensemble", self.ens) - +from src.services import AMQService env_config = create_env_config() setproctitle.setproctitle("Ensembler") @@ -40,13 +15,13 @@ logging.basicConfig( filename=f"logs/{env_config['LOGING_FILE_NAME']}.out", level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S", - format="START %(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s", + format="%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s", ) logging.Formatter.converter = lambda *args: datetime.now( tz=timezone(env_config["TZ"]) ).timetuple() -s = Services(env_config) +amq_service = AMQService(env_config) app = FastAPI() @@ -54,7 +29,7 @@ app = FastAPI() @app.post("/ensemble", response_model=EnsembleResponse) async def add_country(prediction: Prediction): """Function for returning ensembled value on request""" - return s.ens.on_ensemble(prediction.dict()) + return amq_service.ens.on_ensemble(prediction.dict()) log = logging.getLogger() -- GitLab From e4af1634bccd6789ee92ac7f07ffc4a6d07fc491 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Tue, 11 Jan 2022 14:59:12 +0100 Subject: [PATCH 5/7] port and host added (fastapi) --- deployment/ensembler/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/ensembler/Dockerfile b/deployment/ensembler/Dockerfile index 2bd617bb..c193449a 100644 --- a/deployment/ensembler/Dockerfile +++ b/deployment/ensembler/Dockerfile @@ -23,6 +23,6 @@ RUN cd /var/lib/morphemic/ \ && mkdir -p /wd/logs -CMD ["uvicorn", "app:app"] +CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] -- GitLab From b37d31882c402b43ae3cf7529ee7ea94ff7f2dee Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Tue, 11 Jan 2022 15:33:36 +0100 Subject: [PATCH 6/7] all files updated --- .../__pycache__/helpers.cpython-37.pyc | Bin 0 -> 1549 bytes .../.ipynb_checkpoints/test-checkpoint.ipynb | 948 +++++++++++++++++ .../__pycache__/dl_dataset.cpython-37.pyc | Bin 0 -> 6410 bytes .../__pycache__/dl_helpers.cpython-37.pyc | Bin 0 -> 1860 bytes .../ensembler_models.cpython-37.pyc | Bin 0 -> 6722 bytes deployment/ensembler/src/models/dl_dataset.py | 149 +++ deployment/ensembler/src/models/dl_helpers.py | 51 + deployment/ensembler/src/models/dl_models.py | 84 ++ .../src/models/dl_torch_lightning.py | 2 + deployment/ensembler/src/models/new.csv | 96 ++ deployment/ensembler/src/models/test.ipynb | 988 ++++++++++++++++++ deployment/ensembler/src/services.py | 26 + 12 files changed, 2344 insertions(+) create mode 100644 deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc create mode 100644 deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb create mode 100644 deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc create mode 100644 deployment/ensembler/src/models/__pycache__/dl_helpers.cpython-37.pyc create mode 100644 deployment/ensembler/src/models/__pycache__/ensembler_models.cpython-37.pyc create mode 100644 deployment/ensembler/src/models/dl_dataset.py create mode 100644 deployment/ensembler/src/models/dl_helpers.py create mode 100644 deployment/ensembler/src/models/dl_models.py create mode 100644 deployment/ensembler/src/models/dl_torch_lightning.py create mode 100644 deployment/ensembler/src/models/new.csv create mode 100644 deployment/ensembler/src/models/test.ipynb create mode 100644 deployment/ensembler/src/services.py diff --git a/deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc b/deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..040db5f0831c309e121a475e1d69ef8157146615 GIT binary patch literal 1549 zcmZWp-ESL35Z}E!+ZV@n0!`CEQ{)GPWP#(vDfy@(XlcZknh@F`q(kU9->mIT?yI}& zG&ar?{U@mMkUa9v3vWm~^AGGRFN8mVr_NrIVwFAZ%G3zl)%mT6qI55 z)b(7bKox2*b85pZN^cmcXTh6r1Lk@*+&s0ssoZ1!HP15KLf-{=3oLjWZl4ytX;_3i z&xuz7>j`PRGy3vLD0rso&$#N>`z*?sko9gV>WWFllU|)AlEs|})gRR3G(0rA2chCe zZ0GBG%%lu@OxBqSmoD(GWH&VQdRQpj$0-+(FoO3do&^-|Z-I?jIN)Fw1#R!h-ssj2 zhG+1<=%J0yW*BbfL!5FRi6UooOwZ|<_}17$Y6HP|bhqJX=Rl^3F2Eqpq;@(f40Wl` z0>FzjZ0$%EbwvSV2z)#83lT1|fA?GcG-j>fSs;?Mwe!{Ez0du2yA`J*>$8}L%}lUN zq#<5A6)j*{ln!H-sMf10;oiJPt*crtWkc=yK2NyveFGTjAR)9uM-{yE(zR(9tAP8G zAZEU=%f26{Fo=v?@%^WRAiA=Yd>_)#_l1d-Cp|$7?1ZU#31@zgOC2lMXu7P)XuhS= zjE60$0-^j@No(33-Th+wUS|+Rvbo>q$>ClA&HcL@%gxozwdKv`%G&DYdV76i^TYP~ zW^?V{O8%{R)!eYUvA((1UR`OpUWpxNTrfGRg{crM3KUP1CI>wYIiT{juE;@0=DO#bh zSfnf2pc8S~_eG!>I`QPniSPYEh_+Q%>0;7hfs(q=iw0@ZuypA%hQwegut<((t}1n1 zBd_$}hzZ0xzxn5PrHd+_fAJ%dMlnCXpMo$L7Y3GM(U9AQ+(8mjBxabT4dinCK1RXd z_ne&2+LZ;D4ye=@D1f z*mrjM-*`^%#m{E^_OYhJMoC*4R&qN~!KVTNrmZB?MG+*B#-3xicH%%D>VoVC8Ee=c zK3+746X|z3i$HoMgK8hTx_D`L4RiWNZpY>Tj=zQ!9ih8{7nBtwgu1j$=jZ~RrQ&^D zH>#qBOqhD;Vut4jQoL&xg#_DmDBjBrY3G22Do3w3`wFrCWfOa~|1_q#y)wSkwaqoM x(dNfZBx{;nm@d)o)@6fzWFALuA#pHG{Os8&i%x#7Q>GQGR+!XT)SXzn&PzkbpuGS9 literal 0 HcmV?d00001 diff --git a/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb b/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb new file mode 100644 index 00000000..95fa26ea --- /dev/null +++ b/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb @@ -0,0 +1,948 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "5af44adc", + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding\n", + "\n", + "\n", + "\"\"\"Script for deep learning networks \"\"\"\n", + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import os\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "\n", + "# PyTorch\n", + "import torch.utils.data as data\n", + "import torch\n", + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "523d7c32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametimearima_left_confarima_probabilityarima_right_confarima_valuecnn_left_confcnn_probabilitycnn_right_confcnn_valueensembled_left_confensembled_probabilityensembled_right_confensembled_valueprophet_left_confprophet_probabilityprophet_right_confprophet_valueyseries_id
0MinimumCoresPredictions1640789523000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.4472720.8121.613427-21.27583210
1MinimumCoresPredictions1640789561000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-150.4075260.8114.049350-21.38388410
2MinimumCoresPredictions1640789566000000000-161.8963560.95157.730807-2.082775NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN10
3MinimumCoresPredictions1640789599000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.9194030.8114.000617-21.49079310
4MinimumCoresPredictions1640789636000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-154.5533040.8117.114690-21.59655110
...............................................................
90MinimumCoresPredictions1640791237000000000NaNNaNNaNNaNNaNNaNNaNNaN205.8764070.87520369.94575810361.245179NaNNaNNaNNaN11
91MinimumCoresPredictions1640791238000000000NaNNaNNaNNaNNaNNaNNaNNaN-132.0265690.85020369.9457586906.530299NaNNaNNaNNaN11
92MinimumCoresPredictions1640791248000000000-419.0251750.95-81.507635-250.266405NaNNaNNaNNaN-193.4603270.87521115.18637010543.742149NaNNaNNaNNaN11
93MinimumCoresPredictions1640791268000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-129.1687690.8129.302014-2.99466811
94MinimumCoresPredictions1640791270000000000NaNNaNNaNNaNNaNNaNNaNNaN-193.4603270.85021115.1863707028.163210NaNNaNNaNNaN10001
\n", + "

95 rows × 20 columns

\n", + "
" + ], + "text/plain": [ + " name time arima_left_conf \\\n", + "0 MinimumCoresPredictions 1640789523000000000 NaN \n", + "1 MinimumCoresPredictions 1640789561000000000 NaN \n", + "2 MinimumCoresPredictions 1640789566000000000 -161.896356 \n", + "3 MinimumCoresPredictions 1640789599000000000 NaN \n", + "4 MinimumCoresPredictions 1640789636000000000 NaN \n", + ".. ... ... ... \n", + "90 MinimumCoresPredictions 1640791237000000000 NaN \n", + "91 MinimumCoresPredictions 1640791238000000000 NaN \n", + "92 MinimumCoresPredictions 1640791248000000000 -419.025175 \n", + "93 MinimumCoresPredictions 1640791268000000000 NaN \n", + "94 MinimumCoresPredictions 1640791270000000000 NaN \n", + "\n", + " arima_probability arima_right_conf arima_value cnn_left_conf \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 0.95 157.730807 -2.082775 NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN NaN \n", + "91 NaN NaN NaN NaN \n", + "92 0.95 -81.507635 -250.266405 NaN \n", + "93 NaN NaN NaN NaN \n", + "94 NaN NaN NaN NaN \n", + "\n", + " cnn_probability cnn_right_conf cnn_value ensembled_left_conf \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN 205.876407 \n", + "91 NaN NaN NaN -132.026569 \n", + "92 NaN NaN NaN -193.460327 \n", + "93 NaN NaN NaN NaN \n", + "94 NaN NaN NaN -193.460327 \n", + "\n", + " ensembled_probability ensembled_right_conf ensembled_value \\\n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "4 NaN NaN NaN \n", + ".. ... ... ... \n", + "90 0.875 20369.945758 10361.245179 \n", + "91 0.850 20369.945758 6906.530299 \n", + "92 0.875 21115.186370 10543.742149 \n", + "93 NaN NaN NaN \n", + "94 0.850 21115.186370 7028.163210 \n", + "\n", + " prophet_left_conf prophet_probability prophet_right_conf prophet_value \\\n", + "0 -158.447272 0.8 121.613427 -21.275832 \n", + "1 -150.407526 0.8 114.049350 -21.383884 \n", + "2 NaN NaN NaN NaN \n", + "3 -158.919403 0.8 114.000617 -21.490793 \n", + "4 -154.553304 0.8 117.114690 -21.596551 \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN NaN \n", + "91 NaN NaN NaN NaN \n", + "92 NaN NaN NaN NaN \n", + "93 -129.168769 0.8 129.302014 -2.994668 \n", + "94 NaN NaN NaN NaN \n", + "\n", + " y series_id \n", + "0 1 0 \n", + "1 1 0 \n", + "2 1 0 \n", + "3 1 0 \n", + "4 1 0 \n", + ".. ... ... \n", + "90 1 1 \n", + "91 1 1 \n", + "92 1 1 \n", + "93 1 1 \n", + "94 1000 1 \n", + "\n", + "[95 rows x 20 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('new.csv')\n", + "df['y'] = [1 for _ in range(df.shape[0] - 1)] + [1000]\n", + "df['series_id'] = list([0 for _ in range(20)]) + list([1 for _ in range(df.shape[0] - 20)])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "e27f8c06", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Script for pythorch dataset class\"\"\"\n", + "import torch.utils.data as data\n", + "import torch\n", + "import re\n", + "import random\n", + "import numpy as np\n", + "\n", + "\n", + "class DatasetHistMask(torch.utils.data.Dataset):\n", + " \"\"\"Defines a dataset for PyTorch, dataset\n", + " networks_prediction_df - data frame with predictions and target\n", + " models_list - list with present forecasters\n", + " max_pred_len - maximum value for prediction steps\n", + " series_len - ensemble series len (historical values len + curent prediction length)\n", + " target_column - target column name in networks_prediction_df\n", + " start_idx - start from this indices networks_prediction_df rows will be chosen\n", + " last_idx - networks_prediction_df rows will be chosen to this index (might be None)\n", + " nan_fill_value - value for filling missing data e.g target value mean\n", + " \"\"\"\n", + "\n", + " def __init__(\n", + " self,\n", + " networks_prediction_df,\n", + " models_list=[\"arima\", \"cnn\"],\n", + " max_pred_len=5,\n", + " series_len=16,\n", + " target_column=\"y\",\n", + " start_idx=0,\n", + " last_idx=None,\n", + " nan_fill_value=100,\n", + " ):\n", + " \"Initialization\"\n", + " self.df = networks_prediction_df\n", + " self.get_rows(last_idx, start_idx)\n", + " self.models_list = models_list\n", + " assert len(self.models_list) > 1, \"There must be more than one forecaster!\"\n", + " self.x_columns = self.get_x_col_names()\n", + " self.series_lengths = self.get_series_lengths()\n", + " self.valid_indices = self.get_valid_indices()\n", + " self.df = self.df[self.x_columns + [target_column, \"series_id\"]]\n", + " self.target_column = target_column\n", + " self.max_pred_len = max_pred_len\n", + " self.series_len = series_len\n", + " self.nan_fill_value = nan_fill_value\n", + "\n", + " def get_x_col_names(self):\n", + " \"\"\"Get forecasters predictions columns names\"\"\"\n", + " predictions_col_pattern = \"\".join(\n", + " [f\"^{model}_value|\" for model in self.models_list]\n", + " )[:-1]\n", + " return [\n", + " col for col in self.df.columns if re.match(predictions_col_pattern, col)\n", + " ]\n", + "\n", + " def get_series_lengths(self):\n", + " \"\"\"Get whole series lenghths using series_id column\"\"\"\n", + " return self.df[\"series_id\"].value_counts().sort_values(\"index\").cumsum()\n", + "\n", + " def get_valid_indices(self):\n", + " \"\"\"Get valid inidices for series starts according to series_id column\"\"\"\n", + " indices = [\n", + " i\n", + " for i in range(self.df.shape[0])\n", + " if self.series_lengths.loc[self.df.iloc[i][\"series_id\"]] - i >= 15\n", + " ]\n", + " return indices\n", + "\n", + " def get_rows(self, last_idx, start_idx):\n", + " \"\"\"Get rows according to last_idx, start_idx\"\"\"\n", + " if last_idx:\n", + " self.df = self.df.iloc[start_idx:last_idx]\n", + " else:\n", + " self.df = self.df.iloc[start_idx:]\n", + "\n", + " def __len__(self):\n", + " \"Denotes the total number of samples\"\n", + " return len(self.valid_indices)\n", + "\n", + " def get_one_series_df_part(self, idx):\n", + " \"\"\"Get single series (consecutive rows from\n", + " data frame of length: series_len)\"\"\"\n", + " return self.df.iloc[idx : idx + self.series_len].reset_index()\n", + "\n", + " def get_target_value(self, df):\n", + " \"\"\"Get target value, single y true value which\n", + " we want to approximate with ensembling\"\"\"\n", + " return df[self.target_column].values[-1]\n", + "\n", + " def replace_future_values(self, col, hist_len):\n", + " \"\"\"Replace values connected with target from future\"\"\"\n", + " col.iloc[hist_len:] = self.nan_fill_value\n", + " return col\n", + "\n", + " def add_columns(self, x, hist_len):\n", + " \"\"\"Add extra columns: time_idx, nans masks, is_past\"\"\"\n", + " for col in self.x_columns:\n", + " x[f\"{col}_res\"] = x[col] - x[self.target_column]\n", + " x[f\"{col}_res\"] = self.replace_future_values(x[f\"{col}_res\"], hist_len)\n", + " x[\"time_idx\"] = range(self.series_len)\n", + " x[\"is_past\"] = [1 for _ in range(hist_len)] + [\n", + " 0 for _ in range(self.series_len - hist_len)\n", + " ]\n", + " for col in self.x_columns:\n", + " x[f\"{col}_mask\"] = x[col].notna().astype(int)\n", + " return x\n", + "\n", + " def get_predictions_to_ensemble(self, x):\n", + " \"\"\"Get forcasters values which will be ensembled\"\"\"\n", + " return (\n", + " x[self.x_columns + [f\"{col}_mask\" for col in self.x_columns]].tail(1).copy()\n", + " )\n", + "\n", + " @staticmethod\n", + " def to_tensors(x, preds, y):\n", + " \"\"\"Convert network input to tensor\"\"\"\n", + " return (\n", + " torch.tensor(x.to_numpy().astype(np.float32)),\n", + " torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(),\n", + " torch.tensor(y),\n", + " )\n", + "\n", + " def get_one_series(self, idx, hist_len=10):\n", + " \"\"\"Get single input example\"\"\"\n", + " x = self.get_one_series_df_part(idx)\n", + " target = self.get_target_value(x)\n", + " x[self.target_column] = self.replace_future_values(\n", + " x[self.target_column], hist_len\n", + " )\n", + " x = self.add_columns(x, hist_len)\n", + " predictions_to_ensemble = self.get_predictions_to_ensemble(x)\n", + " x = x.fillna(self.nan_fill_value)\n", + " return (x, predictions_to_ensemble, target)\n", + "\n", + " def __getitem__(self, idx, rand_hist_len=True):\n", + " \"\"\"Get item, optionaly rand histry length\"\"\"\n", + " idx = self.valid_indices[idx]\n", + " if rand_hist_len:\n", + " hist_len = random.randint(\n", + " self.series_len - self.max_pred_len, self.series_len - 1\n", + " )\n", + " else:\n", + " hist_len = (\n", + " self.series_len\n", + " - self.get_one_series_df_part(idx)[self.target_column]\n", + " .iloc[::-1]\n", + " .last_valid_index()\n", + " )\n", + " x, predictions_to_ensemble, target = self.get_one_series(idx, hist_len=hist_len)\n", + " return self.to_tensors(x, predictions_to_ensemble, target)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "52ea0d4c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "67" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d = DatasetHistMask(df)\n", + "len(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "ccdf0833", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([[ 5.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 0.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 6.0000, 92.3064, 100.0000, 1.0000, 0.0000, 91.3064,\n", + " 100.0000, 1.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 7.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 2.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 8.0000, 149.9781, 100.0000, 1.0000, 0.0000, 148.9781,\n", + " 100.0000, 3.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 9.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 4.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 10.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 5.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 11.0000, 317.8232, 100.0000, 1.0000, 0.0000, 316.8232,\n", + " 100.0000, 6.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 12.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 7.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 13.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 8.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 14.0000, 477.4886, 100.0000, 1.0000, 0.0000, 476.4886,\n", + " 100.0000, 9.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 15.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 10.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 16.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 11.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 17.0000, 468.1973, 100.0000, 1.0000, 0.0000, 467.1973,\n", + " 100.0000, 12.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 18.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 13.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 19.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 14.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 20.0000, -221.9459, 100.0000, 1.0000, 1.0000, -222.9459,\n", + " 100.0000, 15.0000, 1.0000, 1.0000, 0.0000]]),\n", + " tensor([-221.9459, 0.0000, 1.0000, 0.0000]),\n", + " tensor(1))" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.__getitem__(19, rand_hist_len=False)\n", + "x = d.__getitem__(5, rand_hist_len=False)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "c64676ce", + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding, base_conv1_layer, attention_module" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "fde0de4c", + "metadata": {}, + "outputs": [], + "source": [ + "def calculate_output_shape(i, p, k, d, s):\n", + " o = (i + 2 * p - k - (k - 1) * (d - 1)) / s + 1\n", + " return int(o)\n", + "\n", + "\n", + "class EnsemblerRegressorModel(nn.Module):\n", + " def __init__(\n", + " self,\n", + " forecasters_num=2,\n", + " n_inputs=[11, 16, 32],\n", + " n_outputs=[16, 32, 64],\n", + " kernel_size=[5, 4, 4],\n", + " stride=[1, 1, 2],\n", + " padding=[1, 2, 1],\n", + " dilation=[1, 2, 1],\n", + " series_len=16,\n", + " with_att=True\n", + " ):\n", + " super().__init__()\n", + " self.forecasters_num = forecasters_num\n", + " self.n_layers = len(dilation)\n", + " self.with_att = with_att\n", + " self.series_len = series_len\n", + " self.cnn_layers = nn.ModuleList(self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, padding, dilation))\n", + " self.att_layers = attention_module(embed_dim=n_outputs[-1])\n", + " self.activation_layers = nn.GELU()\n", + " w = series_len\n", + " for p, k, d, s in zip(padding, kernel_size, dilation, stride):\n", + " w = calculate_output_shape(w, p, k, d, s)\n", + " self.last_layer = nn.Linear(int(series_len * n_outputs[-1]), self.forecasters_num)\n", + "\n", + " \n", + " def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, padding, dilation):\n", + " return [\n", + " base_conv1_layer(in_f, out_f, k, stride=s, padding=calculate_matching_padding(self.series_len, self.series_len, k, d, s), dilation=d)\n", + " for in_f, out_f, k, s, p, d in zip(\n", + " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", + " )\n", + " ]\n", + " \n", + "\n", + " def forward(self, batch):\n", + " x, preds_to_ensemble = batch\n", + " for i in range(self.n_layers):\n", + " x = x.permute(0, 2, 1)\n", + " x = self.cnn_layers[i](x)\n", + " x = x.permute(0, 2, 1)\n", + " if i == self.n_layers - 1:\n", + " if self.with_att:\n", + " x, _ = self.att_layers(x, x, x)\n", + " x = self.activation_layers(x)\n", + "\n", + " x = torch.flatten(x, start_dim=1)\n", + " x = self.last_layer(x)\n", + " mask = preds_to_ensemble[:,self.forecasters_num:]\n", + " preds = preds_to_ensemble[:, :self.forecasters_num]\n", + " x = masked_softmax(x, mask)\n", + " print(x)\n", + " return torch.sum(preds * x, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "249bebd1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[-221.9459, 0.0000, 1.0000, 0.0000],\n", + " [-221.9459, 0.0000, 1.0000, 0.0000]])" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x1 = torch.stack([x[0], x[0]])\n", + "x2 = torch.stack([x[1], x[1]]).squeeze()\n", + "x2" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "2ad0a196", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[1.0000, 0.0000],\n", + " [1.0000, 0.0000]], grad_fn=)\n" + ] + }, + { + "data": { + "text/plain": [ + "tensor([-221.9436, -221.9435], grad_fn=)" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = EnsemblerRegressorModel()\n", + "n((x1, x2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f60479d8", + "metadata": {}, + "outputs": [], + "source": [ + "def create_cnn_config():\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "122558e5", + "metadata": {}, + "outputs": [], + "source": [ + "class BaseCNNNetworkMask(nn.Module):\n", + " \"\"\"Dense CNN 1D network with softmax at the end\"\"\"\n", + " def __init__(self, num_feat=6, hist_len=15, pred_len=1, extra_feat=3):\n", + " super(BaseCNNNetworkMask, self).__init__()\n", + " self.extra_feat = extra_feat\n", + " self.num_feat = num_feat\n", + " self.hist_len = hist_len\n", + " self.pred_len = pred_len\n", + " n_inputs = [\n", + " self.num_feat,\n", + " 16,\n", + " ]\n", + " n_outputs = [16, 32]\n", + " kernel_size = [4, 4]\n", + " stride = [1, 1]\n", + " padding = [1, 2]\n", + " dilation = [1, 2]\n", + " self.n_layers = len(dilation)\n", + " layers = [\n", + " base_conv1_layer(in_f, out_f, k, stride=s, padding=p, dilation=d)\n", + " for in_f, out_f, k, s, p, d in zip(\n", + " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", + " )\n", + " ]\n", + " self.cnn_layers = nn.ModuleList(layers)\n", + " self.att_layers = nn.ModuleList(\n", + " [[attention_module(embed_dim=e_dim) for e_dim in n_outputs][-1]]\n", + " )\n", + " self.activation_layers = nn.ModuleList(\n", + " [nn.GELU() for _ in range(self.n_layers)]\n", + " )\n", + " self.last_layer = nn.Sequential(\n", + " nn.Linear(297, 128),\n", + " nn.BatchNorm1d(num_features=128),\n", + " nn.Linear(128, int((num_feat - self.extra_feat) // 2)),\n", + " )\n", + "\n", + " def forward(self, x):\n", + " org_x = x[\n", + " :,\n", + " self.hist_len :,\n", + " : -self.extra_feat - int((self.num_feat - self.extra_feat) // 2),\n", + " ]\n", + " mask = x[\n", + " :,\n", + " 0,\n", + " self.num_feat - int((self.num_feat - self.extra_feat) // 2) :,\n", + " ]\n", + " for i in range(self.n_layers):\n", + " x = x.permute(0, 2, 1)\n", + " x = self.cnn_layers[i](x)\n", + " x = x.permute(0, 2, 1)\n", + " if i >= self.n_layers:\n", + " x, _ = self.att_layers[0](x, x, x)\n", + " x = self.activation_layers[i](x)\n", + "\n", + " x = torch.flatten(x, start_dim=1)\n", + " x = torch.cat([x, org_x.squeeze(1)], 1)\n", + " x = self.last_layer(x)\n", + " x = masked_softmax(x, mask)\n", + " return torch.sum(org_x * x[:, None], 2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cbf674cc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autoclose": false, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc b/deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb4b5450357caa6da55127bae1c67905f2a50cf1 GIT binary patch literal 6410 zcmb7ITXWmS8N~wNMHD5=j%-VIE^v}MrsK$NlHO9)xj9YKi<-usNy}-1L9n0*nFQzs z7)u_6xq=?h-_q`#1t_M8PkimZ|}k@whbTYssvE4r?>tGceW z>u(#Lo$y_&qO4 zj$`yGQbxod=kD;#1Re2uug1jIvqHf4FxsG~KUXqtlH|68<3DisSN%<7&<=~8T zR@PS6RXAaT42 ztK|RPy?bQ;M%meL@QZ@a?mz`H^wThoT-kA6(1VDt?$iyuF_D zQQ-L97~;}P0+{8B|Nl%UjVGH1yUw+KxZO>;@KziJIj@lyxgBih=CXd_gv{9;M%zw5 zOcK^K5+~T$F6EKW=m%a-VY}j~uJPao~b&fQ~6_kr(tmihzHp-wxC~tz9c)xZ&RcLq)E0s_kNaRppH?Nu6f_M{cN96c9#<|Eyl(R$auGe;DdAsxK~W z+)R{zGndOv*>em3yD`|y>MnQ)Q`hC9$r=iySrtuD6&FN9|1Y4;|7dN_(`}SfeJYPX z)`XdbCwUo#6o&?V_5lGR?!cEG33~5O%yr|B#-~O{z>ix800sjGzXKe#QR{64hpE1k z6P_a}`~oamtIn8g4!3L24(@VuGO~?LKUmpE@ED7~ft1g!znTw-KJyFl;i#6I;8=^O zWoG8at*oL&qaV+yiW0M}$kNbn$-{#ufsA`N}nit0$sx~%zF+5>%8;x@Q*71Mv zn<2T1)gI%r+)IRRIX~Qoq|Wm4iu{1thmbc5&)o6AkWx zm%`;oQ&!Z|7*4$uJhbf0-igB~hZUVfR?FRP(h`a?%r_P4IkrimT1K&fC#j<_Ok122 zb#wI8*9c?6G9f~EXivl)=sl!Z2g66kp()KHacCVui7jh%i!gZDjc1|^TxvIQhT26I zh7`&I6pA!u6&Pi(+p?8rsHy!XIqq`V6E@r(Xukk z(bK1~I5lN@iV2s5$ixsRbPaW6RtNRe_zb471EW|6+zI)8F(&No(HrDfI}(JgFppcz z8}d!^(1zIW`>~RY5C}K(5}2WY)}Wzv3k?meYx{uJ4)#Y0gBwHc68;(_ezIEOgG;Dt*lHTi;qwnk18vN(8e-KNUHMune8Q7I))S}_@?+Qp z;kqLbECqcS0-6z>EBoZ6Pg0>~?#FbBF{8B7N#Dp-%FJa8+z_tnCW@Ao+ukL1th1mS zKLJgq^LOy%jKKz1&HwezbVuBK0tuQPfvHW8OQhN>Yo9Ad&)f;3I7OzEb`f;r6ggZp z?0*y}C+;|j*B|tP1VlD5PZ3lzD%bQ;=2^{Ug6O(G!%Jy77w2VOjA5p%f2@fUO&Pf^ zBnrbo3n>Li?a1~Yl?`ATU! zcx@HVLQ7vq)@)G)IH54U!<7_Bv!JLsRb&?^W~3)&&LBJP0NLm-!9>o!HM%;_{^?U@ zq%qMGy^xjyjC2QS**aaLIcie|MWU>|8L*T~WY0+zvUuGI=NbCli5MQ@B;g?shu`o9 z0~I6d_tN5YQRMSjLp_5n!LrURs(KwNUYnJM=qwns6|z(0J9_lJ6TCa8@qTjfjI~WL zz`coqv7oKdt~SxuoZosc81y{9;E?G+6a{`7$o!O4$V49iI>QtP51JOUp&8SE);wpY&Y7^sd2~Y>;{QZr_orm=j`6{3`|!hK zL<6m6D0q!6OJ^)(8&Prkj#1{(iT6$8LH&J0XYKYQn2W@W{4|a}WZf|ZDWcdN-?v{J&zqGk(X5=w!J}+Sz(mIJLyO#cGW8!M)1ywAX_}a;)nR2 zF!&i}Q#>x770Y5pJc+g=Mwh=rG&3G(VvEmW9Suz+2uNT6NW%7!;6d+DNDB#@sS`GP z^a8ySGM3`5p}YjpUTAX4E^iLxjMTZEMgh+?8U@SDi-11kb8~`)AK~MS>`xJeMni;w zB^q9xXPFM`WUidXZb{T>=+Fp6OxEXXJN3d|X8ZAAuXKv9mqbnVpI!cnJ?@vZ8P@3e zZ$R6`m(XG+zT`!`@VG!f0lT$Qd#7@QW0vj{JJq=!1cjVnu%}+drkNQHvRbDXd+AFrs_&x*GNLTn6$&>| zOh4yg+Q1U|YRLn9&J!4W6^Dq?rFl_IhaNLqnXpgRC+Pe&UcfpKdL-b$CMTRhuy71i9)fyxD`>2{6tJZ<(N)<{Bfcp`E5- z@}$lzu!*`UMo-R*a(3dqi74q?sU{tj6dE*co(f=lrn;WOv?)S7Hlh+*66XYpF1nic zA66)Mw5v!@YB=iST=NM;epo+39HWSL78pgO{b%#H*1o-8+2t+qt#l^(1$9B_o9}GPJOMgMO zEo0wx)f1#>nFXV$qVrcY8uc=ZIiyZO+QijS8v6YJ7xPj}A(zKJ&YCi)TRN^WU^59! zuA`_o>+6qjbWy>lHk5SQ-jeL6PAiA~JM5t`h@@x!KN0@%y|GmgW=p?L*2=aZh_*>}1_(%G@+ zT#^yXHpm7cWw+u!cS%uJWS`0b}(lOKIT zUg6?$xS)IrpZXRABSXR{b8=cZLx)aucj$u6&Aq}O`e5^z|AGty_9kny&I>whu`cU@ zrOg&tpUr@!!)~)#HV0aly}{;Tug9Dn65Tm@u(K(%N{6FThK%zn%y}Y3CicQH&nqrf zII2^T>Z}y%0vsaS5jDLdp6!iwEJ|6V4q9R0+=6ctK6MX-CNC*`PD2`c?ttc=gKghy zD5Gce+=cfYysa4N2%Qd3m!z>!t^012vbAO>8aNMG%uZVvOrG##@}}v z2UCCMH0~lf4H~}*mI;97Za)LmS_hCVmKBj_d|k?PY+U}lGX5wp6Kz~o7g5W&hdec2 zk*EXX!dcVemCEu`3_UojhCSTjEWWmYe<};%L?BVkt?5Bkj&zYcp8=a{gCMj^`*fbl zMbJ}VvK;})YawFBmq_C+5DW=4;O`QIxkwrUD`$}~XBmRlr18I}HbmKnOD>R85UZOB z9R-GFhL(mN7|IM)hE_M-yqhL@TIY%8ae)K@8pl<_7|aWB(= zD3NOdrDevrX-%CnZI*$zP+K-!o7PNJd6M$Tmk6OmOii!}7q2nX`2uf4+8Yn+05EBb z82(XfWjZ2;0nJ<1PIU~yc@?5w3SIv!iE--2z0U=hayCOfZx zfzze(0oX6luN29R17`%#f;SHe00(q#Y^P%GnFrbQPHyk;d=w^HV@a1HoYc%79Eb7y zC(nSy9Vj}WBC@oD4Pnd^rc8^;vVyQoZx<69k20xr=Ur5{Q5d2F+Ur_CkSPVeiRTPi!VaHBKrX z-d9{^TtRCUk!`ek%)`Cxkc)6igq3iTv6b+W5G&z?D{=|L!D4{WFgZ~m@1p5F6mO$= z2gSQ6mQmbD@SXo^VnUDDI)$BQ3INo@N3a4^@fnH59k~mzj!oNk zomC+wM4g3gbL-N!TI(!V66@DCL)##1*;x)*#OfsfDPxD_tqc#)5nL;af8SsFfhEs$|PceXR>M5&5;TS=VmIK3#}%|dk- zW^0=ry|98^KTeBQkoC6W)X(EARUJ`?XV9(mB0u%~EtMsMJn|wbGa1l>lg+@+D`@Jw z=pqfX*J$Rh5iW*iXdMaHEN9|cKDjXxt`}TT#5Tn&PytB92sZu6D0J3|*OHuxNN75l~-uFSiR zuYaN6&i7>$#+AcP_uS^3QFc%5cw1Sxf3HFHYNW4CP11*t%$ro*F=rGd4F~f%?2M2y zYg$(uBXM|-SWEvz9E&br+dw}Cj~$Bx>>-KF;ri=wf`Iy|a&E=>u0tqwwq@3HcH)~+ zO6VW-aM8aRNq;B0OW*;MnEvfpNj@+NalNQ*W0=%0OiDAbP?NI5+m?PWD(cl3_s+OM z&v^9e3pD2%I?X(Z{tJIM8!3re=)vV+0%TF@|d=kcnL69P^`Wf*m`t37p7!M$Mkp*_N`Jp&aMtrXi+1&V z6ndqdY{kSP4lIFya;C(c(G*Q%c<%G;*z8#HN!%>IN*$%Bbf}|2PKC{RTzD3Z=SZ-T zbY>1PG<(|AWpwuf=8uBIOq$!gUvo>vb?YB%rsmp+N2^%55~=*!U`s{$3|Sw&Ix7O4 zr#Y*AWP3kTDkhn%YJ`-F1Si`DrS_dYVtS@xiTE=A;>wA0&aK@z*mbtD473gPbWR|x zqI`fX;!8c;bC)m%pe$f?Z_i8OUYs)q35Vnbf;Pp3tBzdD!Cr@YSBLN$p9)cy0Y+}- z*4R1*+))D5LLk+vb8m;lWMUJ1V5tENkl)5wobF(GdSzk6XJ+kqW_ha*K>Q^V6H&8kL>q2JTw-$v#^eS|S? zB(uHuv4UZ{>y^z*`I)>uZdW;aHf&-Z%V7=l&m}FGcROHKG7g7EO2EpnhOHL3sE5f&M z;X1vceBJQb(*nw6;Ys*SWNFS=Vl|dHDh8mbZ88<2mnInyb>+0T@w?B`_$ zA4-B_)E#SDRRZXRSm&W&vZeY-j1qu->o$l-c@cD)hZ782dH8x~rO;8DKaNwJu3UzJ zsIiRWC6T;BSAIYp#iUpy3G-qsuV|H5Skg~-qQXd`lyh5>?UMX1N!jJ|)V)9*Ew?&$ zN#AF&@1BJYmdWguU{tP6(DXoezzXBDXwG8b8o1yt@Ga$4o*TUQ293}7q1y7tXzC(5 z%~;jjq9vNBZ%p*(4C+m>3I#9)Dgsf{@vpb_B{5w4-1tp7gAhg2W6mHkAn4DPg2-*k z_5&=JsSpHL5O0u*LJW}QRw)Pv#>nW_LTimwvo?H)1PQ#e6jWnE9h&$k^ z-&HjtlYZ%@5*hNFcn~h5=TBg|xj`!^E(>!SnbS`nUOLSwRYXoC;PlxFj3umjWl}Hn zepocFVkz=EtwhQNH<$Vh5~?0cWvY~&4SR;pQXD4{=Cd5(Rh+$nR*^pIFoLW2bdV~Q!Ta+wTRYVX0o>e755$p>k_nQ`UhEyLkNVI88yD@5*ck{_814xPQK~`w&;kuP;CV*L6=lz+v~-cSK60YOm5be@FMF%K#JtUDS2s+OdX2 z$HKnaH}d+}9_igih{Ojam^f~tEr1Nnwl*@TPQ!T%=UO8Zyl(F4JK~^*V=4h^AddQ| zK3>AO_Q>p>fsnWJv-$FPxpMLfRh8ZD369h(TqNzkMw>|c zOAiXv=Sn<_CDY9H&CVn8Eqc+scFDKt9F>NJoo8M;=;3pn9`s%NJzvJ9XsKPlAG!8B z_}tcuhY%H@-c$Huf#p_V;J~dT;h=9l=xUbSgwF9AR=!VT&*Qcfw#H1@3h^_xvJhKt zBirg?VS~>&#X^9uz&x*9xn>{37d57LCnqx5;Pk>NY>ZC z(1WK-*9J!Ya?;h-Sh65rELrCNfn>>_U>1Kun`qU`5Aw!?G>dhrCa+;ENwwz*iQ;fy zz`4n~^I_EK4`dYKPeXN4suPwb7aqbqP~>S}IG8M_0wsTnk!O&Z@FL3+aqBP9m=bNs zQmbaKFynSsq(jd=PaWlJ(V!YG&$2{uVaG*qv4YRu>%A=4gU+n)MhTYk$~~j@66i;| zUVcqiT;sV`aPxM5U;doNvN+4iwPvmFr=hP(e-gLK^VIPN0p|W0FHFe+3()e@;bjU2 Wf4(zyLU|jl#Jg=QIqk*v)&Byp4p0#Q literal 0 HcmV?d00001 diff --git a/deployment/ensembler/src/models/dl_dataset.py b/deployment/ensembler/src/models/dl_dataset.py new file mode 100644 index 00000000..859f5b85 --- /dev/null +++ b/deployment/ensembler/src/models/dl_dataset.py @@ -0,0 +1,149 @@ +"""Script for pythorch dataset class""" +import torch.utils.data as data +import torch +import re +import random +import numpy as np + + +class DatasetHistMask(torch.utils.data.Dataset): + """Defines a dataset for PyTorch, dataset + networks_prediction_df - data frame with predictions and target + models_list - list with present forecasters + max_pred_len - maximum value for prediction steps + series_len - ensemble series len (historical values len + curent prediction length) + target_column - target column name in networks_prediction_df + start_idx - start from this indices networks_prediction_df rows will be chosen + last_idx - networks_prediction_df rows will be chosen to this index (might be None) + nan_fill_value - value for filling missing data e.g target value mean + """ + + def __init__( + self, + networks_prediction_df, + models_list=["arima", "cnn"], + max_pred_len=5, + series_len=15, + target_column="y", + start_idx=0, + last_idx=None, + nan_fill_value=100, + ): + "Initialization" + self.df = networks_prediction_df + self.get_rows(last_idx, start_idx) + self.models_list = models_list + assert len(self.models_list) > 1, "There must be more than one forecaster!" + self.x_columns = self.get_x_col_names() + self.series_lengths = self.get_series_lengths() + self.valid_indices = self.get_valid_indices() + self.df = self.df[self.x_columns + [target_column, "series_id"]] + self.target_column = target_column + self.max_pred_len = max_pred_len + self.series_len = series_len + self.nan_fill_value = nan_fill_value + + def get_x_col_names(self): + """Get forecasters predictions columns names""" + predictions_col_pattern = "".join( + [f"^{model}_value|" for model in self.models_list] + )[:-1] + return [ + col for col in self.df.columns if re.match(predictions_col_pattern, col) + ] + + def get_series_lengths(self): + """Get whole series lenghths using series_id column""" + return self.df["series_id"].value_counts().sort_values("index").cumsum() + + def get_valid_indices(self): + """Get valid inidices for series starts according to series_id column""" + indices = [ + i + for i in range(self.df.shape[0]) + if self.series_lengths.loc[self.df.iloc[i]["series_id"]] - i >= 15 + ] + return indices + + def get_rows(self, last_idx, start_idx): + """Get rows according to last_idx, start_idx""" + if last_idx: + self.df = self.df.iloc[start_idx:last_idx] + else: + self.df = self.df.iloc[start_idx:] + + def __len__(self): + "Denotes the total number of samples" + return len(self.valid_indices) + + def get_one_series_df_part(self, idx): + """Get single series (consecutive rows from + data frame of length: series_len)""" + return self.df.iloc[idx : idx + self.series_len].reset_index() + + def get_target_value(self, df): + """Get target value, single y true value which + we want to approximate with ensembling""" + return df[self.target_column].values[-1] + + def replace_future_values(self, col, hist_len): + """Replace values connected with target from future""" + col.iloc[hist_len:] = self.nan_fill_value + return col + + def add_columns(self, x, hist_len): + """Add extra columns: time_idx, nans masks, is_past""" + for col in self.x_columns: + x[f"{col}_res"] = x[col] - x[self.target_column] + x[f"{col}_res"] = self.replace_future_values(x[f"{col}_res"], hist_len) + x["time_idx"] = range(self.series_len) + x["is_past"] = [1 for _ in range(hist_len)] + [ + 0 for _ in range(self.series_len - hist_len) + ] + for col in self.x_columns: + x[f"{col}_mask"] = x[col].isna().astype(int) + return x + + def get_predictions_to_ensemble(self, x): + """Get forcasters values which will be ensembled""" + return ( + x[self.x_columns + [f"{col}_mask" for col in self.x_columns]].tail(1).copy() + ) + + @staticmethod + def to_tensors(x, preds, y): + """Convert network input to tensor""" + return ( + torch.tensor(x.to_numpy().astype(np.float32)), + torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(), + torch.tensor(y), + ) + + def get_one_series(self, idx, hist_len=10): + """Get single input example""" + x = self.get_one_series_df_part(idx) + target = self.get_target_value(x) + x[self.target_column] = self.replace_future_values( + x[self.target_column], hist_len + ) + x = self.add_columns(x, hist_len) + predictions_to_ensemble = self.get_predictions_to_ensemble(x) + x = x.fillna(self.nan_fill_value) + return (x, predictions_to_ensemble, target) + + def __getitem__(self, idx, rand_hist_len=True): + """Get item, optionaly rand histry length""" + idx = self.valid_indices[idx] + if rand_hist_len: + hist_len = random.randint( + self.series_len - self.max_pred_len, self.series_len - 1 + ) + else: + hist_len = ( + self.series_len + - self.get_one_series_df_part(idx)[self.target_column] + .iloc[::-1] + .last_valid_index() + ) + x, predictions_to_ensemble, target = self.get_one_series(idx, hist_len=hist_len) + return self.to_tensors(x, predictions_to_ensemble, target) diff --git a/deployment/ensembler/src/models/dl_helpers.py b/deployment/ensembler/src/models/dl_helpers.py new file mode 100644 index 00000000..342bd1d5 --- /dev/null +++ b/deployment/ensembler/src/models/dl_helpers.py @@ -0,0 +1,51 @@ +"""SCript for deep learning helpers fucnctions""" +import torch.nn as nn +import torch +from torch.nn.utils import weight_norm + + +def base_linear_module(in_f, out_f): + return nn.Sequential( + nn.Linear(in_f, out_f), nn.LeakyReLU(), nn.BatchNorm1d(num_features=out_f) + ) + + +def masked_softmax(vec, mask, dim=1, epsilon=1e-5): + exps = torch.exp(vec) + masked_exps = exps * mask.float() + masked_sums = masked_exps.sum(dim, keepdim=True) + epsilon + return masked_exps / masked_sums + + +def calculate_matching_padding(i, o, k, d, s): + p = ((o - 1) * s + (k - 1) * (d - 1) - i + k) / 2 + return int(p) + + +def base_conv_layer(n_inputs, n_outputs, kernel_size, stride=1, padding=1, dilation=1): + """Base conv 1D layer with group norm""" + return nn.Sequential( + nn.Conv1d( + n_inputs, + n_outputs, + kernel_size, + stride=stride, + padding=padding, + dilation=dilation, + ), + nn.GroupNorm(1, n_outputs), + nn.ReLU(inplace=True), + ) + + +def attention_module(embed_dim=4): + """Self attention module""" + return nn.MultiheadAttention( + embed_dim=embed_dim, num_heads=embed_dim, dropout=0.5, batch_first=True + ) + + +def calculate_output_shape(i, p, k, d, s): + """Output shape (series len) for the given padding, kernel, dilation, stride""" + o = (i + 2 * p - k - (k - 1) * (d - 1)) / s + 1 + return int(o) diff --git a/deployment/ensembler/src/models/dl_models.py b/deployment/ensembler/src/models/dl_models.py new file mode 100644 index 00000000..85980524 --- /dev/null +++ b/deployment/ensembler/src/models/dl_models.py @@ -0,0 +1,84 @@ +"""Script for Ensembler torch network""" + +import torch.nn as nn +import torch +from dl_helpers import ( + masked_softmax, + calculate_matching_padding, + base_conv_layer, + attention_module, +) + + +class EnsemblerRegressorModel(nn.Module): + """Torch ensemble network""" + + def __init__( + self, + forecasters_num=2, + n_inputs=[11, 16, 32], + n_outputs=[16, 32, 64], + kernel_size=[5, 4, 4], + stride=[1, 1, 2], + dilation=[1, 2, 1], + series_len=16, + with_att=True, + ): + super().__init__() + self.forecasters_num = forecasters_num + self.n_layers = len(dilation) + self.with_att = with_att + self.series_len = series_len + self.cnn_layers = nn.ModuleList( + self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, dilation) + ) + self.att_layers = attention_module(embed_dim=n_outputs[-1]) + self.activation_layers = nn.GELU() + self.last_layer = nn.Linear( + int(series_len * n_outputs[-1]), self.forecasters_num + ) + + def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, dilation): + """Creates convolutional layers with padding + so that the output has the same length as input""" + return [ + base_conv_layer( + in_f, + out_f, + k, + stride=s, + padding=calculate_matching_padding( + self.series_len, self.series_len, k, d, s + ), + dilation=d, + ) + for in_f, out_f, k, s, d in zip( + n_inputs, n_outputs, kernel_size, stride, dilation + ) + ] + + def get_mask_and_preds(self, prediction): + """Get binary mask for predictions which + are not present and predicted values""" + return ( + prediction[:, self.forecasters_num :], + prediction[:, : self.forecasters_num], + ) + + def forward(self, batch): + """model forward function""" + x, preds_to_ensemble = batch + for i in range(self.n_layers): + x = x.permute(0, 2, 1) + x = self.cnn_layers[i](x) + x = x.permute(0, 2, 1) + if i == self.n_layers - 1: + if self.with_att: + x, _ = self.att_layers(x, x, x) + x = self.activation_layers(x) + + x = torch.flatten(x, start_dim=1) + x = self.last_layer(x) + mask, preds = self.get_mask_and_preds(preds_to_ensemble) + x = masked_softmax(x, mask) + return torch.sum(preds * x, 1) diff --git a/deployment/ensembler/src/models/dl_torch_lightning.py b/deployment/ensembler/src/models/dl_torch_lightning.py new file mode 100644 index 00000000..e3bf629d --- /dev/null +++ b/deployment/ensembler/src/models/dl_torch_lightning.py @@ -0,0 +1,2 @@ +"""Script for torch lighning module for ensembling""" + diff --git a/deployment/ensembler/src/models/new.csv b/deployment/ensembler/src/models/new.csv new file mode 100644 index 00000000..f151e493 --- /dev/null +++ b/deployment/ensembler/src/models/new.csv @@ -0,0 +1,96 @@ +name,time,arima_left_conf,arima_probability,arima_right_conf,arima_value,cnn_left_conf,cnn_probability,cnn_right_conf,cnn_value,ensembled_left_conf,ensembled_probability,ensembled_right_conf,ensembled_value,prophet_left_conf,prophet_probability,prophet_right_conf,prophet_value +MinimumCoresPredictions,1640789523000000000,,,,,,,,,,,,,-158.4472721456001,0.8,121.61342656202129,-21.275831622576863 +MinimumCoresPredictions,1640789561000000000,,,,,,,,,,,,,-150.40752613158415,0.8,114.04934987371874,-21.38388382793413 +MinimumCoresPredictions,1640789566000000000,-161.89635569226925,0.95,157.7308065537772,-2.0827745692460393,,,,,,,,,,,, +MinimumCoresPredictions,1640789599000000000,,,,,,,,,,,,,-158.9194025775471,0.8,114.00061737039356,-21.49079268376113 +MinimumCoresPredictions,1640789636000000000,,,,,,,,,,,,,-154.5533039114234,0.8,117.11469004423601,-21.596551386635085 +MinimumCoresPredictions,1640789671000000000,,,,,,,,,,,,,-154.49356936605753,0.8,121.96451391408908,-21.70115320330103 +MinimumCoresPredictions,1640789678000000000,-20.976727063297787,0.95,205.5895891056956,92.30643102119892,,,,,,,,,,,, +MinimumCoresPredictions,1640789706000000000,,,,,,,,,,,,,-165.61727297079116,0.8,114.95956667093034,-21.80459146551018 +MinimumCoresPredictions,1640789737000000000,34.347511026876845,0.95,265.60877351105603,149.97814226896645,,,,,,,,,,,, +MinimumCoresPredictions,1640789741000000000,,,,,,,,,,,,,-155.44124860000477,0.8,116.96762649134993,-21.906859574125797 +MinimumCoresPredictions,1640789775000000000,,,,,,,,,,,,,-156.69651098700766,0.8,118.51786482892017,-22.007951002875835 +MinimumCoresPredictions,1640789799000000000,196.42427872230235,0.95,439.2220133599419,317.82314604112213,,,,,,,,,,,, +MinimumCoresPredictions,1640789808000000000,,,,,,,,,,,,,-148.8526287448898,0.8,108.65035999406031,-22.107859293362925 +MinimumCoresPredictions,1640789841000000000,,,,,,,,,,,,,-162.23469356860488,0.8,116.13701477371227,-22.206578055650066 +MinimumCoresPredictions,1640789859000000000,345.5667969301442,0.95,609.4103765531204,477.4885867416323,,,,,,,,,,,, +MinimumCoresPredictions,1640789873000000000,,,,,,,,,,,,,-151.55648658228918,0.8,106.52098159121968,-22.30410097525501 +MinimumCoresPredictions,1640789905000000000,,,,,,,,,,,,,-147.58349841271067,0.8,111.87172956753585,-22.400421804429726 +MinimumCoresPredictions,1640789919000000000,336.7356037659305,0.95,599.6589812962518,468.19729253109114,,,,,,,,,,,, +MinimumCoresPredictions,1640789937000000000,,,,,,,,,,,,,-161.29284493932002,0.8,100.82283371664583,-22.495534370420202 +MinimumCoresPredictions,1640789969000000000,,,,,,,,,,,,,-152.9646824271364,0.8,105.19450860829521,-22.589432569492303 +MinimumCoresPredictions,1640789979000000000,-368.72026793360067,0.95,-75.17146322761917,-221.94586558060993,,,,,,,,,,,, +MinimumCoresPredictions,1640790001000000000,,,,,,,,,,,,,-157.2396658288572,0.8,103.56503507285281,-22.682110374930318 +MinimumCoresPredictions,1640790033000000000,,,,,,,,,,,,,-155.33316599825224,0.8,105.39820647933941,-22.773561828688607 +MinimumCoresPredictions,1640790039000000000,-235.94000503280682,0.95,78.50104505033276,-78.71947999123704,,,,,,,,,,,, +MinimumCoresPredictions,1640790066000000000,,,,,,,,,,,,,-152.43037334821133,0.8,115.3332571954821,-22.863781048752077 +MinimumCoresPredictions,1640790092000000000,,,,,27993.184742593578,0.8,27999.184742593578,27996.184742593578,,,,,,,, +MinimumCoresPredictions,1640790098000000000,,,,,,,,,,,,,-149.1099089805551,0.8,102.11550373242642,-22.95276222630205 +MinimumCoresPredictions,1640790099000000000,-216.89247419596768,0.95,107.25074721743778,-54.820863489264944,,,,,,,,,,,, +MinimumCoresPredictions,1640790130000000000,,,,,,,,,,,,,-158.2906036555093,0.8,102.6695984395503,-23.040499627479136 +MinimumCoresPredictions,1640790154000000000,,,,,24941.370820893568,0.8,24947.370820893568,24944.370820893568,,,,,,,, +MinimumCoresPredictions,1640790161000000000,-170.3316002676293,0.95,150.91382106589094,-9.70888960086917,,,,,,,,,,,, +MinimumCoresPredictions,1640790163000000000,,,,,,,,,,,,,-151.49476387171023,0.8,119.80285834964873,-23.12698759078374 +MinimumCoresPredictions,1640790191000000000,,,,,24960.530360026867,0.8,24966.530360026867,24963.530360026867,,,,,,,, +MinimumCoresPredictions,1640790195000000000,,,,,,,,,,,,,-157.52579958108328,0.8,110.76491249658449,-23.21222053391848 +MinimumCoresPredictions,1640790218000000000,-195.37521403119422,0.95,125.93412447910318,-34.720544776045514,,,,,,,,,,,, +MinimumCoresPredictions,1640790228000000000,,,,,,,,,,,,,-158.64030486331322,0.8,108.92916404000135,-23.296192946028608 +MinimumCoresPredictions,1640790237000000000,,,,,27238.46382065222,0.8,27244.46382065222,27241.46382065222,,,,,,,, +MinimumCoresPredictions,1640790260000000000,,,,,,,,,,,,,-161.12256084307043,0.8,111.17395190539419,-23.37889939404316 +MinimumCoresPredictions,1640790278000000000,-190.3908618166194,0.95,129.1002572580378,-30.6453022792908,,,,,,,,,,,, +MinimumCoresPredictions,1640790292000000000,,,,,,,,,,,,,-150.39877373469807,0.8,103.00679554746911,-23.460334522719588 +MinimumCoresPredictions,1640790296000000000,,,,,27373.090532101043,0.8,27379.090532101043,27376.090532101043,,,,,,,, +MinimumCoresPredictions,1640790324000000000,,,,,,,,,,,,,-147.24966106829933,0.8,102.89370029622637,-23.540493050766578 +MinimumCoresPredictions,1640790337000000000,-210.32220516478637,0.95,63.96541038303414,-73.17839739087611,,,,,,,,,,,, +MinimumCoresPredictions,1640790806000000000,,,,,25075.850830187526,0.8,25081.850830187526,25078.850830187526,,,,,,,, +MinimumCoresPredictions,1640790823000000000,-185.63567294081855,0.95,135.634232681326,-25.000720129746284,,,,,-185.63567294081855,0.875,25081.850830187526,12526.92505502889,,,, +MinimumCoresPredictions,1640790833000000000,,,,,,,,,,,,,-124.08173424208573,0.8,129.4337459704241,-1.6642378427912234 +MinimumCoresPredictions,1640790841000000000,,,,,,,,,-185.63567294081855,0.85,25081.850830187526,8350.728624071664,,,, +MinimumCoresPredictions,1640790850000000000,,,,,25075.850830187526,0.8,25081.850830187526,25078.850830187526,-187.40274797545518,0.85,25647.503702886104,8538.690148016614,,,, +MinimumCoresPredictions,1640790851000000000,,,,,,,,,-185.63567294081855,0.85,26402.655787657874,8790.996943228447,,,, +MinimumCoresPredictions,1640790871000000000,,,,,,,,,,,,,-133.73576682984188,0.8,114.92556352229849,-1.773491982976772 +MinimumCoresPredictions,1640790879000000000,,,,,,,,,-199.09806901317927,0.85,25705.91467215506,8552.042417435941,,,, +MinimumCoresPredictions,1640790880000000000,,,,,,,,,-133.73576682984188,0.8,25081.850830187526,12538.538669102274,,,, +MinimumCoresPredictions,1640790884000000000,-125.21167912418716,0.95,200.6224520150598,37.70538644543631,,,,,-131.206044086457,0.85,26068.289038269388,8742.586481577333,,,, +MinimumCoresPredictions,1640790885000000000,,,,,,,,,-133.73576682984188,0.85,25081.850830187526,8379.53262019625,,,, +MinimumCoresPredictions,1640790909000000000,,,,,,,,,,,,,-131.1372839037368,0.8,128.62976426932977,-1.8816315400670902 +MinimumCoresPredictions,1640790910000000000,,,,,26949.204439387548,0.8,26955.204439387548,26952.204439387548,-125.21167912418716,0.875,26955.204439387548,13494.954912916492,,,, +MinimumCoresPredictions,1640790915000000000,,,,,,,,,-131.1372839037368,0.85,26955.204439387548,8996.00939809764,,,, +MinimumCoresPredictions,1640790945000000000,,,,,,,,,,,,,-135.58495618982414,0.8,132.89015388944634,-1.9886460369936003 +MinimumCoresPredictions,1640790948000000000,,,,,,,,,-138.8919373376316,0.85,26955.204439387548,8996.00939809764,,,, +MinimumCoresPredictions,1640790950000000000,-12.597405336604453,0.95,263.33714191181355,125.36986828760456,,,,,-135.58495618982414,0.875,216.44327051897568,38.39454686804592,,,, +MinimumCoresPredictions,1640790965000000000,,,,,27063.69952024545,0.8,27069.69952024545,27066.69952024545,-12.597405336604453,0.875,27069.69952024545,13596.034694266527,,,, +MinimumCoresPredictions,1640790978000000000,,,,,,,,,,,,,-124.46589439079473,0.8,120.72522274336936,-2.0945250815181353 +MinimumCoresPredictions,1640790980000000000,,,,,,,,,-124.46589439079473,0.85,27069.69952024545,9063.324954483845,,,, +MinimumCoresPredictions,1640791008000000000,-6.311894930912899,0.95,272.51053523556743,133.09932015232727,,,,,-128.6504775414145,0.85,25297.82926532748,8495.67652913284,,,, +MinimumCoresPredictions,1640791009000000000,,,,,,,,,-124.46589439079473,0.85,27069.69952024545,9075.62898594235,,,, +MinimumCoresPredictions,1640791010000000000,,,,,,,,,,,,,-140.6147231124454,0.8,132.58233092015988,-2.1992583629241764 +MinimumCoresPredictions,1640791012000000000,,,,,,,,,-140.6147231124454,0.875,286.26184593662003,72.43192943551541,,,, +MinimumCoresPredictions,1640791014000000000,,,,,27625.94419486597,0.8,27631.94419486597,27628.94419486597,-142.36698133863842,0.85,25019.42451309202,8393.247836455803,,,, +MinimumCoresPredictions,1640791015000000000,,,,,,,,,-6.311894930912899,0.875,27631.94419486597,13881.021757509148,,,, +MinimumCoresPredictions,1640791042000000000,,,,,,,,,,,,,-145.34488720820963,0.8,133.04234642217477,-2.302835657511558 +MinimumCoresPredictions,1640791044000000000,,,,,,,,,-135.51677212585952,0.85,30097.334052575243,10079.732637148758,,,, +MinimumCoresPredictions,1640791045000000000,,,,,,,,,-145.34488720820963,0.85,27631.94419486597,9253.246893120262,,,, +MinimumCoresPredictions,1640791053000000000,,,,,21058.22121397717,0.8,21064.22121397717,21061.22121397717,-145.34488720820963,0.85,25582.967180813655,8570.254555102823,,,, +MinimumCoresPredictions,1640791068000000000,99.19925675678061,0.95,385.3468904390106,242.27307359789563,,,,,99.19925675678061,0.875,21064.22121397717,10651.747143787532,,,, +MinimumCoresPredictions,1640791074000000000,,,,,,,,,,,,,-131.7614905517805,0.8,126.24571196481368,-2.4052468237563502 +MinimumCoresPredictions,1640791077000000000,,,,,,,,,-131.7614905517805,0.85,24010.48649526834,8047.887584321098,,,, +MinimumCoresPredictions,1640791102000000000,,,,,26556.060929607673,0.8,26562.060929607673,26559.060929607673,99.19925675678061,0.875,34372.50183949568,17305.88745654679,,,, +MinimumCoresPredictions,1640791107000000000,,,,,,,,,,,,,-137.14332843278052,0.8,132.28796851232323,-2.5064818039847694 +MinimumCoresPredictions,1640791109000000000,,,,,,,,,-137.14332843278052,0.85,34372.50183949568,11536.422810429865,,,, +MinimumCoresPredictions,1640791129000000000,207.18193316802896,0.95,505.90665482488873,356.54429399645886,,,,,208.98711405922043,0.875,26562.060929607673,13458.705193317606,,,, +MinimumCoresPredictions,1640791138000000000,,,,,25261.377692983082,0.8,25267.377692983082,25264.377692983082,207.18193316802896,0.875,27675.66885618541,14014.606575090935,,,, +MinimumCoresPredictions,1640791139000000000,,,,,,,,,,,,,-126.93073726534512,0.8,122.11954496813567,-2.6065306316055583 +MinimumCoresPredictions,1640791141000000000,,,,,,,,,-126.93073726534512,0.85,31820.14687911597,10724.296601837303,,,, +MinimumCoresPredictions,1640791171000000000,,,,,,,,,,,,,-132.4191261296443,0.8,133.38444500968458,-2.705383423646154 +MinimumCoresPredictions,1640791174000000000,,,,,,,,,-132.4191261296443,0.85,27675.66885618541,9342.169255586074,,,, +MinimumCoresPredictions,1640791181000000000,,,,,25261.23620728164,0.8,25267.23620728164,25264.23620728164,-132.4191261296443,0.85,31684.742401020256,10678.527103864357,,,, +MinimumCoresPredictions,1640791189000000000,205.87640718960188,0.95,505.21279430976335,355.5446007496826,,,,,205.87640718960188,0.875,25267.23620728164,12809.890404015661,,,, +MinimumCoresPredictions,1640791204000000000,,,,,,,,,,,,,-133.4044630703763,0.8,126.95924819078968,-2.803030385189558 +MinimumCoresPredictions,1640791206000000000,,,,,,,,,-133.4044630703763,0.85,27802.780961744607,9370.011837554513,,,, +MinimumCoresPredictions,1640791236000000000,,,,,21109.18637023582,0.8,21115.18637023582,21112.18637023582,-130.4222759100162,0.85,25060.97257762744,8471.54392756551,-132.02656891356364,0.8,137.63523651580255,-2.8994618128159857 +MinimumCoresPredictions,1640791237000000000,,,,,,,,,205.87640718960188,0.875,20369.945758122365,10361.245179436024,,,, +MinimumCoresPredictions,1640791238000000000,,,,,,,,,-132.02656891356364,0.85,20369.945758122365,6906.530299019744,,,, +MinimumCoresPredictions,1640791248000000000,-419.02517513189343,0.95,-81.50763522688817,-250.2664051793908,,,,,-193.4603272802651,0.875,21115.18637023582,10543.742148580413,,,, +MinimumCoresPredictions,1640791268000000000,,,,,,,,,,,,,-129.16876870162628,0.8,129.30201410134583,-2.994668090857793 +MinimumCoresPredictions,1640791270000000000,,,,,,,,,-193.4603272802651,0.85,21115.18637023582,7028.163209689989,,,, diff --git a/deployment/ensembler/src/models/test.ipynb b/deployment/ensembler/src/models/test.ipynb new file mode 100644 index 00000000..02937d2b --- /dev/null +++ b/deployment/ensembler/src/models/test.ipynb @@ -0,0 +1,988 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "5af44adc", + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding\n", + "\n", + "\n", + "\"\"\"Script for deep learning networks \"\"\"\n", + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import os\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "\n", + "# PyTorch\n", + "import torch.utils.data as data\n", + "import torch\n", + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "523d7c32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametimearima_left_confarima_probabilityarima_right_confarima_valuecnn_left_confcnn_probabilitycnn_right_confcnn_valueensembled_left_confensembled_probabilityensembled_right_confensembled_valueprophet_left_confprophet_probabilityprophet_right_confprophet_valueyseries_id
0MinimumCoresPredictions1640789523000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.4472720.8121.613427-21.27583210
1MinimumCoresPredictions1640789561000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-150.4075260.8114.049350-21.38388410
2MinimumCoresPredictions1640789566000000000-161.8963560.95157.730807-2.082775NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN10
3MinimumCoresPredictions1640789599000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.9194030.8114.000617-21.49079310
4MinimumCoresPredictions1640789636000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-154.5533040.8117.114690-21.59655110
...............................................................
90MinimumCoresPredictions1640791237000000000NaNNaNNaNNaNNaNNaNNaNNaN205.8764070.87520369.94575810361.245179NaNNaNNaNNaN11
91MinimumCoresPredictions1640791238000000000NaNNaNNaNNaNNaNNaNNaNNaN-132.0265690.85020369.9457586906.530299NaNNaNNaNNaN11
92MinimumCoresPredictions1640791248000000000-419.0251750.95-81.507635-250.266405NaNNaNNaNNaN-193.4603270.87521115.18637010543.742149NaNNaNNaNNaN11
93MinimumCoresPredictions1640791268000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-129.1687690.8129.302014-2.99466811
94MinimumCoresPredictions1640791270000000000NaNNaNNaNNaNNaNNaNNaNNaN-193.4603270.85021115.1863707028.163210NaNNaNNaNNaN10001
\n", + "

95 rows × 20 columns

\n", + "
" + ], + "text/plain": [ + " name time arima_left_conf \\\n", + "0 MinimumCoresPredictions 1640789523000000000 NaN \n", + "1 MinimumCoresPredictions 1640789561000000000 NaN \n", + "2 MinimumCoresPredictions 1640789566000000000 -161.896356 \n", + "3 MinimumCoresPredictions 1640789599000000000 NaN \n", + "4 MinimumCoresPredictions 1640789636000000000 NaN \n", + ".. ... ... ... \n", + "90 MinimumCoresPredictions 1640791237000000000 NaN \n", + "91 MinimumCoresPredictions 1640791238000000000 NaN \n", + "92 MinimumCoresPredictions 1640791248000000000 -419.025175 \n", + "93 MinimumCoresPredictions 1640791268000000000 NaN \n", + "94 MinimumCoresPredictions 1640791270000000000 NaN \n", + "\n", + " arima_probability arima_right_conf arima_value cnn_left_conf \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 0.95 157.730807 -2.082775 NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN NaN \n", + "91 NaN NaN NaN NaN \n", + "92 0.95 -81.507635 -250.266405 NaN \n", + "93 NaN NaN NaN NaN \n", + "94 NaN NaN NaN NaN \n", + "\n", + " cnn_probability cnn_right_conf cnn_value ensembled_left_conf \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN 205.876407 \n", + "91 NaN NaN NaN -132.026569 \n", + "92 NaN NaN NaN -193.460327 \n", + "93 NaN NaN NaN NaN \n", + "94 NaN NaN NaN -193.460327 \n", + "\n", + " ensembled_probability ensembled_right_conf ensembled_value \\\n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "4 NaN NaN NaN \n", + ".. ... ... ... \n", + "90 0.875 20369.945758 10361.245179 \n", + "91 0.850 20369.945758 6906.530299 \n", + "92 0.875 21115.186370 10543.742149 \n", + "93 NaN NaN NaN \n", + "94 0.850 21115.186370 7028.163210 \n", + "\n", + " prophet_left_conf prophet_probability prophet_right_conf prophet_value \\\n", + "0 -158.447272 0.8 121.613427 -21.275832 \n", + "1 -150.407526 0.8 114.049350 -21.383884 \n", + "2 NaN NaN NaN NaN \n", + "3 -158.919403 0.8 114.000617 -21.490793 \n", + "4 -154.553304 0.8 117.114690 -21.596551 \n", + ".. ... ... ... ... \n", + "90 NaN NaN NaN NaN \n", + "91 NaN NaN NaN NaN \n", + "92 NaN NaN NaN NaN \n", + "93 -129.168769 0.8 129.302014 -2.994668 \n", + "94 NaN NaN NaN NaN \n", + "\n", + " y series_id \n", + "0 1 0 \n", + "1 1 0 \n", + "2 1 0 \n", + "3 1 0 \n", + "4 1 0 \n", + ".. ... ... \n", + "90 1 1 \n", + "91 1 1 \n", + "92 1 1 \n", + "93 1 1 \n", + "94 1000 1 \n", + "\n", + "[95 rows x 20 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('new.csv')\n", + "df['y'] = [1 for _ in range(df.shape[0] - 1)] + [1000]\n", + "df['series_id'] = list([0 for _ in range(20)]) + list([1 for _ in range(df.shape[0] - 20)])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e27f8c06", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Script for pythorch dataset class\"\"\"\n", + "import torch.utils.data as data\n", + "import torch\n", + "import re\n", + "import random\n", + "import numpy as np\n", + "\n", + "\n", + "class DatasetHistMask(torch.utils.data.Dataset):\n", + " \"\"\"Defines a dataset for PyTorch, dataset\n", + " networks_prediction_df - data frame with predictions and target\n", + " models_list - list with present forecasters\n", + " max_pred_len - maximum value for prediction steps\n", + " series_len - ensemble series len (historical values len + curent prediction length)\n", + " target_column - target column name in networks_prediction_df\n", + " start_idx - start from this indices networks_prediction_df rows will be chosen\n", + " last_idx - networks_prediction_df rows will be chosen to this index (might be None)\n", + " nan_fill_value - value for filling missing data e.g target value mean\n", + " \"\"\"\n", + "\n", + " def __init__(\n", + " self,\n", + " networks_prediction_df,\n", + " models_list=[\"arima\", \"cnn\"],\n", + " max_pred_len=5,\n", + " series_len=16,\n", + " target_column=\"y\",\n", + " start_idx=0,\n", + " last_idx=None,\n", + " nan_fill_value=100,\n", + " ):\n", + " \"Initialization\"\n", + " self.df = networks_prediction_df\n", + " self.get_rows(last_idx, start_idx)\n", + " self.models_list = models_list\n", + " assert len(self.models_list) > 1, \"There must be more than one forecaster!\"\n", + " self.x_columns = self.get_x_col_names()\n", + " self.series_lengths = self.get_series_lengths()\n", + " self.valid_indices = self.get_valid_indices()\n", + " self.df = self.df[self.x_columns + [target_column, \"series_id\"]]\n", + " self.target_column = target_column\n", + " self.max_pred_len = max_pred_len\n", + " self.series_len = series_len\n", + " self.nan_fill_value = nan_fill_value\n", + "\n", + " def get_x_col_names(self):\n", + " \"\"\"Get forecasters predictions columns names\"\"\"\n", + " predictions_col_pattern = \"\".join(\n", + " [f\"^{model}_value|\" for model in self.models_list]\n", + " )[:-1]\n", + " return [\n", + " col for col in self.df.columns if re.match(predictions_col_pattern, col)\n", + " ]\n", + "\n", + " def get_series_lengths(self):\n", + " \"\"\"Get whole series lenghths using series_id column\"\"\"\n", + " return self.df[\"series_id\"].value_counts().sort_values(\"index\").cumsum()\n", + "\n", + " def get_valid_indices(self):\n", + " \"\"\"Get valid inidices for series starts according to series_id column\"\"\"\n", + " indices = [\n", + " i\n", + " for i in range(self.df.shape[0])\n", + " if self.series_lengths.loc[self.df.iloc[i][\"series_id\"]] - i >= 15\n", + " ]\n", + " return indices\n", + "\n", + " def get_rows(self, last_idx, start_idx):\n", + " \"\"\"Get rows according to last_idx, start_idx\"\"\"\n", + " if last_idx:\n", + " self.df = self.df.iloc[start_idx:last_idx]\n", + " else:\n", + " self.df = self.df.iloc[start_idx:]\n", + "\n", + " def __len__(self):\n", + " \"Denotes the total number of samples\"\n", + " return len(self.valid_indices)\n", + "\n", + " def get_one_series_df_part(self, idx):\n", + " \"\"\"Get single series (consecutive rows from\n", + " data frame of length: series_len)\"\"\"\n", + " return self.df.iloc[idx : idx + self.series_len].reset_index()\n", + "\n", + " def get_target_value(self, df):\n", + " \"\"\"Get target value, single y true value which\n", + " we want to approximate with ensembling\"\"\"\n", + " return df[self.target_column].values[-1]\n", + "\n", + " def replace_future_values(self, col, hist_len):\n", + " \"\"\"Replace values connected with target from future\"\"\"\n", + " col.iloc[hist_len:] = self.nan_fill_value\n", + " return col\n", + "\n", + " def add_columns(self, x, hist_len):\n", + " \"\"\"Add extra columns: time_idx, nans masks, is_past\"\"\"\n", + " for col in self.x_columns:\n", + " x[f\"{col}_res\"] = x[col] - x[self.target_column]\n", + " x[f\"{col}_res\"] = self.replace_future_values(x[f\"{col}_res\"], hist_len)\n", + " x[\"time_idx\"] = range(self.series_len)\n", + " x[\"is_past\"] = [1 for _ in range(hist_len)] + [\n", + " 0 for _ in range(self.series_len - hist_len)\n", + " ]\n", + " for col in self.x_columns:\n", + " x[f\"{col}_mask\"] = x[col].notna().astype(int)\n", + " return x\n", + "\n", + " def get_predictions_to_ensemble(self, x):\n", + " \"\"\"Get forcasters values which will be ensembled\"\"\"\n", + " return (\n", + " x[self.x_columns + [f\"{col}_mask\" for col in self.x_columns]].tail(1).copy()\n", + " )\n", + "\n", + " @staticmethod\n", + " def to_tensors(x, preds, y):\n", + " \"\"\"Convert network input to tensor\"\"\"\n", + " return (\n", + " torch.tensor(x.to_numpy().astype(np.float32)),\n", + " torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(),\n", + " torch.tensor(y),\n", + " )\n", + "\n", + " def get_one_series(self, idx, hist_len=10):\n", + " \"\"\"Get single input example\"\"\"\n", + " x = self.get_one_series_df_part(idx)\n", + " target = self.get_target_value(x)\n", + " x[self.target_column] = self.replace_future_values(\n", + " x[self.target_column], hist_len\n", + " )\n", + " x = self.add_columns(x, hist_len)\n", + " predictions_to_ensemble = self.get_predictions_to_ensemble(x)\n", + " x = x.fillna(self.nan_fill_value)\n", + " return (x, predictions_to_ensemble, target)\n", + "\n", + " def __getitem__(self, idx, rand_hist_len=True):\n", + " \"\"\"Get item, optionaly rand histry length\"\"\"\n", + " idx = self.valid_indices[idx]\n", + " if rand_hist_len:\n", + " hist_len = random.randint(\n", + " self.series_len - self.max_pred_len, self.series_len - 1\n", + " )\n", + " else:\n", + " hist_len = (\n", + " self.series_len\n", + " - self.get_one_series_df_part(idx)[self.target_column]\n", + " .iloc[::-1]\n", + " .last_valid_index()\n", + " )\n", + " x, predictions_to_ensemble, target = self.get_one_series(idx, hist_len=hist_len)\n", + " return self.to_tensors(x, predictions_to_ensemble, target)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "52ea0d4c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "67" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d = DatasetHistMask(df)\n", + "len(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ccdf0833", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/awarno/.pyenv/versions/3.7.9/lib/python3.7/site-packages/pandas/core/indexing.py:670: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " iloc._setitem_with_indexer(indexer, value)\n" + ] + }, + { + "data": { + "text/plain": [ + "(tensor([[ 5.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 0.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 6.0000, 92.3064, 100.0000, 1.0000, 0.0000, 91.3064,\n", + " 100.0000, 1.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 7.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 2.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 8.0000, 149.9781, 100.0000, 1.0000, 0.0000, 148.9781,\n", + " 100.0000, 3.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 9.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 4.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 10.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 5.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 11.0000, 317.8232, 100.0000, 1.0000, 0.0000, 316.8232,\n", + " 100.0000, 6.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 12.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 7.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 13.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 8.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 14.0000, 477.4886, 100.0000, 1.0000, 0.0000, 476.4886,\n", + " 100.0000, 9.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 15.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 10.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 16.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 11.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 17.0000, 468.1973, 100.0000, 1.0000, 0.0000, 467.1973,\n", + " 100.0000, 12.0000, 1.0000, 1.0000, 0.0000],\n", + " [ 18.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 13.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 19.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", + " 100.0000, 14.0000, 1.0000, 0.0000, 0.0000],\n", + " [ 20.0000, -221.9459, 100.0000, 1.0000, 1.0000, -222.9459,\n", + " 100.0000, 15.0000, 1.0000, 1.0000, 0.0000]]),\n", + " tensor([-221.9459, 0.0000, 1.0000, 0.0000]),\n", + " tensor(1))" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.__getitem__(19, rand_hist_len=False)\n", + "x = d.__getitem__(5, rand_hist_len=False)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c64676ce", + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "cannot import name 'base_conv1_layer' from 'dl_helpers' (/home/awarno/MORPH_22/morphemic-preprocessor/deployment/ensembler/src/models/dl_helpers.py)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mweight_norm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdl_helpers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mbase_linear_module\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmasked_softmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcalculate_matching_padding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbase_conv1_layer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattention_module\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mImportError\u001b[0m: cannot import name 'base_conv1_layer' from 'dl_helpers' (/home/awarno/MORPH_22/morphemic-preprocessor/deployment/ensembler/src/models/dl_helpers.py)" + ] + } + ], + "source": [ + "import torch.nn as nn\n", + "import torch\n", + "from torch.nn.utils import weight_norm\n", + "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding, base_conv1_layer, attention_module" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fde0de4c", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Script for Ensembler torch network\"\"\"\n", + "\n", + "import torch.nn as nn\n", + "import torch\n", + "from dl_helpers import (\n", + " masked_softmax,\n", + " calculate_matching_padding,\n", + " base_conv_layer,\n", + " attention_module,\n", + ")\n", + "\n", + "\n", + "class EnsemblerRegressorModel(nn.Module):\n", + " \"\"\"Torch ensemble network\"\"\"\n", + "\n", + " def __init__(\n", + " self,\n", + " forecasters_num=2,\n", + " n_inputs=[11, 16, 32],\n", + " n_outputs=[16, 32, 64],\n", + " kernel_size=[5, 4, 4],\n", + " stride=[1, 1, 2],\n", + " dilation=[1, 2, 1],\n", + " series_len=16,\n", + " with_att=True,\n", + " ):\n", + " super().__init__()\n", + " self.forecasters_num = forecasters_num\n", + " self.n_layers = len(dilation)\n", + " self.with_att = with_att\n", + " self.series_len = series_len\n", + " self.cnn_layers = nn.ModuleList(\n", + " self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, dilation)\n", + " )\n", + " self.att_layers = attention_module(embed_dim=n_outputs[-1])\n", + " self.activation_layers = nn.GELU()\n", + " self.last_layer = nn.Linear(\n", + " int(series_len * n_outputs[-1]), self.forecasters_num\n", + " )\n", + "\n", + " def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, dilation):\n", + " \"\"\"Creates convolutional layers with padding\n", + " so that the output has the same length as input\"\"\"\n", + " return [\n", + " base_conv_layer(\n", + " in_f,\n", + " out_f,\n", + " k,\n", + " stride=s,\n", + " padding=calculate_matching_padding(\n", + " self.series_len, self.series_len, k, d, s\n", + " ),\n", + " dilation=d,\n", + " )\n", + " for in_f, out_f, k, s, d in zip(\n", + " n_inputs, n_outputs, kernel_size, stride, dilation\n", + " )\n", + " ]\n", + "\n", + " def get_mask_and_preds(self, prediction):\n", + " \"\"\"Get binary mask for predictions which\n", + " are not present and predicted values\"\"\"\n", + " return (\n", + " prediction[:, self.forecasters_num :],\n", + " prediction[:, : self.forecasters_num],\n", + " )\n", + "\n", + " def forward(self, batch):\n", + " \"\"\"model forward function\"\"\"\n", + " x, preds_to_ensemble = batch\n", + " for i in range(self.n_layers):\n", + " x = x.permute(0, 2, 1)\n", + " x = self.cnn_layers[i](x)\n", + " x = x.permute(0, 2, 1)\n", + " if i == self.n_layers - 1:\n", + " if self.with_att:\n", + " x, _ = self.att_layers(x, x, x)\n", + " x = self.activation_layers(x)\n", + "\n", + " x = torch.flatten(x, start_dim=1)\n", + " x = self.last_layer(x)\n", + " mask, preds = self.get_mask_and_preds(preds_to_ensemble)\n", + " x = masked_softmax(x, mask)\n", + " return torch.sum(preds * x, 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3be22115", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[-221.9459, 0.0000, 1.0000, 0.0000],\n", + " [-221.9459, 0.0000, 1.0000, 0.0000]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x1 = torch.stack([x[0], x[0]])\n", + "x2 = torch.stack([x[1], x[1]]).squeeze()\n", + "x2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2ad0a196", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([-221.9437, -221.9437], grad_fn=)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = EnsemblerRegressorModel()\n", + "n((x1, x2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f60479d8", + "metadata": {}, + "outputs": [], + "source": [ + "def create_cnn_config():\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "122558e5", + "metadata": {}, + "outputs": [], + "source": [ + "class BaseCNNNetworkMask(nn.Module):\n", + " \"\"\"Dense CNN 1D network with softmax at the end\"\"\"\n", + " def __init__(self, num_feat=6, hist_len=15, pred_len=1, extra_feat=3):\n", + " super(BaseCNNNetworkMask, self).__init__()\n", + " self.extra_feat = extra_feat\n", + " self.num_feat = num_feat\n", + " self.hist_len = hist_len\n", + " self.pred_len = pred_len\n", + " n_inputs = [\n", + " self.num_feat,\n", + " 16,\n", + " ]\n", + " n_outputs = [16, 32]\n", + " kernel_size = [4, 4]\n", + " stride = [1, 1]\n", + " padding = [1, 2]\n", + " dilation = [1, 2]\n", + " self.n_layers = len(dilation)\n", + " layers = [\n", + " base_conv1_layer(in_f, out_f, k, stride=s, padding=p, dilation=d)\n", + " for in_f, out_f, k, s, p, d in zip(\n", + " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", + " )\n", + " ]\n", + " self.cnn_layers = nn.ModuleList(layers)\n", + " self.att_layers = nn.ModuleList(\n", + " [[attention_module(embed_dim=e_dim) for e_dim in n_outputs][-1]]\n", + " )\n", + " self.activation_layers = nn.ModuleList(\n", + " [nn.GELU() for _ in range(self.n_layers)]\n", + " )\n", + " self.last_layer = nn.Sequential(\n", + " nn.Linear(297, 128),\n", + " nn.BatchNorm1d(num_features=128),\n", + " nn.Linear(128, int((num_feat - self.extra_feat) // 2)),\n", + " )\n", + "\n", + " def forward(self, x):\n", + " org_x = x[\n", + " :,\n", + " self.hist_len :,\n", + " : -self.extra_feat - int((self.num_feat - self.extra_feat) // 2),\n", + " ]\n", + " mask = x[\n", + " :,\n", + " 0,\n", + " self.num_feat - int((self.num_feat - self.extra_feat) // 2) :,\n", + " ]\n", + " for i in range(self.n_layers):\n", + " x = x.permute(0, 2, 1)\n", + " x = self.cnn_layers[i](x)\n", + " x = x.permute(0, 2, 1)\n", + " if i >= self.n_layers:\n", + " x, _ = self.att_layers[0](x, x, x)\n", + " x = self.activation_layers[i](x)\n", + "\n", + " x = torch.flatten(x, start_dim=1)\n", + " x = torch.cat([x, org_x.squeeze(1)], 1)\n", + " x = self.last_layer(x)\n", + " x = masked_softmax(x, mask)\n", + " return torch.sum(org_x * x[:, None], 2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cbf674cc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autoclose": false, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/deployment/ensembler/src/services.py b/deployment/ensembler/src/services.py new file mode 100644 index 00000000..b39c8bf6 --- /dev/null +++ b/deployment/ensembler/src/services.py @@ -0,0 +1,26 @@ +"""Script for serivices""" +from amq_message_python_library import * # python amq-message-python-library +from src.ensembler import Ensembler + + +class AMQService: + """Class for starting amq service""" + + def __init__(self, config): + """init function""" + self.start_amq_service(config) + # self.start_fastapi_service() + + def start_amq_service(self, config): + """Connect to amq, subscribe to start ensembling topic""" + start_conn = morphemic.Connection( + config["AMQ_USER"], + config["AMQ_PASSWORD"], + host=config["AMQ_HOST"], + port=config["AMQ_PORT_BROKER"], + debug=True, + ) + start_conn.connect() + start_conn.conn.subscribe(f"/topic/{config['START_TOPIC']}", "1", ack="auto") + self.ens = Ensembler(start_conn) + start_conn.conn.set_listener("ensemble", self.ens) -- GitLab From f52e2733a2100ffce42fccd2606b1f6544c68c8b Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Sun, 27 Mar 2022 22:54:18 +0200 Subject: [PATCH 7/7] ensember - influx integration --- deployment/ensembler/.gitignore | 152 +++ deployment/ensembler/Dockerfile | 17 +- deployment/ensembler/app.py | 10 +- deployment/ensembler/ensembler/__init__.py | 1 + .../ensembler/ensembler/dataset/__init__.py | 1 + .../{src => ensembler}/dataset/data.py | 3 +- .../ensembler/dataset/download_data.py | 116 ++ .../dataset/preprocess_dataset.py | 7 +- .../ensembler/{src => ensembler}/ensembler.py | 57 +- .../{src => ensembler}/env_config.py | 0 .../{src => ensembler}/messages_schemas.py | 0 .../ensembler/ensembler/mocking/__init__.py | 1 + .../{src => ensembler}/mocking/helpers.py | 3 +- .../{src => ensembler}/models/dl_dataset.py | 26 +- .../{src => ensembler}/models/dl_helpers.py | 2 +- .../ensembler/ensembler/models/dl_models.py | 178 +++ .../ensembler/models/dl_torch_lightning.py | 160 +++ .../models/ensembler_models.py | 8 +- .../ensembler/{src => ensembler}/services.py | 3 +- deployment/ensembler/example_curl.txt | 27 - deployment/ensembler/poetry.lock | 1092 +++++++++++++++++ deployment/ensembler/pyproject.toml | 28 + deployment/ensembler/requirements.txt | 12 - .../dataset/__pycache__/data.cpython-37.pyc | Bin 921 -> 0 bytes .../__pycache__/helpers.cpython-37.pyc | Bin 1549 -> 0 bytes .../.ipynb_checkpoints/test-checkpoint.ipynb | 948 -------------- .../__pycache__/dl_dataset.cpython-37.pyc | Bin 6410 -> 0 bytes .../__pycache__/dl_helpers.cpython-37.pyc | Bin 1860 -> 0 bytes .../ensembler_models.cpython-37.pyc | Bin 6722 -> 0 bytes deployment/ensembler/src/models/dl_models.py | 84 -- .../src/models/dl_torch_lightning.py | 2 - deployment/ensembler/src/models/new.csv | 96 -- deployment/ensembler/src/models/test.ipynb | 988 --------------- deployment/ensembler/tests/__init__.py | 0 deployment/ensembler/tests/test_ensembler.py | 5 + 35 files changed, 1829 insertions(+), 2198 deletions(-) create mode 100644 deployment/ensembler/.gitignore create mode 100644 deployment/ensembler/ensembler/__init__.py create mode 100644 deployment/ensembler/ensembler/dataset/__init__.py rename deployment/ensembler/{src => ensembler}/dataset/data.py (91%) create mode 100644 deployment/ensembler/ensembler/dataset/download_data.py rename deployment/ensembler/{src => ensembler}/dataset/preprocess_dataset.py (99%) rename deployment/ensembler/{src => ensembler}/ensembler.py (77%) rename deployment/ensembler/{src => ensembler}/env_config.py (100%) rename deployment/ensembler/{src => ensembler}/messages_schemas.py (100%) create mode 100644 deployment/ensembler/ensembler/mocking/__init__.py rename deployment/ensembler/{src => ensembler}/mocking/helpers.py (99%) rename deployment/ensembler/{src => ensembler}/models/dl_dataset.py (91%) rename deployment/ensembler/{src => ensembler}/models/dl_helpers.py (100%) create mode 100644 deployment/ensembler/ensembler/models/dl_models.py create mode 100644 deployment/ensembler/ensembler/models/dl_torch_lightning.py rename deployment/ensembler/{src => ensembler}/models/ensembler_models.py (99%) rename deployment/ensembler/{src => ensembler}/services.py (95%) delete mode 100644 deployment/ensembler/example_curl.txt create mode 100644 deployment/ensembler/poetry.lock create mode 100644 deployment/ensembler/pyproject.toml delete mode 100644 deployment/ensembler/requirements.txt delete mode 100644 deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc delete mode 100644 deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc delete mode 100644 deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb delete mode 100644 deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc delete mode 100644 deployment/ensembler/src/models/__pycache__/dl_helpers.cpython-37.pyc delete mode 100644 deployment/ensembler/src/models/__pycache__/ensembler_models.cpython-37.pyc delete mode 100644 deployment/ensembler/src/models/dl_models.py delete mode 100644 deployment/ensembler/src/models/dl_torch_lightning.py delete mode 100644 deployment/ensembler/src/models/new.csv delete mode 100644 deployment/ensembler/src/models/test.ipynb create mode 100644 deployment/ensembler/tests/__init__.py create mode 100644 deployment/ensembler/tests/test_ensembler.py diff --git a/deployment/ensembler/.gitignore b/deployment/ensembler/.gitignore new file mode 100644 index 00000000..de2d5e08 --- /dev/null +++ b/deployment/ensembler/.gitignore @@ -0,0 +1,152 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/deployment/ensembler/Dockerfile b/deployment/ensembler/Dockerfile index c193449a..a0a1bcf5 100644 --- a/deployment/ensembler/Dockerfile +++ b/deployment/ensembler/Dockerfile @@ -2,11 +2,15 @@ FROM python:3.8-slim-buster # Install Python dependencies. WORKDIR /wd -# COPY deployment/nbeats/requirements.txt . -COPY deployment/ensembler/requirements.txt . -RUN apt-get update && apt-get install -y build-essential g++ libgl1-mesa-glx libx11-6 -RUN pip3 install --no-cache-dir -r requirements.txt && mkdir models +COPY deployment/ensembler/poetry.lock deployment/ensembler/pyproject.toml /wd/ + +RUN apt-get update && apt-get install -y build-essential g++ libgl1-mesa-glx libx11-6 \ + && pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir poetry \ + \ + && poetry install --no-dev && mkdir models + ADD https://gitlab.ow2.org/melodic/morphemic-preprocessor/-/archive/morphemic-rc1.5/morphemic-preprocessor-morphemic-rc1.5.tar.gz /var/lib/morphemic/ @@ -23,6 +27,9 @@ RUN cd /var/lib/morphemic/ \ && mkdir -p /wd/logs -CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] +CMD ["poetry", "run" , "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] + +# For local tests: +# CMD ["poetry", "run" , "uvicorn", "app:app", "--reload"] diff --git a/deployment/ensembler/app.py b/deployment/ensembler/app.py index 9539ba0f..7c7ac9b4 100644 --- a/deployment/ensembler/app.py +++ b/deployment/ensembler/app.py @@ -2,12 +2,14 @@ import logging from datetime import datetime -from pytz import timezone + import setproctitle from fastapi import FastAPI -from src.messages_schemas import Prediction, EnsembleResponse -from src.env_config import create_env_config -from src.services import AMQService +from pytz import timezone + +from ensembler.env_config import create_env_config +from ensembler.messages_schemas import EnsembleResponse, Prediction +from ensembler.services import AMQService env_config = create_env_config() setproctitle.setproctitle("Ensembler") diff --git a/deployment/ensembler/ensembler/__init__.py b/deployment/ensembler/ensembler/__init__.py new file mode 100644 index 00000000..b794fd40 --- /dev/null +++ b/deployment/ensembler/ensembler/__init__.py @@ -0,0 +1 @@ +__version__ = '0.1.0' diff --git a/deployment/ensembler/ensembler/dataset/__init__.py b/deployment/ensembler/ensembler/dataset/__init__.py new file mode 100644 index 00000000..b794fd40 --- /dev/null +++ b/deployment/ensembler/ensembler/dataset/__init__.py @@ -0,0 +1 @@ +__version__ = '0.1.0' diff --git a/deployment/ensembler/src/dataset/data.py b/deployment/ensembler/ensembler/dataset/data.py similarity index 91% rename from deployment/ensembler/src/dataset/data.py rename to deployment/ensembler/ensembler/dataset/data.py index a5fff160..8e0804db 100644 --- a/deployment/ensembler/src/dataset/data.py +++ b/deployment/ensembler/ensembler/dataset/data.py @@ -1,4 +1,5 @@ -"""Script for data frame with prediction class""" +"""Script for data frame with predictions class +""" import time diff --git a/deployment/ensembler/ensembler/dataset/download_data.py b/deployment/ensembler/ensembler/dataset/download_data.py new file mode 100644 index 00000000..6d4b0a3f --- /dev/null +++ b/deployment/ensembler/ensembler/dataset/download_data.py @@ -0,0 +1,116 @@ +"""Script for downloading data from influx +""" + +import os + +import pandas as pd +from influxdb import DataFrameClient + + +class InfluxDataDownloader: + def __init__( + self, + ) -> None: + """class for downloading data from inlux, + necessary are columns with predictions and + real values + """ + + self.influx_client = DataFrameClient( + host=os.environ.get("INFLUXDB_HOSTNAME", "localhost"), + port=int(os.environ.get("INFLUXDB_PORT", "8086")), + username=os.environ.get("INFLUXDB_USERNAME", "morphemic"), + password=os.environ.get("INFLUXDB_PASSWORD", "password"), + ) + self.influx_client.switch_database( + os.environ.get("INFLUXDB_DBNAME", "morphemic") + ) + + @staticmethod + def convert_timestamp(data_frame: pd.DataFrame) -> pd.DataFrame: + """convert date index to desired format + + Args: + ------- + data_frame (pd.DataFrame): data frame with + time index (pandas time index) + + Returns: + ------- + pd.DataFrame: data frame with date index + with desired format + """ + return pd.to_datetime(data_frame.index, unit="s").tz_convert(None) + + def download_predictions(self, metric_name: str) -> pd.DataFrame: + """Download predicted values from influx + + Returns: + ------- + pd.DataFrame: pandas data + frame with predictions values + """ + return self.influx_client.query( + f'SELECT * FROM "{metric_name}Predictions" WHERE time > now() - {os.environ.get("MAX_PAST_DAYS", 100)}d' + )[f"{metric_name}Predictions"] + + def download_real(self, start_time: pd.DatetimeIndex) -> pd.DataFrame: + """Download real values from influx + + Args: + ------- + start_time (pd.DatetimeIndex): first + date with predictions, + + Returns: + ------- + pd.DataFrame: pandas data + frame with real values from PS + """ + return self.influx_client.query( + f'SELECT * FROM "{os.environ.get("APP_NAME", "default_application")}" WHERE time > {start_time}' + )[os.environ.get("APP_NAME", "default_application")] + + def download_data(self, metric_name: str, predictions_freq: int) -> pd.DataFrame: + """ + Download data from inlux + (2 tables one with predictions, second with + real values from PS), merge data and save them to csv + + Args: + ------ + metric_name (str): metric name + predictions_freq (int): predictions + frequency (in seconds) + + Returns: + ------- + pd.DataFrame: pandas data + frame with real and predicted values + """ + predictions = self.download_predictions(metric_name) + predictions = self.convert_timestamp(predictions) + start_time = predictions.index.values[0] + + real = self.download_data(start_time) + real.index = real["ems_time"] + real = self.convert_timestamp(real) + + predictions = predictions.resample( + f"{predictions_freq}S", origin=start_time + ).mean() + real = ( + real.resample(f"{predictions_freq}S", origin=start_time) + .mean() + .rename({metric_name: "y"}, axis=1) + )["y"] + + merged = pd.merge( + predictions, + real, + how="left", + left_index=True, + right_index=True, + ).dropna(subset=["y"]) + + return merged diff --git a/deployment/ensembler/src/dataset/preprocess_dataset.py b/deployment/ensembler/ensembler/dataset/preprocess_dataset.py similarity index 99% rename from deployment/ensembler/src/dataset/preprocess_dataset.py rename to deployment/ensembler/ensembler/dataset/preprocess_dataset.py index aa674974..5c35bc5c 100644 --- a/deployment/ensembler/src/dataset/preprocess_dataset.py +++ b/deployment/ensembler/ensembler/dataset/preprocess_dataset.py @@ -1,9 +1,10 @@ +import logging +import time + +import numpy as np import pandas as pd from pytorch_forecasting import TimeSeriesDataSet from pytorch_forecasting.data import NaNLabelEncoder -import numpy as np -import logging -import time pd.options.mode.chained_assignment = None diff --git a/deployment/ensembler/src/ensembler.py b/deployment/ensembler/ensembler/ensembler.py similarity index 77% rename from deployment/ensembler/src/ensembler.py rename to deployment/ensembler/ensembler/ensembler.py index bf7164b3..5a2ab962 100644 --- a/deployment/ensembler/src/ensembler.py +++ b/deployment/ensembler/ensembler/ensembler.py @@ -1,18 +1,27 @@ -"""Script for ensembler class""" +"""Script for ensembler class, currenntly +3 types of ensembling models are available: + * Mean ensembler + * Linnear programming + * Top k on last n +""" import json import logging -import time import threading -from slugify import slugify +import time +from typing import List + import stomp -from src.mocking.helpers import mock_predictions_df -from src.models.ensembler_models import ( +from slugify import slugify + +from ensembler.dataset.data import PredictionsDF +from ensembler.dataset.download_data import InfluxDataDownloader +from ensembler.mocking.helpers import mock_predictions_df +from ensembler.models.ensembler_models import ( AverageEnsembler, BestSubsetEnsembler, LinnearProgrammingEnsembler, ) -from src.dataset.data import PredictionsDF class Ensembler(stomp.ConnectionListener): @@ -28,17 +37,41 @@ class Ensembler(stomp.ConnectionListener): self.prediction_dfs = {} self.metrics_frequency = {} self.predictions_tables_names = None + self.influx_data_dwonloader = InfluxDataDownloader() - def get_data(self, metric, columns): + def get_data(self, metric: str, columns: List[str], mock: bool = True) -> None: """Download data frame with predictions and real values for given metric, - currently mocked.""" - if not self.prediction_dfs[metric]: - self.prediction_dfs[metric] = PredictionsDF(mock_predictions_df(columns)) + currently mocked. + + Args: + ----- + metric (str): metric name + columns (List[str]): list of columns + """ + if mock: + if not self.prediction_dfs[metric]: + self.prediction_dfs[metric] = PredictionsDF( + mock_predictions_df(columns) + ) + else: + self.prediction_dfs[metric].update(mock_predictions_df(columns)) + else: - self.prediction_dfs[metric].update(mock_predictions_df(columns)) + if not self.prediction_dfs[metric]: + self.prediction_dfs[metric] = PredictionsDF( + self.influx_data_dwonloader.download_data( + metric, self.metrics_frequency[metric] + ) + ) + else: + self.prediction_dfs[metric].update( + self.influx_data_dwonloader.download_data( + metric, self.metrics_frequency[metric] + ) + ) - def get_predictions_fields(self): + def get_predictions_fields(self) -> None: """Get predictions columns names""" self.predictions_tables_names = { metric: [ diff --git a/deployment/ensembler/src/env_config.py b/deployment/ensembler/ensembler/env_config.py similarity index 100% rename from deployment/ensembler/src/env_config.py rename to deployment/ensembler/ensembler/env_config.py diff --git a/deployment/ensembler/src/messages_schemas.py b/deployment/ensembler/ensembler/messages_schemas.py similarity index 100% rename from deployment/ensembler/src/messages_schemas.py rename to deployment/ensembler/ensembler/messages_schemas.py diff --git a/deployment/ensembler/ensembler/mocking/__init__.py b/deployment/ensembler/ensembler/mocking/__init__.py new file mode 100644 index 00000000..b794fd40 --- /dev/null +++ b/deployment/ensembler/ensembler/mocking/__init__.py @@ -0,0 +1 @@ +__version__ = '0.1.0' diff --git a/deployment/ensembler/src/mocking/helpers.py b/deployment/ensembler/ensembler/mocking/helpers.py similarity index 99% rename from deployment/ensembler/src/mocking/helpers.py rename to deployment/ensembler/ensembler/mocking/helpers.py index a9955041..7b1578c1 100644 --- a/deployment/ensembler/src/mocking/helpers.py +++ b/deployment/ensembler/ensembler/mocking/helpers.py @@ -1,7 +1,8 @@ """Script with helpers for testing ensemblers, mocking ActiveMQ messages etc.""" import json -import pandas as pd + import numpy as np +import pandas as pd class Msg(object): diff --git a/deployment/ensembler/src/models/dl_dataset.py b/deployment/ensembler/ensembler/models/dl_dataset.py similarity index 91% rename from deployment/ensembler/src/models/dl_dataset.py rename to deployment/ensembler/ensembler/models/dl_dataset.py index 859f5b85..cc405cca 100644 --- a/deployment/ensembler/src/models/dl_dataset.py +++ b/deployment/ensembler/ensembler/models/dl_dataset.py @@ -1,9 +1,10 @@ """Script for pythorch dataset class""" -import torch.utils.data as data -import torch -import re import random +import re + import numpy as np +import torch +import torch.utils.data as data class DatasetHistMask(torch.utils.data.Dataset): @@ -22,7 +23,7 @@ class DatasetHistMask(torch.utils.data.Dataset): self, networks_prediction_df, models_list=["arima", "cnn"], - max_pred_len=5, + max_pred_len=1, series_len=15, target_column="y", start_idx=0, @@ -34,13 +35,14 @@ class DatasetHistMask(torch.utils.data.Dataset): self.get_rows(last_idx, start_idx) self.models_list = models_list assert len(self.models_list) > 1, "There must be more than one forecaster!" + self.series_len = series_len + self.max_pred_len = max_pred_len self.x_columns = self.get_x_col_names() self.series_lengths = self.get_series_lengths() self.valid_indices = self.get_valid_indices() self.df = self.df[self.x_columns + [target_column, "series_id"]] + self.df = self.df.loc[:, ~self.df.columns.duplicated()] self.target_column = target_column - self.max_pred_len = max_pred_len - self.series_len = series_len self.nan_fill_value = nan_fill_value def get_x_col_names(self): @@ -61,7 +63,8 @@ class DatasetHistMask(torch.utils.data.Dataset): indices = [ i for i in range(self.df.shape[0]) - if self.series_lengths.loc[self.df.iloc[i]["series_id"]] - i >= 15 + if self.series_lengths.loc[self.df.iloc[i]["series_id"]] - i + >= self.series_len + self.max_pred_len ] return indices @@ -79,11 +82,14 @@ class DatasetHistMask(torch.utils.data.Dataset): def get_one_series_df_part(self, idx): """Get single series (consecutive rows from data frame of length: series_len)""" - return self.df.iloc[idx : idx + self.series_len].reset_index() + series = self.df.iloc[idx : idx + self.series_len].reset_index() + series = series.loc[:, ~series.columns.duplicated()] + return series def get_target_value(self, df): """Get target value, single y true value which we want to approximate with ensembling""" + assert df[self.target_column].values[-1] != np.nan return df[self.target_column].values[-1] def replace_future_values(self, col, hist_len): @@ -101,7 +107,7 @@ class DatasetHistMask(torch.utils.data.Dataset): 0 for _ in range(self.series_len - hist_len) ] for col in self.x_columns: - x[f"{col}_mask"] = x[col].isna().astype(int) + x[f"{col}_mask"] = x[col].notna().astype(int) return x def get_predictions_to_ensemble(self, x): @@ -114,7 +120,7 @@ class DatasetHistMask(torch.utils.data.Dataset): def to_tensors(x, preds, y): """Convert network input to tensor""" return ( - torch.tensor(x.to_numpy().astype(np.float32)), + torch.tensor(x.fillna(0).to_numpy().astype(np.float32)), torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(), torch.tensor(y), ) diff --git a/deployment/ensembler/src/models/dl_helpers.py b/deployment/ensembler/ensembler/models/dl_helpers.py similarity index 100% rename from deployment/ensembler/src/models/dl_helpers.py rename to deployment/ensembler/ensembler/models/dl_helpers.py index 342bd1d5..a849c864 100644 --- a/deployment/ensembler/src/models/dl_helpers.py +++ b/deployment/ensembler/ensembler/models/dl_helpers.py @@ -1,6 +1,6 @@ """SCript for deep learning helpers fucnctions""" -import torch.nn as nn import torch +import torch.nn as nn from torch.nn.utils import weight_norm diff --git a/deployment/ensembler/ensembler/models/dl_models.py b/deployment/ensembler/ensembler/models/dl_models.py new file mode 100644 index 00000000..8dbcf56f --- /dev/null +++ b/deployment/ensembler/ensembler/models/dl_models.py @@ -0,0 +1,178 @@ +"""Script for Ensembler torch network""" + +import torch +import torch.nn as nn +from dl_helpers import (attention_module, base_conv_layer, base_linear_module, + calculate_matching_padding, masked_softmax) + + +class FCNN(nn.Module): + """Torch ensemble network""" + + def __init__(self, forecasters_num=6, n_inputs=[11, 32, 64], series_len=21): + super().__init__() + self.forecasters_num = forecasters_num + n_inputs[0] = n_inputs[0] * series_len + layers = [ + base_linear_module(in_f, out_f) + for in_f, out_f in zip(n_inputs[:-1], n_inputs[1:]) + ] + [nn.Linear(n_inputs[-1], forecasters_num)] + self.fcnn = nn.Sequential(*layers) + + def get_mask_and_preds(self, prediction): + """Get binary mask for predictions which + are not present and predicted values""" + return ( + prediction[:, self.forecasters_num :], + prediction[:, : self.forecasters_num], + ) + + def forward(self, batch): + """model forward function""" + x, preds_to_ensemble = batch + x = torch.flatten(x, start_dim=1) + x = self.fcnn(x) + mask, preds = self.get_mask_and_preds(preds_to_ensemble) + x = masked_softmax(x, mask) + return torch.sum(preds * x, 1) + + +class EnsemblerRegressorModel(nn.Module): + """Torch ensemble network""" + + def __init__( + self, + forecasters_num=6, + n_inputs=[11, 32, 64], + n_outputs=[32, 64, 128], + kernel_size=[5, 5, 3], + stride=[1, 1, 1], + dilation=[1, 1, 1], + series_len=21, + with_att=False, + ): + super().__init__() + self.forecasters_num = forecasters_num + self.n_layers = len(dilation) + self.with_att = with_att + self.series_len = series_len + self.cnn_layers = nn.ModuleList( + self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, dilation) + ) + self.att_layers = attention_module(embed_dim=n_outputs[-1]) + self.activation_layers = nn.GELU() + self.last_layer = nn.Linear( + int(series_len * n_outputs[-1]) + self.forecasters_num * 2, + self.forecasters_num, + ) + + def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, dilation): + """Creates convolutional layers with padding + so that the output has the same length as input""" + return [ + base_conv_layer( + in_f, + out_f, + k, + stride=s, + padding=calculate_matching_padding( + self.series_len, self.series_len, k, d, s + ), + dilation=d, + ) + for in_f, out_f, k, s, d in zip( + n_inputs, n_outputs, kernel_size, stride, dilation + ) + ] + + def get_mask_and_preds(self, prediction): + """Get binary mask for predictions which + are not present and predicted values""" + return ( + prediction[:, self.forecasters_num :], + prediction[:, : self.forecasters_num], + ) + + def forward(self, batch): + """model forward function""" + x, preds_to_ensemble = batch + for i in range(self.n_layers): + x = x.permute(0, 2, 1) + x = self.cnn_layers[i](x) + x = x.permute(0, 2, 1) + if i == self.n_layers - 1: + if self.with_att: + x, _ = self.att_layers(x, x, x) + x = self.activation_layers(x) + x = torch.flatten(x, start_dim=1) + x = torch.cat((x, preds_to_ensemble), 1) + x = self.last_layer(x) + mask, preds = self.get_mask_and_preds(preds_to_ensemble) + x = masked_softmax(x, mask) + return torch.sum(preds * x, 1) + + +class BaseCNNNetworkMask(nn.Module): + """Dense CNN 1D network with softmax at the end""" + + def __init__(self, num_feat=6, hist_len=5, pred_len=1, extra_feat=3): + super(BaseCNNNetworkMask, self).__init__() + self.extra_feat = extra_feat + self.num_feat = num_feat + self.hist_len = hist_len + self.pred_len = pred_len + n_inputs = [ + self.num_feat, + 16, + ] + self.forecasters_num = 6 + n_outputs = [16, 32] + kernel_size = [4, 4] + stride = [1, 1] + padding = [1, 2] + dilation = [1, 2] + self.n_layers = len(dilation) + layers = [ + base_conv_layer(in_f, out_f, k, stride=s, padding=p, dilation=d) + for in_f, out_f, k, s, p, d in zip( + n_inputs, n_outputs, kernel_size, stride, padding, dilation + ) + ] + self.cnn_layers = nn.ModuleList(layers) + self.att_layers = nn.ModuleList( + [[attention_module(embed_dim=e_dim) for e_dim in n_outputs][-1]] + ) + self.activation_layers = nn.ModuleList( + [nn.GELU() for _ in range(self.n_layers)] + ) + self.last_layer = nn.Sequential( + nn.Linear(268, 128), + nn.BatchNorm1d(num_features=128), + nn.Linear(128, self.forecasters_num), + ) + + def get_mask_and_preds(self, prediction): + """Get binary mask for predictions which + are not present and predicted values""" + return ( + prediction[:, self.forecasters_num :], + prediction[:, : self.forecasters_num], + ) + + def forward(self, batch): + x, preds_to_ensemble = batch + org_x = preds_to_ensemble + for i in range(self.n_layers): + x = x.permute(0, 2, 1) + x = self.cnn_layers[i](x) + x = x.permute(0, 2, 1) + if i >= self.n_layers: + x, _ = self.att_layers[0](x, x, x) + x = self.activation_layers[i](x) + + x = torch.flatten(x, start_dim=1) + x = torch.cat([x, org_x.squeeze(1)], 1) + x = self.last_layer(x) + mask, preds = self.get_mask_and_preds(preds_to_ensemble) + x = masked_softmax(x, mask) + return torch.sum(preds * x, 1) diff --git a/deployment/ensembler/ensembler/models/dl_torch_lightning.py b/deployment/ensembler/ensembler/models/dl_torch_lightning.py new file mode 100644 index 00000000..97d2fa3c --- /dev/null +++ b/deployment/ensembler/ensembler/models/dl_torch_lightning.py @@ -0,0 +1,160 @@ +"""Script for torch lighning module for ensembling""" + +"""Script for deep learning networks """ +import os + +import numpy as np +import pandas as pd +# PyTorch Lightning +import pytorch_lightning as pl +import torch +import torch.nn as nn +from dl_dataset import DatasetHistMask +from dl_models import BaseCNNNetworkMask, EnsemblerRegressorModel +from torch.nn.utils import weight_norm +from torch.utils.data import DataLoader + + +class Ensembler(pl.LightningModule): + def __init__( + self, df, models_list=["0", "1", "2", "3", "4", "5"], lr=0.0002, series_len=11 + ): + super().__init__() + self.df = df + self.models_list = models_list + self.series_len = series_len + self.prepare() + self.lr = lr + # self.model = EnsemblerRegressorModel( + # forecasters_num=len(models_list), + # n_inputs=[len(models_list) * 3 + 5, 32, 64], + # n_outputs=[32, 64, 128], + # series_len=self.series_len, + # ) + self.model = BaseCNNNetworkMask(num_feat=len(models_list) * 3 + 5) + + self.loss = nn.L1Loss() + self.val_loss = [] + self.val_mae = [] + self.train_loss_1 = [] + self.train_mae = [] + self.val_predictions = {} + self.val_true = [] + self.val_pred = [] + + def smape(self, y_true, y_pred): + return ( + 1 + / len(y_true) + * np.sum(2 * np.abs(y_pred - y_true) / (np.abs(y_true) + np.abs(y_pred))) + ) + + def mape(self, y_true, y_pred): + return np.mean(np.abs((y_true - y_pred) / (y_true))) * 1 + + def prepare(self): + self.train_set = DatasetHistMask( + self.df, + models_list=self.models_list, + start_idx=0, + last_idx=4000, + series_len=self.series_len, + ) + + self.val_set = DatasetHistMask( + self.df, + models_list=self.models_list, + start_idx=4000, + last_idx=None, + series_len=self.series_len, + ) + + def train_dataloader(self): + return DataLoader(self.train_set, batch_size=32, shuffle=True, num_workers=4) + + def val_dataloader(self): + return DataLoader(self.val_set, batch_size=64, num_workers=4) + + def forward(self, x): + y_pred = self.model(x) + return y_pred + + def training_step(self, batch, batch_idx): + output = self.model((batch[0], batch[1])) + loss = self.loss(batch[2], output) + self.train_loss_1.append(loss.item()) + self.train_mae.append(torch.mean(torch.abs(batch[2] - output)).detach()) + return loss + + def validation_step(self, batch, batch_idx): + output = self.model((batch[0], batch[1])) + loss = self.loss(batch[2], output) + self.val_loss.append(loss) + self.val_mae.append(torch.mean(torch.abs(batch[2] - output))) + self.val_true.extend(batch[-1].squeeze().tolist()) + self.val_pred.extend(output.squeeze().tolist()) + metric = {"val_loss": loss} + self.log_dict(metric) + return loss + + def validation_epoch_end(self, val_step_outputs): + print("val epoch end") + print("MAE", np.mean(np.abs(np.array(self.val_true) - np.array(self.val_pred)))) + self.val_true = [] + self.val_pred = [] + + def training_epoch_end(self, val_step_outputs): + print(np.mean(np.array(self.train_loss_1)), " train loss") + self.train_loss = [] + self.train_mae = [] + + def predict(self): + pass + + def configure_optimizers(self): + optimizers = [torch.optim.Adam(self.parameters(), lr=self.lr)] + schedulers = [ + { + "scheduler": torch.optim.lr_scheduler.ReduceLROnPlateau( + optimizers[0], mode="min", factor=0.2, patience=4, verbose=True + ), + "monitor": "val_loss", # Default: val_loss + "interval": "epoch", + "frequency": 1, + }, + ] + return optimizers, schedulers + + +PREDICTIONS_PATH = "cpu_predictions" +Y_COLUMN = "real" +P_COLUMN = "prediction" +STEP = 1 +PRED_LEN = 5 + + +def create_data(): + data = pd.DataFrame() + for i, file in enumerate(os.listdir(PREDICTIONS_PATH)): + tmp_data = pd.read_csv(os.path.join(PREDICTIONS_PATH, file)) + tmp_data["index"] = range(tmp_data.shape[0]) + tmp_data = tmp_data[tmp_data.index % PRED_LEN == 0] + data[f"{i}_value"] = tmp_data[P_COLUMN] + data["y"] = tmp_data[Y_COLUMN] + + data.index = range(data.shape[0]) + return data + + +data = create_data() +data["series_id"] = 0 +models_list = ["0", "1", "2", "3", "4", "5"] +data = create_data() +data["series_id"] = 0 +models_list = ["0", "1", "2", "3", "4", "5"] +data.head(3) + +network = Ensembler(data, models_list=models_list) + +trainer = pl.Trainer(max_epochs=50, gpus=0, auto_lr_find=False, gradient_clip_val=0.15) +trainer.fit(network) diff --git a/deployment/ensembler/src/models/ensembler_models.py b/deployment/ensembler/ensembler/models/ensembler_models.py similarity index 99% rename from deployment/ensembler/src/models/ensembler_models.py rename to deployment/ensembler/ensembler/models/ensembler_models.py index 7b8b0732..f24bd38c 100644 --- a/deployment/ensembler/src/models/ensembler_models.py +++ b/deployment/ensembler/ensembler/models/ensembler_models.py @@ -1,13 +1,15 @@ """Script for ensembling methods""" -import time import re +import time from itertools import chain, combinations -from src.mocking.helpers import * -from sklearn.metrics import mean_absolute_error + import cvxpy as cp import numpy as np import pandas as pd +from sklearn.metrics import mean_absolute_error + +from ensembler.mocking.helpers import * class BaseEnsembler: diff --git a/deployment/ensembler/src/services.py b/deployment/ensembler/ensembler/services.py similarity index 95% rename from deployment/ensembler/src/services.py rename to deployment/ensembler/ensembler/services.py index b39c8bf6..8458da99 100644 --- a/deployment/ensembler/src/services.py +++ b/deployment/ensembler/ensembler/services.py @@ -1,6 +1,7 @@ """Script for serivices""" from amq_message_python_library import * # python amq-message-python-library -from src.ensembler import Ensembler + +from ensembler.ensembler import Ensembler class AMQService: diff --git a/deployment/ensembler/example_curl.txt b/deployment/ensembler/example_curl.txt deleted file mode 100644 index 0507cb90..00000000 --- a/deployment/ensembler/example_curl.txt +++ /dev/null @@ -1,27 +0,0 @@ -curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"Linnear_programming", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' - - -curl -i http://127.0.0.1:8000/ensemble -X POST -H 'Content-Type: application/json' -d '{"method":"BestSubset", "metric": "MaxCPULoad", "predictiontime": 1234567, "values": {"tft": 0, "nbeats": null, "gluon": 9}}' -w '\n' - - - -{ - "metrics":[ - { - "metric":"MaxCPULoad", - "level":3, - "publish_rate":60000 - }, - { - "metric":"MinCPULoad", - "level":3, - "publish_rate":50000 - } - ], - "models":[ - "tft", - "nbeats", - "gluon" - ] -} - diff --git a/deployment/ensembler/poetry.lock b/deployment/ensembler/poetry.lock new file mode 100644 index 00000000..a82ce095 --- /dev/null +++ b/deployment/ensembler/poetry.lock @@ -0,0 +1,1092 @@ +[[package]] +name = "asgiref" +version = "3.5.0" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.0.4" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "cryptography" +version = "36.0.2" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools_rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] + +[[package]] +name = "cvxpy" +version = "1.1.15" +description = "A domain-specific language for modeling convex optimization problems in Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +ecos = ">=2" +numpy = ">=1.15" +osqp = ">=0.4.1" +scipy = ">=1.1.0" +scs = ">=1.1.6" + +[[package]] +name = "docopt" +version = "0.6.2" +description = "Pythonic argument parser, that will make you smile" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "ecos" +version = "2.0.10" +description = "This is the Python package for ECOS: Embedded Cone Solver. See Github page for more information." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.6" +scipy = ">=0.9" + +[[package]] +name = "fastapi" +version = "0.68.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +starlette = "0.14.2" + +[package.extras] +all = ["requests (>=2.24.0,<3.0.0)", "aiofiles (>=0.5.0,<0.6.0)", "jinja2 (>=2.11.2,<3.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<2.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "graphene (>=2.1.8,<3.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.14.0)", "async_exit_stack (>=1.0.1,<2.0.0)", "async_generator (>=1.10,<2.0.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.14.0)", "graphene (>=2.1.8,<3.0.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.2.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<3.0.0)", "pytest-asyncio (>=0.14.0,<0.15.0)", "mypy (==0.812)", "flake8 (>=3.8.3,<4.0.0)", "black (==20.8b1)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.15.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.4.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.4.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "async_exit_stack (>=1.0.1,<2.0.0)", "async_generator (>=1.10,<2.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "aiofiles (>=0.5.0,<0.6.0)", "flask (>=1.1.2,<2.0.0)"] + +[[package]] +name = "filelock" +version = "3.0.12" +description = "A platform independent file lock." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "h11" +version = "0.13.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "influxdb" +version = "5.3.1" +description = "InfluxDB client" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +msgpack = "*" +python-dateutil = ">=2.6.0" +pytz = "*" +requests = ">=2.17.0" +six = ">=1.10.0" + +[package.extras] +test = ["nose", "nose-cov", "mock", "requests-mock"] + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] +plugins = ["setuptools"] + +[[package]] +name = "joblib" +version = "1.1.0" +description = "Lightweight pipelining with Python functions" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "more-itertools" +version = "8.12.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "msgpack" +version = "1.0.3" +description = "MessagePack (de)serializer." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "numpy" +version = "1.22.3" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "osqp" +version = "0.6.2.post5" +description = "OSQP: The Operator Splitting QP Solver" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +qdldl = "*" +scipy = ">=0.13.2" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pandas" +version = "1.1.3" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +numpy = ">=1.15.4" +python-dateutil = ">=2.7.3" +pytz = ">=2017.2" + +[package.extras] +test = ["pytest (>=4.0.2)", "pytest-xdist", "hypothesis (>=3.58)"] + +[[package]] +name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydantic" +version = "1.8.2" +description = "Data validation and settings management using python 3.6 type hinting" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +typing-extensions = ">=3.7.4.3" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pyopenssl" +version = "20.0.1" +description = "Python wrapper module around the OpenSSL library" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.dependencies] +cryptography = ">=3.2" +six = ">=1.5.2" + +[package.extras] +docs = ["sphinx", "sphinx-rtd-theme"] +test = ["flaky", "pretend", "pytest (>=3.0.1)"] + +[[package]] +name = "pyparsing" +version = "3.0.7" +description = "Python parsing module" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +checkqa-mypy = ["mypy (==v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-slugify" +version = "6.1.1" +description = "A Python slugify application that also handles Unicode" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + +[[package]] +name = "pytz" +version = "2022.1" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "qdldl" +version = "0.1.5.post0" +description = "QDLDL, a free LDL factorization routine." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +scipy = ">=0.13.2" + +[[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] +name = "scikit-learn" +version = "1.0.2" +description = "A set of python modules for machine learning and data mining" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +joblib = ">=0.11" +numpy = ">=1.14.6" +scipy = ">=1.1.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=2.2.3)", "pandas (>=0.25.0)", "memory-profiler (>=0.57.0)"] +docs = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.0.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)"] +tests = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=21.6b0)", "mypy (>=0.770)", "pyamg (>=4.0.0)"] + +[[package]] +name = "scipy" +version = "1.6.1" +description = "SciPy: Scientific Library for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.16.5" + +[[package]] +name = "scs" +version = "3.2.0" +description = "scs: splitting conic solver" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +scipy = ">=0.13.2" + +[[package]] +name = "setproctitle" +version = "1.2.2" +description = "A Python module to customize the process title" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +test = ["pytest (>=6.1,<6.2)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "sklearn" +version = "0.0" +description = "A set of python modules for machine learning and data mining" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +scikit-learn = "*" + +[[package]] +name = "starlette" +version = "0.14.2" +description = "The little ASGI library that shines." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +full = ["aiofiles", "graphene", "itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] + +[[package]] +name = "stomp.py" +version = "8.0.0" +description = "Python STOMP client, supporting versions 1.0, 1.1 and 1.2 of the protocol" +category = "main" +optional = false +python-versions = ">=3.6,<4.0" + +[package.dependencies] +docopt = ">=0.6.2,<0.7.0" +PyOpenSSL = ">=20.0.1,<21.0.0" + +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "threadpoolctl" +version = "3.1.0" +description = "threadpoolctl" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "urllib3" +version = "1.26.9" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "uvicorn" +version = "0.15.0" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +asgiref = ">=3.4.0" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["websockets (>=9.1)", "httptools (>=0.2.0,<0.3.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.8" +content-hash = "b0683dc4c6bbd9d547d9d841bb88e9eda8a2fc033efa8dfab5429084407921f8" + +[metadata.files] +asgiref = [ + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] +click = [ + {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, + {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +cryptography = [ + {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, + {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, + {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, + {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, + {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, + {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, + {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, +] +cvxpy = [ + {file = "cvxpy-1.1.15-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3c4ec6759962df7b7725071660a41b22702cbdfb798b30792f511c1142fe6905"}, + {file = "cvxpy-1.1.15-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:21674fa60869f3a96ade5c7ed223d45a3857eed293812b9c2d3c0d81ad6548db"}, + {file = "cvxpy-1.1.15-cp36-cp36m-win_amd64.whl", hash = "sha256:b388c289e81e1fdaa28613fe3ae2abe9268f630bae7d58c80fe06f5cb4633b50"}, + {file = "cvxpy-1.1.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d2f19f717a0d269e856c1d70d28b5a0ee95e629d44257cc97deddaa202e0a86d"}, + {file = "cvxpy-1.1.15-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:69550bbd4c25ea22fc0954c0161fb869507579fa1473dc4b53392d9dd596364f"}, + {file = "cvxpy-1.1.15-cp37-cp37m-win_amd64.whl", hash = "sha256:a15c1f0278b6dc4d8a5450a0d49dccafb1d37133f361962cb1d48972b8bc2fdd"}, + {file = "cvxpy-1.1.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:516be3def7839044a4682170063154eea57736eadffae7c9b51b768f6a98b7a5"}, + {file = "cvxpy-1.1.15-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:31f081135ce173a4b4c6d82ad22291ed64f56917d76356ab59c62f50fb4843b1"}, + {file = "cvxpy-1.1.15-cp38-cp38-win_amd64.whl", hash = "sha256:b6218ab18b3cf04fd671359b0ca4f92fe10a4eb25c09ec36a2ba854193503204"}, + {file = "cvxpy-1.1.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d15a1c8663ec798b4a1bbf91552f8b96c270623a8ee56efd1843536f53efb5a"}, + {file = "cvxpy-1.1.15-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:10d1d9287bbe58e05ed32879ed7ff8cfd1bb6f6def763c2d4576f1a1f7168575"}, + {file = "cvxpy-1.1.15-cp39-cp39-win_amd64.whl", hash = "sha256:4fc61a6867cf82754f083b9c6ac8fd1faae49dae7d8bf30b90181fa01b442285"}, + {file = "cvxpy-1.1.15.tar.gz", hash = "sha256:a9a9ba6537dfbbbf090b3a0b73a185c509ace620dbcadbacc6981f728b3298a6"}, +] +docopt = [ + {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, +] +ecos = [ + {file = "ecos-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533e1a0dec84e4e9a882b401a59b821da192f7fe4f32c6d65e400b6425858775"}, + {file = "ecos-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9b1e8134e822583f457d7759cab030e6076732bcbe977ceb1c64d8fe99c17bc3"}, + {file = "ecos-2.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:d1b7058c71808cb35e16217b832d2bf944f9a64ef852f6bd707ae66b474071e6"}, + {file = "ecos-2.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ae8bf83a9146741faaf36448eaeeef83b4dd7a9e88b80fe0e89b03d403e3096c"}, + {file = "ecos-2.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6bfe0211b99094efea0c469abbd64a7f6b991dcf0a8bed7c591c6218607a9504"}, + {file = "ecos-2.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:14deff01083fe8f54c52bee8f678eaebae54bc1eecce276324bf8ce30c306778"}, + {file = "ecos-2.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d5944f9acdfd1d23fb16a22da1e78ae98981c283e16a27fbd7cf3d52e670222b"}, + {file = "ecos-2.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8f64207b256ec8ee2ee54411927604b10e56b554bd608c7af5529c3bea93eafd"}, + {file = "ecos-2.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:13cfe9a4134b7a2f3a8f4b8d88ce5d5106bac3d168c356b0d77e1dd2ea9dc42d"}, + {file = "ecos-2.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a116ebad51aeb8847ddf05bb1e432f56f6a495682406f237a7f1633374b8356"}, + {file = "ecos-2.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6ed5ee0610b06911b6839e095a392cce52f8d88bedf86a381a9ed93c3af2a677"}, + {file = "ecos-2.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:d8afaeb204c6cbb706ebee218e3817a735ba9f7b33edc20844e6fda54946403c"}, + {file = "ecos-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b25f75808a2e136b8adc9c4dca0f3c56fc8d8256fb3c19cd162194125b4e52a9"}, + {file = "ecos-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:48948eadd2e45dd9766f0686e3de27cc6ae8e9dc85c1a2139f712b9703b0374c"}, + {file = "ecos-2.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:98c8e3b7247e7c63852974a9c4b1acc5804269b50a1aba3447220cad5e4c617f"}, + {file = "ecos-2.0.10.tar.gz", hash = "sha256:9391a73fd25b2fc56b163a2a70c78973458bb194fe475b6c27672c0d980a47cf"}, +] +fastapi = [ + {file = "fastapi-0.68.1-py3-none-any.whl", hash = "sha256:94d2820906c36b9b8303796fb7271337ec89c74223229e3cfcf056b5a7d59e23"}, + {file = "fastapi-0.68.1.tar.gz", hash = "sha256:644bb815bae326575c4b2842469fb83053a4b974b82fa792ff9283d17fbbd99d"}, +] +filelock = [ + {file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"}, + {file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"}, +] +h11 = [ + {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, + {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +influxdb = [ + {file = "influxdb-5.3.1-py2.py3-none-any.whl", hash = "sha256:65040a1f53d1a2a4f88a677e89e3a98189a7d30cf2ab61c318aaa89733280747"}, + {file = "influxdb-5.3.1.tar.gz", hash = "sha256:46f85e7b04ee4b3dee894672be6a295c94709003a7ddea8820deec2ac4d8b27a"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] +joblib = [ + {file = "joblib-1.1.0-py2.py3-none-any.whl", hash = "sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6"}, + {file = "joblib-1.1.0.tar.gz", hash = "sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"}, +] +more-itertools = [ + {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, + {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, +] +msgpack = [ + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39"}, + {file = "msgpack-1.0.3-cp310-cp310-win32.whl", hash = "sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85"}, + {file = "msgpack-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7"}, + {file = "msgpack-1.0.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770"}, + {file = "msgpack-1.0.3-cp36-cp36m-win32.whl", hash = "sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9"}, + {file = "msgpack-1.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a"}, + {file = "msgpack-1.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920"}, + {file = "msgpack-1.0.3-cp37-cp37m-win32.whl", hash = "sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50"}, + {file = "msgpack-1.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1"}, + {file = "msgpack-1.0.3-cp38-cp38-win32.whl", hash = "sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4"}, + {file = "msgpack-1.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2"}, + {file = "msgpack-1.0.3-cp39-cp39-win32.whl", hash = "sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88"}, + {file = "msgpack-1.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d"}, + {file = "msgpack-1.0.3.tar.gz", hash = "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e"}, +] +numpy = [ + {file = "numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75"}, + {file = "numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab"}, + {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e"}, + {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4"}, + {file = "numpy-1.22.3-cp310-cp310-win32.whl", hash = "sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430"}, + {file = "numpy-1.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4"}, + {file = "numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce"}, + {file = "numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe"}, + {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5"}, + {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1"}, + {file = "numpy-1.22.3-cp38-cp38-win32.whl", hash = "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62"}, + {file = "numpy-1.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676"}, + {file = "numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123"}, + {file = "numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802"}, + {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d"}, + {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168"}, + {file = "numpy-1.22.3-cp39-cp39-win32.whl", hash = "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"}, + {file = "numpy-1.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a"}, + {file = "numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f"}, + {file = "numpy-1.22.3.zip", hash = "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18"}, +] +osqp = [ + {file = "osqp-0.6.2.post5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7b3ae95221ad6f607dc4a69f36b7a0c71ca434ce85dcbf5cfa084770be5b249"}, + {file = "osqp-0.6.2.post5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26664bd4238f0f92642f532b23e61efba810a6debba0b3117300749f801e9c25"}, + {file = "osqp-0.6.2.post5-cp310-cp310-win_amd64.whl", hash = "sha256:ff71646bc9d55c5b3a72cc9b4197e51c36d25d8b2bb81f975d3ce7772ff188ec"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ca601c5008600b3e0a408339be21f9d626c497b0b0c4dbe4ffe6d6dbbed1b9f"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07602c8747ce7a177d091bb6d47ce8f214997a86b7577ddee4adae43e9ac92f"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-win_amd64.whl", hash = "sha256:8c2e40e6788b860887d584a9929ad1c0e436aab8f82bb24da7b165034cb04017"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:73a307a93fa7ab68b610e08637c95940070a27f11fda5a2e7a7095cfaff3f0ef"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77408f93ed261581fe498505c69480fb8584c8c0da2a2cd0710bb4bae0c872f5"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-win_amd64.whl", hash = "sha256:648cb4e34caf0ee948b34a1d0b184f5233e30009090884e0d75503f868bf7b1f"}, + {file = "osqp-0.6.2.post5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:51a315e02a4cb42e1911047ec6b2a44b67a269d4b5d37d7ee737654206915c82"}, + {file = "osqp-0.6.2.post5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c23bb95e6f72c6b253737edb9e4ef47ceccc3d891c287041ed5fe5f173d317bb"}, + {file = "osqp-0.6.2.post5-cp38-cp38-win_amd64.whl", hash = "sha256:908d42fb5d1d9cb36d74a8f3db69384ed1813f1a3e755367557395ce7cf05e16"}, + {file = "osqp-0.6.2.post5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c9470c5d58535d31080cb693568916a3e837f09dfa94819a85284b36b3626738"}, + {file = "osqp-0.6.2.post5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8003fc363f707daa46fef3af548e6a580372154d6cd49a7bf2f569ba5f807d15"}, + {file = "osqp-0.6.2.post5-cp39-cp39-win_amd64.whl", hash = "sha256:b1e30d6fa10ed11a95023d7308ec1588de3f5b049d09a4d0cc49e057f8e9ce47"}, + {file = "osqp-0.6.2.post5.tar.gz", hash = "sha256:b2fa17aae42a7ed498ec261b33f262bb4b3605e7e8464062159d9fae817f0d61"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pandas = [ + {file = "pandas-1.1.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:882012763668af54b48f1412bab95c5cc0a7ccce5a2a8221cfc3839a6e3394ef"}, + {file = "pandas-1.1.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:206d7c3e5356dcadf082e64dc25c24bc8541718045826074f96346e9d6d05a20"}, + {file = "pandas-1.1.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ca31ac8578d48da354cf66a473d4d5ff99277ca71d321dc7ea4e6fad3c6bb0fd"}, + {file = "pandas-1.1.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fd6f05b6101d0e76f3e5c26a47be5be7be96ed84ef3981dc1852e76898e73594"}, + {file = "pandas-1.1.3-cp36-cp36m-win32.whl", hash = "sha256:ca71a5aa9eeb3ef5b31feca7d9b6369d6b3d0b2e9c85d7a89abe3ecb013f1e86"}, + {file = "pandas-1.1.3-cp36-cp36m-win_amd64.whl", hash = "sha256:54f5f564058b0280d588c3758abde82e280702c440db5faf0c686b80336096f9"}, + {file = "pandas-1.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a038cd5da602b955d335aa80cbaa0e5774f68501ff47b9c21509906981478da"}, + {file = "pandas-1.1.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:24f61f40febe47edac271eda45d683e42838b7db2bd0f82574d9800259d2b182"}, + {file = "pandas-1.1.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:427be9938b2f79ab298de84f87693914cda238a27cf10580da96caf3dff64115"}, + {file = "pandas-1.1.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:5a8a84b75ca3a29bb4263b35d5ed9fcaae2b062f014feed8c5daa897339c7d85"}, + {file = "pandas-1.1.3-cp37-cp37m-win32.whl", hash = "sha256:c22e40f1b4d162ca18eb6b2c572e63eef220dbc9cc3de0241cefb77972621bb7"}, + {file = "pandas-1.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:920d30fdff65a079f071db635d282b4f583c2b26f2b58d5dca218aac7c59974d"}, + {file = "pandas-1.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d6b1f9d506dc23da2915bcae5c5968990049c9cec44108bd9855d2c7c89d91dc"}, + {file = "pandas-1.1.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b11b496c317dbe007898de699fd59eaf687d0fe8c1b7dad109db6010155d28ae"}, + {file = "pandas-1.1.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d89dbc58aec1544722a8d5046f880b597c497ef8a82c5fe695b4b2effafac5ec"}, + {file = "pandas-1.1.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:df43ea0e9fd9f9672b0de9cac26d01255ad50481994bf3cb4687c21eec2d7bbc"}, + {file = "pandas-1.1.3-cp38-cp38-win32.whl", hash = "sha256:a605054fbca71ed1d08bb2aef6f73c84a579bbac956bfe8f9718d5e84cb41248"}, + {file = "pandas-1.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:84a4ffe668df357e31f98c829536e3a7142c3036c82f996e639f644c5d32eda1"}, + {file = "pandas-1.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:147162568b1242355290341baf281926cfac66ada07e634f3fc521ac967e4653"}, + {file = "pandas-1.1.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2999adc6736f8cb4c69d65a6e2b25a11bcb395da5b048342b8e4d6fe055e57ae"}, + {file = "pandas-1.1.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f4cb8252ae71f093f4a6b847adf0bc9330f109c48f08363c2071f189f1c89c87"}, + {file = "pandas-1.1.3-cp39-cp39-win32.whl", hash = "sha256:b026e913d88fad3a74eea8ed5a5f98e8823080ea02f8d9bb0ec19e92552daad6"}, + {file = "pandas-1.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:11c284769f41e95f7d16a327eb555989c5f29418aad075fa80c97ef3aa8fb885"}, + {file = "pandas-1.1.3.tar.gz", hash = "sha256:babbeda2f83b0686c9ad38d93b10516e68cdcd5771007eb80a763e98aaf44613"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pydantic = [ + {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840"}, + {file = "pydantic-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b"}, + {file = "pydantic-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23"}, + {file = "pydantic-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287"}, + {file = "pydantic-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820"}, + {file = "pydantic-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3"}, + {file = "pydantic-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b"}, + {file = "pydantic-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3"}, + {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, + {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, +] +pyopenssl = [ + {file = "pyOpenSSL-20.0.1-py2.py3-none-any.whl", hash = "sha256:818ae18e06922c066f777a33f1fca45786d85edfe71cd043de6379337a7f274b"}, + {file = "pyOpenSSL-20.0.1.tar.gz", hash = "sha256:4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51"}, +] +pyparsing = [ + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +python-slugify = [ + {file = "python-slugify-6.1.1.tar.gz", hash = "sha256:00003397f4e31414e922ce567b3a4da28cf1436a53d332c9aeeb51c7d8c469fd"}, + {file = "python_slugify-6.1.1-py2.py3-none-any.whl", hash = "sha256:8c0016b2d74503eb64761821612d58fcfc729493634b1eb0575d8f5b4aa1fbcf"}, +] +pytz = [ + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, +] +qdldl = [ + {file = "qdldl-0.1.5.post0-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:787d59b4301608e96bdf32ab3a572d9f41b3ea08581774826720986e18da261e"}, + {file = "qdldl-0.1.5.post0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:223dd49f4aa625c727c3053e9f62814fab2f929e0575b34dd1f38e66b536a849"}, + {file = "qdldl-0.1.5.post0-cp35-cp35m-win_amd64.whl", hash = "sha256:cd0090d5512a8e386534a755f9ebd8be82087d401746cebbfb9f9faa21073c39"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3e5e2ee6b45dd655120ca8d6645331c800c494ce765bc0674714ba86e1ebec7d"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:a2ab0d4618d5516101fc0ce99c873df61a085c3d7cb4d8347d5eca818795e48f"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:ac7a2891628554de6260132fa090c5b00cf32ae083ece4991a43b887ec6f2114"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:817a226b2450e56c50f61a92b727c69f50a4d043876e5f1bcdff096c5a82bc37"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:c10f91dda6a422a6d879668fd293132c8939431fffe64abd9700dce170a3aec4"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:e70c57ea65d0bb09708bc9ecafd4fb4b797e64af4da475404e6bcf5a2cc92596"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64f531ef2a12cc77be85045cdffdb2fe339244c73fc07aebe49977541bfc7e79"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:cff34b89258a3c9b1b398f1c8eeb480a9c4ae2ba14c4ffc8c78cdb123dab11c6"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-win_amd64.whl", hash = "sha256:3a7ec584aaddff7036d22013c911132572f3d59c65ec6bf7e32beb01765accc4"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a7c086ae21a2b2e43b31ac6a5024c79dadf16e7c3152eda9e3263cefe1675e26"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:2c09f4b1a1c6f3a0579af004443417e084491e7c844ff9fb73170bb5d43f70b5"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-win_amd64.whl", hash = "sha256:640cab781f87c2f1c04ada65615b3d1d136d319c4595176f37e2e3c99149108f"}, + {file = "qdldl-0.1.5.post0.tar.gz", hash = "sha256:c392c7427651d8b226423c7aba4a0f2338a1f38a4bbdabac6bc4afd8bc934f06"}, +] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] +scikit-learn = [ + {file = "scikit-learn-1.0.2.tar.gz", hash = "sha256:b5870959a5484b614f26d31ca4c17524b1b0317522199dc985c3b4256e030767"}, + {file = "scikit_learn-1.0.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:da3c84694ff693b5b3194d8752ccf935a665b8b5edc33a283122f4273ca3e687"}, + {file = "scikit_learn-1.0.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:75307d9ea39236cad7eea87143155eea24d48f93f3a2f9389c817f7019f00705"}, + {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f14517e174bd7332f1cca2c959e704696a5e0ba246eb8763e6c24876d8710049"}, + {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9aac97e57c196206179f674f09bc6bffcd0284e2ba95b7fe0b402ac3f986023"}, + {file = "scikit_learn-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:d93d4c28370aea8a7cbf6015e8a669cd5d69f856cc2aa44e7a590fb805bb5583"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:85260fb430b795d806251dd3bb05e6f48cdc777ac31f2bcf2bc8bbed3270a8f5"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a053a6a527c87c5c4fa7bf1ab2556fa16d8345cf99b6c5a19030a4a7cd8fd2c0"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:245c9b5a67445f6f044411e16a93a554edc1efdcce94d3fc0bc6a4b9ac30b752"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158faf30684c92a78e12da19c73feff9641a928a8024b4fa5ec11d583f3d8a87"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08ef968f6b72033c16c479c966bf37ccd49b06ea91b765e1cc27afefe723920b"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16455ace947d8d9e5391435c2977178d0ff03a261571e67f627c8fee0f9d431a"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:2f3b453e0b149898577e301d27e098dfe1a36943f7bb0ad704d1e548efc3b448"}, + {file = "scikit_learn-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:46f431ec59dead665e1370314dbebc99ead05e1c0a9df42f22d6a0e00044820f"}, + {file = "scikit_learn-1.0.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:ff3fa8ea0e09e38677762afc6e14cad77b5e125b0ea70c9bba1992f02c93b028"}, + {file = "scikit_learn-1.0.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9369b030e155f8188743eb4893ac17a27f81d28a884af460870c7c072f114243"}, + {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7d6b2475f1c23a698b48515217eb26b45a6598c7b1840ba23b3c5acece658dbb"}, + {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:285db0352e635b9e3392b0b426bc48c3b485512d3b4ac3c7a44ec2a2ba061e66"}, + {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cb33fe1dc6f73dc19e67b264dbb5dde2a0539b986435fdd78ed978c14654830"}, + {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1391d1a6e2268485a63c3073111fe3ba6ec5145fc957481cfd0652be571226d"}, + {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc3744dabc56b50bec73624aeca02e0def06b03cb287de26836e730659c5d29c"}, + {file = "scikit_learn-1.0.2-cp38-cp38-win32.whl", hash = "sha256:a999c9f02ff9570c783069f1074f06fe7386ec65b84c983db5aeb8144356a355"}, + {file = "scikit_learn-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:7626a34eabbf370a638f32d1a3ad50526844ba58d63e3ab81ba91e2a7c6d037e"}, + {file = "scikit_learn-1.0.2-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:a90b60048f9ffdd962d2ad2fb16367a87ac34d76e02550968719eb7b5716fd10"}, + {file = "scikit_learn-1.0.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7a93c1292799620df90348800d5ac06f3794c1316ca247525fa31169f6d25855"}, + {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eabceab574f471de0b0eb3f2ecf2eee9f10b3106570481d007ed1c84ebf6d6a1"}, + {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:55f2f3a8414e14fbee03782f9fe16cca0f141d639d2b1c1a36779fa069e1db57"}, + {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80095a1e4b93bd33261ef03b9bc86d6db649f988ea4dbcf7110d0cded8d7213d"}, + {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa38a1b9b38ae1fad2863eff5e0d69608567453fdfc850c992e6e47eb764e846"}, + {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff746a69ff2ef25f62b36338c615dd15954ddc3ab8e73530237dd73235e76d62"}, + {file = "scikit_learn-1.0.2-cp39-cp39-win32.whl", hash = "sha256:e174242caecb11e4abf169342641778f68e1bfaba80cd18acd6bc84286b9a534"}, + {file = "scikit_learn-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b54a62c6e318ddbfa7d22c383466d38d2ee770ebdb5ddb668d56a099f6eaf75f"}, +] +scipy = [ + {file = "scipy-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced"}, + {file = "scipy-1.6.1-cp37-cp37m-win32.whl", hash = "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78"}, + {file = "scipy-1.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c"}, + {file = "scipy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d"}, + {file = "scipy-1.6.1-cp38-cp38-win32.whl", hash = "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4"}, + {file = "scipy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf"}, + {file = "scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07"}, + {file = "scipy-1.6.1-cp39-cp39-win32.whl", hash = "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4"}, + {file = "scipy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f"}, + {file = "scipy-1.6.1.tar.gz", hash = "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11"}, +] +scs = [ + {file = "scs-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:727d14eb509430c6f1524d97a7195d35241afde0514df2658d6d5adcf6db3342"}, + {file = "scs-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b559307b1ffcd72d1e8ecf6473c047834c546f65b1a90f560265dd5b24c36ba1"}, + {file = "scs-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:438514dea72896805f15f0f66596393217abb3072c2be53f894b176866f00be4"}, + {file = "scs-3.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1ec501ed06cc07bf291256c3ed0a5a02361ef655aee3e034a5cbc0acfc12c6e2"}, + {file = "scs-3.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f501e270b000ab61f8cde7793e8e44bec161cb7087944d8404bb3744b44ac932"}, + {file = "scs-3.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4532a19e05cd7f115aa724606d0e39a72bbee366f5952d8e90d58954979eeb49"}, + {file = "scs-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0db0c7f4bd58dd7393d75aeb937854067297e26a3714c413c072bbaed069de05"}, + {file = "scs-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc5241cbc1da00b38a2c24a6ea427ee9f771879b9d7e9f5a8ff48bb2e270cdfd"}, + {file = "scs-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a4c86eeadcb40350b74721d655fb9a8eb7e16ed2962fe4ae64473d0d47d276a1"}, + {file = "scs-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:390770e9af094f81f9c30ce11f119131e1db71f4663d28e1ec5c4fdbe9bf77b0"}, + {file = "scs-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab1c5fada8b19d5413b4cfad9ede834d4cfdd479cc77598d927003657177b3f2"}, + {file = "scs-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:9f8de9e078a1455dbb1995ce4494d9f88c5bf345f6e89c84714ebb89a7121593"}, + {file = "scs-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:76aa5b5d0b1baef4b675d1cde24da39b9bb7cbc6e05d437fd0c33071ca1de364"}, + {file = "scs-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fafefeec16d6d9117629b4776e54da5adb40200888fce9519e4b017931d2062a"}, + {file = "scs-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:f3153e032f22c86f4b3c0024b6dca517dd243c7e26c01ccdd7747198af44a9f8"}, + {file = "scs-3.2.0.tar.gz", hash = "sha256:6a180d86f61999db50b6a305872056b798740c87c4245006924dd654b6a998dd"}, +] +setproctitle = [ + {file = "setproctitle-1.2.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:9106bcbacae534b6f82955b176723f1b2ca6514518aab44dffec05a583f8dca8"}, + {file = "setproctitle-1.2.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:30bc7a769a4451639a0adcbc97bdf7a6e9ac0ef3ddad8d63eb1e338edb3ebeda"}, + {file = "setproctitle-1.2.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e8ef655eab26e83ec105ce79036bb87e5f2bf8ba2d6f48afdd9595ef7647fcf4"}, + {file = "setproctitle-1.2.2-cp36-cp36m-win32.whl", hash = "sha256:0df728d0d350e6b1ad8436cc7add052faebca6f4d03257182d427d86d4422065"}, + {file = "setproctitle-1.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:5260e8700c5793d48e79c5e607e8e552e795b698491a4b9bb9111eb74366a450"}, + {file = "setproctitle-1.2.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ba1fb32e7267330bd9f72e69e076777a877f1cb9be5beac5e62d1279e305f37f"}, + {file = "setproctitle-1.2.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e696c93d93c23f377ccd2d72e38908d3dbfc90e45561602b805f53f2627d42ea"}, + {file = "setproctitle-1.2.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:fbf914179dc4540ee6bfd8228b4cc1f1f6fb12dad66b72b5c9b955b222403220"}, + {file = "setproctitle-1.2.2-cp37-cp37m-win32.whl", hash = "sha256:28b884e1cb9a53974e15838864283f9bad774b5c7db98c9609416bd123cb9fd1"}, + {file = "setproctitle-1.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a11d329f33221443317e2aeaee9442f22fcae25be3aa4fb8489e4f7b1f65cdd2"}, + {file = "setproctitle-1.2.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e13a5c1d9c369cb11cdfc4b75be432b83eb3205c95a69006008ffd4366f87b9e"}, + {file = "setproctitle-1.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c611f65bc9de5391a1514de556f71101e6531bb0715d240efd3e9732626d5c9e"}, + {file = "setproctitle-1.2.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:bc4393576ed3ac87ddac7d1bd0faaa2fab24840a025cc5f3c21d14cf0c9c8a12"}, + {file = "setproctitle-1.2.2-cp38-cp38-win32.whl", hash = "sha256:17598f38be9ef499d74f2380bf76b558be72e87da75d66b153350e586649171b"}, + {file = "setproctitle-1.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:0d160d46c8f3567e0aa27b26b1f36e03122e3de475aacacc14a92b8fe45b648a"}, + {file = "setproctitle-1.2.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:077943272d0490b3f43d17379432d5e49c263f608fdf4cf624b419db762ca72b"}, + {file = "setproctitle-1.2.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:970798d948f0c90a3eb0f8750f08cb215b89dcbee1b55ffb353ad62d9361daeb"}, + {file = "setproctitle-1.2.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:3f6136966c81daaf5b4b010613fe33240a045a4036132ef040b623e35772d998"}, + {file = "setproctitle-1.2.2-cp39-cp39-win32.whl", hash = "sha256:249526a06f16d493a2cb632abc1b1fdfaaa05776339a50dd9f27c941f6ff1383"}, + {file = "setproctitle-1.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:4fc5bebd34f451dc87d2772ae6093adea1ea1dc29afc24641b250140decd23bb"}, + {file = "setproctitle-1.2.2.tar.gz", hash = "sha256:7dfb472c8852403d34007e01d6e3c68c57eb66433fb8a5c77b13b89a160d97df"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +sklearn = [ + {file = "sklearn-0.0.tar.gz", hash = "sha256:e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31"}, +] +starlette = [ + {file = "starlette-0.14.2-py3-none-any.whl", hash = "sha256:3c8e48e52736b3161e34c9f0e8153b4f32ec5d8995a3ee1d59410d92f75162ed"}, + {file = "starlette-0.14.2.tar.gz", hash = "sha256:7d49f4a27f8742262ef1470608c59ddbc66baf37c148e938c7038e6bc7a998aa"}, +] +"stomp.py" = [ + {file = "stomp.py-8.0.0-py3-none-any.whl", hash = "sha256:7e4d8d864ecd608f306d238ba951bd76e30bbfb2a4ba0b804b0333de6d75dfc4"}, + {file = "stomp.py-8.0.0.tar.gz", hash = "sha256:7085935293bfcc4a112a9830513275b2e0f3b040c5aad5ff8907e78f285b8b57"}, +] +text-unidecode = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] +threadpoolctl = [ + {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"}, + {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"}, +] +typing-extensions = [ + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, +] +urllib3 = [ + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, +] +uvicorn = [ + {file = "uvicorn-0.15.0-py3-none-any.whl", hash = "sha256:17f898c64c71a2640514d4089da2689e5db1ce5d4086c2d53699bf99513421c1"}, + {file = "uvicorn-0.15.0.tar.gz", hash = "sha256:d9a3c0dd1ca86728d3e235182683b4cf94cd53a867c288eaeca80ee781b2caff"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] diff --git a/deployment/ensembler/pyproject.toml b/deployment/ensembler/pyproject.toml new file mode 100644 index 00000000..4c8f7ed1 --- /dev/null +++ b/deployment/ensembler/pyproject.toml @@ -0,0 +1,28 @@ +[tool.poetry] +name = "ensembler" +version = "0.1.0" +description = "" +authors = ["Anna Warno "] + +[tool.poetry.dependencies] +python = "^3.8" +"stomp.py" = "^8.0.0" +wheel = "^0.37.1" +sklearn = "^0.0" +pandas = "1.1.3" +pydantic = "1.8.2" +uvicorn = "0.15.0" +fastapi = "0.68.1" +cvxpy = "1.1.15" +filelock = "3.0.12" +influxdb = "^5.3.1" +python-slugify = "^6.1.1" +setproctitle = "^1.2.2" + +[tool.poetry.dev-dependencies] +pytest = "^5.2" +isort = "^5.10.1" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/deployment/ensembler/requirements.txt b/deployment/ensembler/requirements.txt deleted file mode 100644 index 374c0e16..00000000 --- a/deployment/ensembler/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -stomp.py -wheel -sklearn -pandas==1.1.3 -pydantic==1.8.2 -uvicorn==0.15.0 -fastapi==0.68.1 -cvxpy==1.1.15 -filelock==3.0.12 -influxdb -python-slugify -setproctitle diff --git a/deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc b/deployment/ensembler/src/dataset/__pycache__/data.cpython-37.pyc deleted file mode 100644 index 47c850e10146e02fd82aa27a2c0ea5cf907c981c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmZuv!EO^V5VgIV&34;VfB#l3{D7~V_ytbPc$1J;9m(Svk3DbR+kH0}WCZNji=R?3LVjbiu?T{rK58K}-qa$m|Bdl8O!akZ``BaDsfQ7(IHUURiLJ#Tk z>5hn}XQR!v5`K+fxNjLggXBJjYi`G%=Thl4xgjs7vboUk5r#qNj+Eth8IJSV;4f)< z=x{XC2bVLmhjA$3)PbKlfXF9ZuZIxZ7#wn0KEBPQyE4wH!SVA1CBV-ogwKSSwQ5mg zd?3V^g{;?=z7VP{g)jqnV-C^%hYk_q8x#cx4ML_-%(5h$<&k-W^*{nI-S^t3uRHWN L6kFi@F-xO=a=PSD diff --git a/deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc b/deployment/ensembler/src/mocking/__pycache__/helpers.cpython-37.pyc deleted file mode 100644 index 040db5f0831c309e121a475e1d69ef8157146615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1549 zcmZWp-ESL35Z}E!+ZV@n0!`CEQ{)GPWP#(vDfy@(XlcZknh@F`q(kU9->mIT?yI}& zG&ar?{U@mMkUa9v3vWm~^AGGRFN8mVr_NrIVwFAZ%G3zl)%mT6qI55 z)b(7bKox2*b85pZN^cmcXTh6r1Lk@*+&s0ssoZ1!HP15KLf-{=3oLjWZl4ytX;_3i z&xuz7>j`PRGy3vLD0rso&$#N>`z*?sko9gV>WWFllU|)AlEs|})gRR3G(0rA2chCe zZ0GBG%%lu@OxBqSmoD(GWH&VQdRQpj$0-+(FoO3do&^-|Z-I?jIN)Fw1#R!h-ssj2 zhG+1<=%J0yW*BbfL!5FRi6UooOwZ|<_}17$Y6HP|bhqJX=Rl^3F2Eqpq;@(f40Wl` z0>FzjZ0$%EbwvSV2z)#83lT1|fA?GcG-j>fSs;?Mwe!{Ez0du2yA`J*>$8}L%}lUN zq#<5A6)j*{ln!H-sMf10;oiJPt*crtWkc=yK2NyveFGTjAR)9uM-{yE(zR(9tAP8G zAZEU=%f26{Fo=v?@%^WRAiA=Yd>_)#_l1d-Cp|$7?1ZU#31@zgOC2lMXu7P)XuhS= zjE60$0-^j@No(33-Th+wUS|+Rvbo>q$>ClA&HcL@%gxozwdKv`%G&DYdV76i^TYP~ zW^?V{O8%{R)!eYUvA((1UR`OpUWpxNTrfGRg{crM3KUP1CI>wYIiT{juE;@0=DO#bh zSfnf2pc8S~_eG!>I`QPniSPYEh_+Q%>0;7hfs(q=iw0@ZuypA%hQwegut<((t}1n1 zBd_$}hzZ0xzxn5PrHd+_fAJ%dMlnCXpMo$L7Y3GM(U9AQ+(8mjBxabT4dinCK1RXd z_ne&2+LZ;D4ye=@D1f z*mrjM-*`^%#m{E^_OYhJMoC*4R&qN~!KVTNrmZB?MG+*B#-3xicH%%D>VoVC8Ee=c zK3+746X|z3i$HoMgK8hTx_D`L4RiWNZpY>Tj=zQ!9ih8{7nBtwgu1j$=jZ~RrQ&^D zH>#qBOqhD;Vut4jQoL&xg#_DmDBjBrY3G22Do3w3`wFrCWfOa~|1_q#y)wSkwaqoM x(dNfZBx{;nm@d)o)@6fzWFALuA#pHG{Os8&i%x#7Q>GQGR+!XT)SXzn&PzkbpuGS9 diff --git a/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb b/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb deleted file mode 100644 index 95fa26ea..00000000 --- a/deployment/ensembler/src/models/.ipynb_checkpoints/test-checkpoint.ipynb +++ /dev/null @@ -1,948 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "5af44adc", - "metadata": {}, - "outputs": [], - "source": [ - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding\n", - "\n", - "\n", - "\"\"\"Script for deep learning networks \"\"\"\n", - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "\n", - "import pandas as pd\n", - "import numpy as np\n", - "import os\n", - "import matplotlib.pyplot as plt\n", - "import random\n", - "\n", - "# PyTorch\n", - "import torch.utils.data as data\n", - "import torch\n", - "import re" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "523d7c32", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nametimearima_left_confarima_probabilityarima_right_confarima_valuecnn_left_confcnn_probabilitycnn_right_confcnn_valueensembled_left_confensembled_probabilityensembled_right_confensembled_valueprophet_left_confprophet_probabilityprophet_right_confprophet_valueyseries_id
0MinimumCoresPredictions1640789523000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.4472720.8121.613427-21.27583210
1MinimumCoresPredictions1640789561000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-150.4075260.8114.049350-21.38388410
2MinimumCoresPredictions1640789566000000000-161.8963560.95157.730807-2.082775NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN10
3MinimumCoresPredictions1640789599000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.9194030.8114.000617-21.49079310
4MinimumCoresPredictions1640789636000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-154.5533040.8117.114690-21.59655110
...............................................................
90MinimumCoresPredictions1640791237000000000NaNNaNNaNNaNNaNNaNNaNNaN205.8764070.87520369.94575810361.245179NaNNaNNaNNaN11
91MinimumCoresPredictions1640791238000000000NaNNaNNaNNaNNaNNaNNaNNaN-132.0265690.85020369.9457586906.530299NaNNaNNaNNaN11
92MinimumCoresPredictions1640791248000000000-419.0251750.95-81.507635-250.266405NaNNaNNaNNaN-193.4603270.87521115.18637010543.742149NaNNaNNaNNaN11
93MinimumCoresPredictions1640791268000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-129.1687690.8129.302014-2.99466811
94MinimumCoresPredictions1640791270000000000NaNNaNNaNNaNNaNNaNNaNNaN-193.4603270.85021115.1863707028.163210NaNNaNNaNNaN10001
\n", - "

95 rows × 20 columns

\n", - "
" - ], - "text/plain": [ - " name time arima_left_conf \\\n", - "0 MinimumCoresPredictions 1640789523000000000 NaN \n", - "1 MinimumCoresPredictions 1640789561000000000 NaN \n", - "2 MinimumCoresPredictions 1640789566000000000 -161.896356 \n", - "3 MinimumCoresPredictions 1640789599000000000 NaN \n", - "4 MinimumCoresPredictions 1640789636000000000 NaN \n", - ".. ... ... ... \n", - "90 MinimumCoresPredictions 1640791237000000000 NaN \n", - "91 MinimumCoresPredictions 1640791238000000000 NaN \n", - "92 MinimumCoresPredictions 1640791248000000000 -419.025175 \n", - "93 MinimumCoresPredictions 1640791268000000000 NaN \n", - "94 MinimumCoresPredictions 1640791270000000000 NaN \n", - "\n", - " arima_probability arima_right_conf arima_value cnn_left_conf \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 0.95 157.730807 -2.082775 NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN NaN \n", - "91 NaN NaN NaN NaN \n", - "92 0.95 -81.507635 -250.266405 NaN \n", - "93 NaN NaN NaN NaN \n", - "94 NaN NaN NaN NaN \n", - "\n", - " cnn_probability cnn_right_conf cnn_value ensembled_left_conf \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN 205.876407 \n", - "91 NaN NaN NaN -132.026569 \n", - "92 NaN NaN NaN -193.460327 \n", - "93 NaN NaN NaN NaN \n", - "94 NaN NaN NaN -193.460327 \n", - "\n", - " ensembled_probability ensembled_right_conf ensembled_value \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", - ".. ... ... ... \n", - "90 0.875 20369.945758 10361.245179 \n", - "91 0.850 20369.945758 6906.530299 \n", - "92 0.875 21115.186370 10543.742149 \n", - "93 NaN NaN NaN \n", - "94 0.850 21115.186370 7028.163210 \n", - "\n", - " prophet_left_conf prophet_probability prophet_right_conf prophet_value \\\n", - "0 -158.447272 0.8 121.613427 -21.275832 \n", - "1 -150.407526 0.8 114.049350 -21.383884 \n", - "2 NaN NaN NaN NaN \n", - "3 -158.919403 0.8 114.000617 -21.490793 \n", - "4 -154.553304 0.8 117.114690 -21.596551 \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN NaN \n", - "91 NaN NaN NaN NaN \n", - "92 NaN NaN NaN NaN \n", - "93 -129.168769 0.8 129.302014 -2.994668 \n", - "94 NaN NaN NaN NaN \n", - "\n", - " y series_id \n", - "0 1 0 \n", - "1 1 0 \n", - "2 1 0 \n", - "3 1 0 \n", - "4 1 0 \n", - ".. ... ... \n", - "90 1 1 \n", - "91 1 1 \n", - "92 1 1 \n", - "93 1 1 \n", - "94 1000 1 \n", - "\n", - "[95 rows x 20 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv('new.csv')\n", - "df['y'] = [1 for _ in range(df.shape[0] - 1)] + [1000]\n", - "df['series_id'] = list([0 for _ in range(20)]) + list([1 for _ in range(df.shape[0] - 20)])\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "e27f8c06", - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"Script for pythorch dataset class\"\"\"\n", - "import torch.utils.data as data\n", - "import torch\n", - "import re\n", - "import random\n", - "import numpy as np\n", - "\n", - "\n", - "class DatasetHistMask(torch.utils.data.Dataset):\n", - " \"\"\"Defines a dataset for PyTorch, dataset\n", - " networks_prediction_df - data frame with predictions and target\n", - " models_list - list with present forecasters\n", - " max_pred_len - maximum value for prediction steps\n", - " series_len - ensemble series len (historical values len + curent prediction length)\n", - " target_column - target column name in networks_prediction_df\n", - " start_idx - start from this indices networks_prediction_df rows will be chosen\n", - " last_idx - networks_prediction_df rows will be chosen to this index (might be None)\n", - " nan_fill_value - value for filling missing data e.g target value mean\n", - " \"\"\"\n", - "\n", - " def __init__(\n", - " self,\n", - " networks_prediction_df,\n", - " models_list=[\"arima\", \"cnn\"],\n", - " max_pred_len=5,\n", - " series_len=16,\n", - " target_column=\"y\",\n", - " start_idx=0,\n", - " last_idx=None,\n", - " nan_fill_value=100,\n", - " ):\n", - " \"Initialization\"\n", - " self.df = networks_prediction_df\n", - " self.get_rows(last_idx, start_idx)\n", - " self.models_list = models_list\n", - " assert len(self.models_list) > 1, \"There must be more than one forecaster!\"\n", - " self.x_columns = self.get_x_col_names()\n", - " self.series_lengths = self.get_series_lengths()\n", - " self.valid_indices = self.get_valid_indices()\n", - " self.df = self.df[self.x_columns + [target_column, \"series_id\"]]\n", - " self.target_column = target_column\n", - " self.max_pred_len = max_pred_len\n", - " self.series_len = series_len\n", - " self.nan_fill_value = nan_fill_value\n", - "\n", - " def get_x_col_names(self):\n", - " \"\"\"Get forecasters predictions columns names\"\"\"\n", - " predictions_col_pattern = \"\".join(\n", - " [f\"^{model}_value|\" for model in self.models_list]\n", - " )[:-1]\n", - " return [\n", - " col for col in self.df.columns if re.match(predictions_col_pattern, col)\n", - " ]\n", - "\n", - " def get_series_lengths(self):\n", - " \"\"\"Get whole series lenghths using series_id column\"\"\"\n", - " return self.df[\"series_id\"].value_counts().sort_values(\"index\").cumsum()\n", - "\n", - " def get_valid_indices(self):\n", - " \"\"\"Get valid inidices for series starts according to series_id column\"\"\"\n", - " indices = [\n", - " i\n", - " for i in range(self.df.shape[0])\n", - " if self.series_lengths.loc[self.df.iloc[i][\"series_id\"]] - i >= 15\n", - " ]\n", - " return indices\n", - "\n", - " def get_rows(self, last_idx, start_idx):\n", - " \"\"\"Get rows according to last_idx, start_idx\"\"\"\n", - " if last_idx:\n", - " self.df = self.df.iloc[start_idx:last_idx]\n", - " else:\n", - " self.df = self.df.iloc[start_idx:]\n", - "\n", - " def __len__(self):\n", - " \"Denotes the total number of samples\"\n", - " return len(self.valid_indices)\n", - "\n", - " def get_one_series_df_part(self, idx):\n", - " \"\"\"Get single series (consecutive rows from\n", - " data frame of length: series_len)\"\"\"\n", - " return self.df.iloc[idx : idx + self.series_len].reset_index()\n", - "\n", - " def get_target_value(self, df):\n", - " \"\"\"Get target value, single y true value which\n", - " we want to approximate with ensembling\"\"\"\n", - " return df[self.target_column].values[-1]\n", - "\n", - " def replace_future_values(self, col, hist_len):\n", - " \"\"\"Replace values connected with target from future\"\"\"\n", - " col.iloc[hist_len:] = self.nan_fill_value\n", - " return col\n", - "\n", - " def add_columns(self, x, hist_len):\n", - " \"\"\"Add extra columns: time_idx, nans masks, is_past\"\"\"\n", - " for col in self.x_columns:\n", - " x[f\"{col}_res\"] = x[col] - x[self.target_column]\n", - " x[f\"{col}_res\"] = self.replace_future_values(x[f\"{col}_res\"], hist_len)\n", - " x[\"time_idx\"] = range(self.series_len)\n", - " x[\"is_past\"] = [1 for _ in range(hist_len)] + [\n", - " 0 for _ in range(self.series_len - hist_len)\n", - " ]\n", - " for col in self.x_columns:\n", - " x[f\"{col}_mask\"] = x[col].notna().astype(int)\n", - " return x\n", - "\n", - " def get_predictions_to_ensemble(self, x):\n", - " \"\"\"Get forcasters values which will be ensembled\"\"\"\n", - " return (\n", - " x[self.x_columns + [f\"{col}_mask\" for col in self.x_columns]].tail(1).copy()\n", - " )\n", - "\n", - " @staticmethod\n", - " def to_tensors(x, preds, y):\n", - " \"\"\"Convert network input to tensor\"\"\"\n", - " return (\n", - " torch.tensor(x.to_numpy().astype(np.float32)),\n", - " torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(),\n", - " torch.tensor(y),\n", - " )\n", - "\n", - " def get_one_series(self, idx, hist_len=10):\n", - " \"\"\"Get single input example\"\"\"\n", - " x = self.get_one_series_df_part(idx)\n", - " target = self.get_target_value(x)\n", - " x[self.target_column] = self.replace_future_values(\n", - " x[self.target_column], hist_len\n", - " )\n", - " x = self.add_columns(x, hist_len)\n", - " predictions_to_ensemble = self.get_predictions_to_ensemble(x)\n", - " x = x.fillna(self.nan_fill_value)\n", - " return (x, predictions_to_ensemble, target)\n", - "\n", - " def __getitem__(self, idx, rand_hist_len=True):\n", - " \"\"\"Get item, optionaly rand histry length\"\"\"\n", - " idx = self.valid_indices[idx]\n", - " if rand_hist_len:\n", - " hist_len = random.randint(\n", - " self.series_len - self.max_pred_len, self.series_len - 1\n", - " )\n", - " else:\n", - " hist_len = (\n", - " self.series_len\n", - " - self.get_one_series_df_part(idx)[self.target_column]\n", - " .iloc[::-1]\n", - " .last_valid_index()\n", - " )\n", - " x, predictions_to_ensemble, target = self.get_one_series(idx, hist_len=hist_len)\n", - " return self.to_tensors(x, predictions_to_ensemble, target)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "id": "52ea0d4c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "67" - ] - }, - "execution_count": 103, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = DatasetHistMask(df)\n", - "len(d)" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "ccdf0833", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(tensor([[ 5.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 0.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 6.0000, 92.3064, 100.0000, 1.0000, 0.0000, 91.3064,\n", - " 100.0000, 1.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 7.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 2.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 8.0000, 149.9781, 100.0000, 1.0000, 0.0000, 148.9781,\n", - " 100.0000, 3.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 9.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 4.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 10.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 5.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 11.0000, 317.8232, 100.0000, 1.0000, 0.0000, 316.8232,\n", - " 100.0000, 6.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 12.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 7.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 13.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 8.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 14.0000, 477.4886, 100.0000, 1.0000, 0.0000, 476.4886,\n", - " 100.0000, 9.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 15.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 10.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 16.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 11.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 17.0000, 468.1973, 100.0000, 1.0000, 0.0000, 467.1973,\n", - " 100.0000, 12.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 18.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 13.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 19.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 14.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 20.0000, -221.9459, 100.0000, 1.0000, 1.0000, -222.9459,\n", - " 100.0000, 15.0000, 1.0000, 1.0000, 0.0000]]),\n", - " tensor([-221.9459, 0.0000, 1.0000, 0.0000]),\n", - " tensor(1))" - ] - }, - "execution_count": 104, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d.__getitem__(19, rand_hist_len=False)\n", - "x = d.__getitem__(5, rand_hist_len=False)\n", - "x" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "id": "c64676ce", - "metadata": {}, - "outputs": [], - "source": [ - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding, base_conv1_layer, attention_module" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "id": "fde0de4c", - "metadata": {}, - "outputs": [], - "source": [ - "def calculate_output_shape(i, p, k, d, s):\n", - " o = (i + 2 * p - k - (k - 1) * (d - 1)) / s + 1\n", - " return int(o)\n", - "\n", - "\n", - "class EnsemblerRegressorModel(nn.Module):\n", - " def __init__(\n", - " self,\n", - " forecasters_num=2,\n", - " n_inputs=[11, 16, 32],\n", - " n_outputs=[16, 32, 64],\n", - " kernel_size=[5, 4, 4],\n", - " stride=[1, 1, 2],\n", - " padding=[1, 2, 1],\n", - " dilation=[1, 2, 1],\n", - " series_len=16,\n", - " with_att=True\n", - " ):\n", - " super().__init__()\n", - " self.forecasters_num = forecasters_num\n", - " self.n_layers = len(dilation)\n", - " self.with_att = with_att\n", - " self.series_len = series_len\n", - " self.cnn_layers = nn.ModuleList(self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, padding, dilation))\n", - " self.att_layers = attention_module(embed_dim=n_outputs[-1])\n", - " self.activation_layers = nn.GELU()\n", - " w = series_len\n", - " for p, k, d, s in zip(padding, kernel_size, dilation, stride):\n", - " w = calculate_output_shape(w, p, k, d, s)\n", - " self.last_layer = nn.Linear(int(series_len * n_outputs[-1]), self.forecasters_num)\n", - "\n", - " \n", - " def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, padding, dilation):\n", - " return [\n", - " base_conv1_layer(in_f, out_f, k, stride=s, padding=calculate_matching_padding(self.series_len, self.series_len, k, d, s), dilation=d)\n", - " for in_f, out_f, k, s, p, d in zip(\n", - " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", - " )\n", - " ]\n", - " \n", - "\n", - " def forward(self, batch):\n", - " x, preds_to_ensemble = batch\n", - " for i in range(self.n_layers):\n", - " x = x.permute(0, 2, 1)\n", - " x = self.cnn_layers[i](x)\n", - " x = x.permute(0, 2, 1)\n", - " if i == self.n_layers - 1:\n", - " if self.with_att:\n", - " x, _ = self.att_layers(x, x, x)\n", - " x = self.activation_layers(x)\n", - "\n", - " x = torch.flatten(x, start_dim=1)\n", - " x = self.last_layer(x)\n", - " mask = preds_to_ensemble[:,self.forecasters_num:]\n", - " preds = preds_to_ensemble[:, :self.forecasters_num]\n", - " x = masked_softmax(x, mask)\n", - " print(x)\n", - " return torch.sum(preds * x, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "id": "249bebd1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([[-221.9459, 0.0000, 1.0000, 0.0000],\n", - " [-221.9459, 0.0000, 1.0000, 0.0000]])" - ] - }, - "execution_count": 107, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x1 = torch.stack([x[0], x[0]])\n", - "x2 = torch.stack([x[1], x[1]]).squeeze()\n", - "x2" - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "id": "2ad0a196", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[1.0000, 0.0000],\n", - " [1.0000, 0.0000]], grad_fn=)\n" - ] - }, - { - "data": { - "text/plain": [ - "tensor([-221.9436, -221.9435], grad_fn=)" - ] - }, - "execution_count": 108, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n = EnsemblerRegressorModel()\n", - "n((x1, x2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f60479d8", - "metadata": {}, - "outputs": [], - "source": [ - "def create_cnn_config():\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "122558e5", - "metadata": {}, - "outputs": [], - "source": [ - "class BaseCNNNetworkMask(nn.Module):\n", - " \"\"\"Dense CNN 1D network with softmax at the end\"\"\"\n", - " def __init__(self, num_feat=6, hist_len=15, pred_len=1, extra_feat=3):\n", - " super(BaseCNNNetworkMask, self).__init__()\n", - " self.extra_feat = extra_feat\n", - " self.num_feat = num_feat\n", - " self.hist_len = hist_len\n", - " self.pred_len = pred_len\n", - " n_inputs = [\n", - " self.num_feat,\n", - " 16,\n", - " ]\n", - " n_outputs = [16, 32]\n", - " kernel_size = [4, 4]\n", - " stride = [1, 1]\n", - " padding = [1, 2]\n", - " dilation = [1, 2]\n", - " self.n_layers = len(dilation)\n", - " layers = [\n", - " base_conv1_layer(in_f, out_f, k, stride=s, padding=p, dilation=d)\n", - " for in_f, out_f, k, s, p, d in zip(\n", - " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", - " )\n", - " ]\n", - " self.cnn_layers = nn.ModuleList(layers)\n", - " self.att_layers = nn.ModuleList(\n", - " [[attention_module(embed_dim=e_dim) for e_dim in n_outputs][-1]]\n", - " )\n", - " self.activation_layers = nn.ModuleList(\n", - " [nn.GELU() for _ in range(self.n_layers)]\n", - " )\n", - " self.last_layer = nn.Sequential(\n", - " nn.Linear(297, 128),\n", - " nn.BatchNorm1d(num_features=128),\n", - " nn.Linear(128, int((num_feat - self.extra_feat) // 2)),\n", - " )\n", - "\n", - " def forward(self, x):\n", - " org_x = x[\n", - " :,\n", - " self.hist_len :,\n", - " : -self.extra_feat - int((self.num_feat - self.extra_feat) // 2),\n", - " ]\n", - " mask = x[\n", - " :,\n", - " 0,\n", - " self.num_feat - int((self.num_feat - self.extra_feat) // 2) :,\n", - " ]\n", - " for i in range(self.n_layers):\n", - " x = x.permute(0, 2, 1)\n", - " x = self.cnn_layers[i](x)\n", - " x = x.permute(0, 2, 1)\n", - " if i >= self.n_layers:\n", - " x, _ = self.att_layers[0](x, x, x)\n", - " x = self.activation_layers[i](x)\n", - "\n", - " x = torch.flatten(x, start_dim=1)\n", - " x = torch.cat([x, org_x.squeeze(1)], 1)\n", - " x = self.last_layer(x)\n", - " x = masked_softmax(x, mask)\n", - " return torch.sum(org_x * x[:, None], 2)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cbf674cc", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.9" - }, - "latex_envs": { - "LaTeX_envs_menu_present": true, - "autoclose": false, - "autocomplete": true, - "bibliofile": "biblio.bib", - "cite_by": "apalike", - "current_citInitial": 1, - "eqLabelWithNumbers": true, - "eqNumInitial": 1, - "hotkeys": { - "equation": "Ctrl-E", - "itemize": "Ctrl-I" - }, - "labels_anchors": false, - "latex_user_defs": false, - "report_style_numbering": false, - "user_envs_cfg": false - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc b/deployment/ensembler/src/models/__pycache__/dl_dataset.cpython-37.pyc deleted file mode 100644 index fb4b5450357caa6da55127bae1c67905f2a50cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6410 zcmb7ITXWmS8N~wNMHD5=j%-VIE^v}MrsK$NlHO9)xj9YKi<-usNy}-1L9n0*nFQzs z7)u_6xq=?h-_q`#1t_M8PkimZ|}k@whbTYssvE4r?>tGceW z>u(#Lo$y_&qO4 zj$`yGQbxod=kD;#1Re2uug1jIvqHf4FxsG~KUXqtlH|68<3DisSN%<7&<=~8T zR@PS6RXAaT42 ztK|RPy?bQ;M%meL@QZ@a?mz`H^wThoT-kA6(1VDt?$iyuF_D zQQ-L97~;}P0+{8B|Nl%UjVGH1yUw+KxZO>;@KziJIj@lyxgBih=CXd_gv{9;M%zw5 zOcK^K5+~T$F6EKW=m%a-VY}j~uJPao~b&fQ~6_kr(tmihzHp-wxC~tz9c)xZ&RcLq)E0s_kNaRppH?Nu6f_M{cN96c9#<|Eyl(R$auGe;DdAsxK~W z+)R{zGndOv*>em3yD`|y>MnQ)Q`hC9$r=iySrtuD6&FN9|1Y4;|7dN_(`}SfeJYPX z)`XdbCwUo#6o&?V_5lGR?!cEG33~5O%yr|B#-~O{z>ix800sjGzXKe#QR{64hpE1k z6P_a}`~oamtIn8g4!3L24(@VuGO~?LKUmpE@ED7~ft1g!znTw-KJyFl;i#6I;8=^O zWoG8at*oL&qaV+yiW0M}$kNbn$-{#ufsA`N}nit0$sx~%zF+5>%8;x@Q*71Mv zn<2T1)gI%r+)IRRIX~Qoq|Wm4iu{1thmbc5&)o6AkWx zm%`;oQ&!Z|7*4$uJhbf0-igB~hZUVfR?FRP(h`a?%r_P4IkrimT1K&fC#j<_Ok122 zb#wI8*9c?6G9f~EXivl)=sl!Z2g66kp()KHacCVui7jh%i!gZDjc1|^TxvIQhT26I zh7`&I6pA!u6&Pi(+p?8rsHy!XIqq`V6E@r(Xukk z(bK1~I5lN@iV2s5$ixsRbPaW6RtNRe_zb471EW|6+zI)8F(&No(HrDfI}(JgFppcz z8}d!^(1zIW`>~RY5C}K(5}2WY)}Wzv3k?meYx{uJ4)#Y0gBwHc68;(_ezIEOgG;Dt*lHTi;qwnk18vN(8e-KNUHMune8Q7I))S}_@?+Qp z;kqLbECqcS0-6z>EBoZ6Pg0>~?#FbBF{8B7N#Dp-%FJa8+z_tnCW@Ao+ukL1th1mS zKLJgq^LOy%jKKz1&HwezbVuBK0tuQPfvHW8OQhN>Yo9Ad&)f;3I7OzEb`f;r6ggZp z?0*y}C+;|j*B|tP1VlD5PZ3lzD%bQ;=2^{Ug6O(G!%Jy77w2VOjA5p%f2@fUO&Pf^ zBnrbo3n>Li?a1~Yl?`ATU! zcx@HVLQ7vq)@)G)IH54U!<7_Bv!JLsRb&?^W~3)&&LBJP0NLm-!9>o!HM%;_{^?U@ zq%qMGy^xjyjC2QS**aaLIcie|MWU>|8L*T~WY0+zvUuGI=NbCli5MQ@B;g?shu`o9 z0~I6d_tN5YQRMSjLp_5n!LrURs(KwNUYnJM=qwns6|z(0J9_lJ6TCa8@qTjfjI~WL zz`coqv7oKdt~SxuoZosc81y{9;E?G+6a{`7$o!O4$V49iI>QtP51JOUp&8SE);wpY&Y7^sd2~Y>;{QZr_orm=j`6{3`|!hK zL<6m6D0q!6OJ^)(8&Prkj#1{(iT6$8LH&J0XYKYQn2W@W{4|a}WZf|ZDWcdN-?v{J&zqGk(X5=w!J}+Sz(mIJLyO#cGW8!M)1ywAX_}a;)nR2 zF!&i}Q#>x770Y5pJc+g=Mwh=rG&3G(VvEmW9Suz+2uNT6NW%7!;6d+DNDB#@sS`GP z^a8ySGM3`5p}YjpUTAX4E^iLxjMTZEMgh+?8U@SDi-11kb8~`)AK~MS>`xJeMni;w zB^q9xXPFM`WUidXZb{T>=+Fp6OxEXXJN3d|X8ZAAuXKv9mqbnVpI!cnJ?@vZ8P@3e zZ$R6`m(XG+zT`!`@VG!f0lT$Qd#7@QW0vj{JJq=!1cjVnu%}+drkNQHvRbDXd+AFrs_&x*GNLTn6$&>| zOh4yg+Q1U|YRLn9&J!4W6^Dq?rFl_IhaNLqnXpgRC+Pe&UcfpKdL-b$CMTRhuy71i9)fyxD`>2{6tJZ<(N)<{Bfcp`E5- z@}$lzu!*`UMo-R*a(3dqi74q?sU{tj6dE*co(f=lrn;WOv?)S7Hlh+*66XYpF1nic zA66)Mw5v!@YB=iST=NM;epo+39HWSL78pgO{b%#H*1o-8+2t+qt#l^(1$9B_o9}GPJOMgMO zEo0wx)f1#>nFXV$qVrcY8uc=ZIiyZO+QijS8v6YJ7xPj}A(zKJ&YCi)TRN^WU^59! zuA`_o>+6qjbWy>lHk5SQ-jeL6PAiA~JM5t`h@@x!KN0@%y|GmgW=p?L*2=aZh_*>}1_(%G@+ zT#^yXHpm7cWw+u!cS%uJWS`0b}(lOKIT zUg6?$xS)IrpZXRABSXR{b8=cZLx)aucj$u6&Aq}O`e5^z|AGty_9kny&I>whu`cU@ zrOg&tpUr@!!)~)#HV0aly}{;Tug9Dn65Tm@u(K(%N{6FThK%zn%y}Y3CicQH&nqrf zII2^T>Z}y%0vsaS5jDLdp6!iwEJ|6V4q9R0+=6ctK6MX-CNC*`PD2`c?ttc=gKghy zD5Gce+=cfYysa4N2%Qd3m!z>!t^012vbAO>8aNMG%uZVvOrG##@}}v z2UCCMH0~lf4H~}*mI;97Za)LmS_hCVmKBj_d|k?PY+U}lGX5wp6Kz~o7g5W&hdec2 zk*EXX!dcVemCEu`3_UojhCSTjEWWmYe<};%L?BVkt?5Bkj&zYcp8=a{gCMj^`*fbl zMbJ}VvK;})YawFBmq_C+5DW=4;O`QIxkwrUD`$}~XBmRlr18I}HbmKnOD>R85UZOB z9R-GFhL(mN7|IM)hE_M-yqhL@TIY%8ae)K@8pl<_7|aWB(= zD3NOdrDevrX-%CnZI*$zP+K-!o7PNJd6M$Tmk6OmOii!}7q2nX`2uf4+8Yn+05EBb z82(XfWjZ2;0nJ<1PIU~yc@?5w3SIv!iE--2z0U=hayCOfZx zfzze(0oX6luN29R17`%#f;SHe00(q#Y^P%GnFrbQPHyk;d=w^HV@a1HoYc%79Eb7y zC(nSy9Vj}WBC@oD4Pnd^rc8^;vVyQoZx<69k20xr=Ur5{Q5d2F+Ur_CkSPVeiRTPi!VaHBKrX z-d9{^TtRCUk!`ek%)`Cxkc)6igq3iTv6b+W5G&z?D{=|L!D4{WFgZ~m@1p5F6mO$= z2gSQ6mQmbD@SXo^VnUDDI)$BQ3INo@N3a4^@fnH59k~mzj!oNk zomC+wM4g3gbL-N!TI(!V66@DCL)##1*;x)*#OfsfDPxD_tqc#)5nL;af8SsFfhEs$|PceXR>M5&5;TS=VmIK3#}%|dk- zW^0=ry|98^KTeBQkoC6W)X(EARUJ`?XV9(mB0u%~EtMsMJn|wbGa1l>lg+@+D`@Jw z=pqfX*J$Rh5iW*iXdMaHEN9|cKDjXxt`}TT#5Tn&PytB92sZu6D0J3|*OHuxNN75l~-uFSiR zuYaN6&i7>$#+AcP_uS^3QFc%5cw1Sxf3HFHYNW4CP11*t%$ro*F=rGd4F~f%?2M2y zYg$(uBXM|-SWEvz9E&br+dw}Cj~$Bx>>-KF;ri=wf`Iy|a&E=>u0tqwwq@3HcH)~+ zO6VW-aM8aRNq;B0OW*;MnEvfpNj@+NalNQ*W0=%0OiDAbP?NI5+m?PWD(cl3_s+OM z&v^9e3pD2%I?X(Z{tJIM8!3re=)vV+0%TF@|d=kcnL69P^`Wf*m`t37p7!M$Mkp*_N`Jp&aMtrXi+1&V z6ndqdY{kSP4lIFya;C(c(G*Q%c<%G;*z8#HN!%>IN*$%Bbf}|2PKC{RTzD3Z=SZ-T zbY>1PG<(|AWpwuf=8uBIOq$!gUvo>vb?YB%rsmp+N2^%55~=*!U`s{$3|Sw&Ix7O4 zr#Y*AWP3kTDkhn%YJ`-F1Si`DrS_dYVtS@xiTE=A;>wA0&aK@z*mbtD473gPbWR|x zqI`fX;!8c;bC)m%pe$f?Z_i8OUYs)q35Vnbf;Pp3tBzdD!Cr@YSBLN$p9)cy0Y+}- z*4R1*+))D5LLk+vb8m;lWMUJ1V5tENkl)5wobF(GdSzk6XJ+kqW_ha*K>Q^V6H&8kL>q2JTw-$v#^eS|S? zB(uHuv4UZ{>y^z*`I)>uZdW;aHf&-Z%V7=l&m}FGcROHKG7g7EO2EpnhOHL3sE5f&M z;X1vceBJQb(*nw6;Ys*SWNFS=Vl|dHDh8mbZ88<2mnInyb>+0T@w?B`_$ zA4-B_)E#SDRRZXRSm&W&vZeY-j1qu->o$l-c@cD)hZ782dH8x~rO;8DKaNwJu3UzJ zsIiRWC6T;BSAIYp#iUpy3G-qsuV|H5Skg~-qQXd`lyh5>?UMX1N!jJ|)V)9*Ew?&$ zN#AF&@1BJYmdWguU{tP6(DXoezzXBDXwG8b8o1yt@Ga$4o*TUQ293}7q1y7tXzC(5 z%~;jjq9vNBZ%p*(4C+m>3I#9)Dgsf{@vpb_B{5w4-1tp7gAhg2W6mHkAn4DPg2-*k z_5&=JsSpHL5O0u*LJW}QRw)Pv#>nW_LTimwvo?H)1PQ#e6jWnE9h&$k^ z-&HjtlYZ%@5*hNFcn~h5=TBg|xj`!^E(>!SnbS`nUOLSwRYXoC;PlxFj3umjWl}Hn zepocFVkz=EtwhQNH<$Vh5~?0cWvY~&4SR;pQXD4{=Cd5(Rh+$nR*^pIFoLW2bdV~Q!Ta+wTRYVX0o>e755$p>k_nQ`UhEyLkNVI88yD@5*ck{_814xPQK~`w&;kuP;CV*L6=lz+v~-cSK60YOm5be@FMF%K#JtUDS2s+OdX2 z$HKnaH}d+}9_igih{Ojam^f~tEr1Nnwl*@TPQ!T%=UO8Zyl(F4JK~^*V=4h^AddQ| zK3>AO_Q>p>fsnWJv-$FPxpMLfRh8ZD369h(TqNzkMw>|c zOAiXv=Sn<_CDY9H&CVn8Eqc+scFDKt9F>NJoo8M;=;3pn9`s%NJzvJ9XsKPlAG!8B z_}tcuhY%H@-c$Huf#p_V;J~dT;h=9l=xUbSgwF9AR=!VT&*Qcfw#H1@3h^_xvJhKt zBirg?VS~>&#X^9uz&x*9xn>{37d57LCnqx5;Pk>NY>ZC z(1WK-*9J!Ya?;h-Sh65rELrCNfn>>_U>1Kun`qU`5Aw!?G>dhrCa+;ENwwz*iQ;fy zz`4n~^I_EK4`dYKPeXN4suPwb7aqbqP~>S}IG8M_0wsTnk!O&Z@FL3+aqBP9m=bNs zQmbaKFynSsq(jd=PaWlJ(V!YG&$2{uVaG*qv4YRu>%A=4gU+n)MhTYk$~~j@66i;| zUVcqiT;sV`aPxM5U;doNvN+4iwPvmFr=hP(e-gLK^VIPN0p|W0FHFe+3()e@;bjU2 Wf4(zyLU|jl#Jg=QIqk*v)&Byp4p0#Q diff --git a/deployment/ensembler/src/models/dl_models.py b/deployment/ensembler/src/models/dl_models.py deleted file mode 100644 index 85980524..00000000 --- a/deployment/ensembler/src/models/dl_models.py +++ /dev/null @@ -1,84 +0,0 @@ -"""Script for Ensembler torch network""" - -import torch.nn as nn -import torch -from dl_helpers import ( - masked_softmax, - calculate_matching_padding, - base_conv_layer, - attention_module, -) - - -class EnsemblerRegressorModel(nn.Module): - """Torch ensemble network""" - - def __init__( - self, - forecasters_num=2, - n_inputs=[11, 16, 32], - n_outputs=[16, 32, 64], - kernel_size=[5, 4, 4], - stride=[1, 1, 2], - dilation=[1, 2, 1], - series_len=16, - with_att=True, - ): - super().__init__() - self.forecasters_num = forecasters_num - self.n_layers = len(dilation) - self.with_att = with_att - self.series_len = series_len - self.cnn_layers = nn.ModuleList( - self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, dilation) - ) - self.att_layers = attention_module(embed_dim=n_outputs[-1]) - self.activation_layers = nn.GELU() - self.last_layer = nn.Linear( - int(series_len * n_outputs[-1]), self.forecasters_num - ) - - def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, dilation): - """Creates convolutional layers with padding - so that the output has the same length as input""" - return [ - base_conv_layer( - in_f, - out_f, - k, - stride=s, - padding=calculate_matching_padding( - self.series_len, self.series_len, k, d, s - ), - dilation=d, - ) - for in_f, out_f, k, s, d in zip( - n_inputs, n_outputs, kernel_size, stride, dilation - ) - ] - - def get_mask_and_preds(self, prediction): - """Get binary mask for predictions which - are not present and predicted values""" - return ( - prediction[:, self.forecasters_num :], - prediction[:, : self.forecasters_num], - ) - - def forward(self, batch): - """model forward function""" - x, preds_to_ensemble = batch - for i in range(self.n_layers): - x = x.permute(0, 2, 1) - x = self.cnn_layers[i](x) - x = x.permute(0, 2, 1) - if i == self.n_layers - 1: - if self.with_att: - x, _ = self.att_layers(x, x, x) - x = self.activation_layers(x) - - x = torch.flatten(x, start_dim=1) - x = self.last_layer(x) - mask, preds = self.get_mask_and_preds(preds_to_ensemble) - x = masked_softmax(x, mask) - return torch.sum(preds * x, 1) diff --git a/deployment/ensembler/src/models/dl_torch_lightning.py b/deployment/ensembler/src/models/dl_torch_lightning.py deleted file mode 100644 index e3bf629d..00000000 --- a/deployment/ensembler/src/models/dl_torch_lightning.py +++ /dev/null @@ -1,2 +0,0 @@ -"""Script for torch lighning module for ensembling""" - diff --git a/deployment/ensembler/src/models/new.csv b/deployment/ensembler/src/models/new.csv deleted file mode 100644 index f151e493..00000000 --- a/deployment/ensembler/src/models/new.csv +++ /dev/null @@ -1,96 +0,0 @@ -name,time,arima_left_conf,arima_probability,arima_right_conf,arima_value,cnn_left_conf,cnn_probability,cnn_right_conf,cnn_value,ensembled_left_conf,ensembled_probability,ensembled_right_conf,ensembled_value,prophet_left_conf,prophet_probability,prophet_right_conf,prophet_value -MinimumCoresPredictions,1640789523000000000,,,,,,,,,,,,,-158.4472721456001,0.8,121.61342656202129,-21.275831622576863 -MinimumCoresPredictions,1640789561000000000,,,,,,,,,,,,,-150.40752613158415,0.8,114.04934987371874,-21.38388382793413 -MinimumCoresPredictions,1640789566000000000,-161.89635569226925,0.95,157.7308065537772,-2.0827745692460393,,,,,,,,,,,, -MinimumCoresPredictions,1640789599000000000,,,,,,,,,,,,,-158.9194025775471,0.8,114.00061737039356,-21.49079268376113 -MinimumCoresPredictions,1640789636000000000,,,,,,,,,,,,,-154.5533039114234,0.8,117.11469004423601,-21.596551386635085 -MinimumCoresPredictions,1640789671000000000,,,,,,,,,,,,,-154.49356936605753,0.8,121.96451391408908,-21.70115320330103 -MinimumCoresPredictions,1640789678000000000,-20.976727063297787,0.95,205.5895891056956,92.30643102119892,,,,,,,,,,,, -MinimumCoresPredictions,1640789706000000000,,,,,,,,,,,,,-165.61727297079116,0.8,114.95956667093034,-21.80459146551018 -MinimumCoresPredictions,1640789737000000000,34.347511026876845,0.95,265.60877351105603,149.97814226896645,,,,,,,,,,,, -MinimumCoresPredictions,1640789741000000000,,,,,,,,,,,,,-155.44124860000477,0.8,116.96762649134993,-21.906859574125797 -MinimumCoresPredictions,1640789775000000000,,,,,,,,,,,,,-156.69651098700766,0.8,118.51786482892017,-22.007951002875835 -MinimumCoresPredictions,1640789799000000000,196.42427872230235,0.95,439.2220133599419,317.82314604112213,,,,,,,,,,,, -MinimumCoresPredictions,1640789808000000000,,,,,,,,,,,,,-148.8526287448898,0.8,108.65035999406031,-22.107859293362925 -MinimumCoresPredictions,1640789841000000000,,,,,,,,,,,,,-162.23469356860488,0.8,116.13701477371227,-22.206578055650066 -MinimumCoresPredictions,1640789859000000000,345.5667969301442,0.95,609.4103765531204,477.4885867416323,,,,,,,,,,,, -MinimumCoresPredictions,1640789873000000000,,,,,,,,,,,,,-151.55648658228918,0.8,106.52098159121968,-22.30410097525501 -MinimumCoresPredictions,1640789905000000000,,,,,,,,,,,,,-147.58349841271067,0.8,111.87172956753585,-22.400421804429726 -MinimumCoresPredictions,1640789919000000000,336.7356037659305,0.95,599.6589812962518,468.19729253109114,,,,,,,,,,,, -MinimumCoresPredictions,1640789937000000000,,,,,,,,,,,,,-161.29284493932002,0.8,100.82283371664583,-22.495534370420202 -MinimumCoresPredictions,1640789969000000000,,,,,,,,,,,,,-152.9646824271364,0.8,105.19450860829521,-22.589432569492303 -MinimumCoresPredictions,1640789979000000000,-368.72026793360067,0.95,-75.17146322761917,-221.94586558060993,,,,,,,,,,,, -MinimumCoresPredictions,1640790001000000000,,,,,,,,,,,,,-157.2396658288572,0.8,103.56503507285281,-22.682110374930318 -MinimumCoresPredictions,1640790033000000000,,,,,,,,,,,,,-155.33316599825224,0.8,105.39820647933941,-22.773561828688607 -MinimumCoresPredictions,1640790039000000000,-235.94000503280682,0.95,78.50104505033276,-78.71947999123704,,,,,,,,,,,, -MinimumCoresPredictions,1640790066000000000,,,,,,,,,,,,,-152.43037334821133,0.8,115.3332571954821,-22.863781048752077 -MinimumCoresPredictions,1640790092000000000,,,,,27993.184742593578,0.8,27999.184742593578,27996.184742593578,,,,,,,, -MinimumCoresPredictions,1640790098000000000,,,,,,,,,,,,,-149.1099089805551,0.8,102.11550373242642,-22.95276222630205 -MinimumCoresPredictions,1640790099000000000,-216.89247419596768,0.95,107.25074721743778,-54.820863489264944,,,,,,,,,,,, -MinimumCoresPredictions,1640790130000000000,,,,,,,,,,,,,-158.2906036555093,0.8,102.6695984395503,-23.040499627479136 -MinimumCoresPredictions,1640790154000000000,,,,,24941.370820893568,0.8,24947.370820893568,24944.370820893568,,,,,,,, -MinimumCoresPredictions,1640790161000000000,-170.3316002676293,0.95,150.91382106589094,-9.70888960086917,,,,,,,,,,,, -MinimumCoresPredictions,1640790163000000000,,,,,,,,,,,,,-151.49476387171023,0.8,119.80285834964873,-23.12698759078374 -MinimumCoresPredictions,1640790191000000000,,,,,24960.530360026867,0.8,24966.530360026867,24963.530360026867,,,,,,,, -MinimumCoresPredictions,1640790195000000000,,,,,,,,,,,,,-157.52579958108328,0.8,110.76491249658449,-23.21222053391848 -MinimumCoresPredictions,1640790218000000000,-195.37521403119422,0.95,125.93412447910318,-34.720544776045514,,,,,,,,,,,, -MinimumCoresPredictions,1640790228000000000,,,,,,,,,,,,,-158.64030486331322,0.8,108.92916404000135,-23.296192946028608 -MinimumCoresPredictions,1640790237000000000,,,,,27238.46382065222,0.8,27244.46382065222,27241.46382065222,,,,,,,, -MinimumCoresPredictions,1640790260000000000,,,,,,,,,,,,,-161.12256084307043,0.8,111.17395190539419,-23.37889939404316 -MinimumCoresPredictions,1640790278000000000,-190.3908618166194,0.95,129.1002572580378,-30.6453022792908,,,,,,,,,,,, -MinimumCoresPredictions,1640790292000000000,,,,,,,,,,,,,-150.39877373469807,0.8,103.00679554746911,-23.460334522719588 -MinimumCoresPredictions,1640790296000000000,,,,,27373.090532101043,0.8,27379.090532101043,27376.090532101043,,,,,,,, -MinimumCoresPredictions,1640790324000000000,,,,,,,,,,,,,-147.24966106829933,0.8,102.89370029622637,-23.540493050766578 -MinimumCoresPredictions,1640790337000000000,-210.32220516478637,0.95,63.96541038303414,-73.17839739087611,,,,,,,,,,,, -MinimumCoresPredictions,1640790806000000000,,,,,25075.850830187526,0.8,25081.850830187526,25078.850830187526,,,,,,,, -MinimumCoresPredictions,1640790823000000000,-185.63567294081855,0.95,135.634232681326,-25.000720129746284,,,,,-185.63567294081855,0.875,25081.850830187526,12526.92505502889,,,, -MinimumCoresPredictions,1640790833000000000,,,,,,,,,,,,,-124.08173424208573,0.8,129.4337459704241,-1.6642378427912234 -MinimumCoresPredictions,1640790841000000000,,,,,,,,,-185.63567294081855,0.85,25081.850830187526,8350.728624071664,,,, -MinimumCoresPredictions,1640790850000000000,,,,,25075.850830187526,0.8,25081.850830187526,25078.850830187526,-187.40274797545518,0.85,25647.503702886104,8538.690148016614,,,, -MinimumCoresPredictions,1640790851000000000,,,,,,,,,-185.63567294081855,0.85,26402.655787657874,8790.996943228447,,,, -MinimumCoresPredictions,1640790871000000000,,,,,,,,,,,,,-133.73576682984188,0.8,114.92556352229849,-1.773491982976772 -MinimumCoresPredictions,1640790879000000000,,,,,,,,,-199.09806901317927,0.85,25705.91467215506,8552.042417435941,,,, -MinimumCoresPredictions,1640790880000000000,,,,,,,,,-133.73576682984188,0.8,25081.850830187526,12538.538669102274,,,, -MinimumCoresPredictions,1640790884000000000,-125.21167912418716,0.95,200.6224520150598,37.70538644543631,,,,,-131.206044086457,0.85,26068.289038269388,8742.586481577333,,,, -MinimumCoresPredictions,1640790885000000000,,,,,,,,,-133.73576682984188,0.85,25081.850830187526,8379.53262019625,,,, -MinimumCoresPredictions,1640790909000000000,,,,,,,,,,,,,-131.1372839037368,0.8,128.62976426932977,-1.8816315400670902 -MinimumCoresPredictions,1640790910000000000,,,,,26949.204439387548,0.8,26955.204439387548,26952.204439387548,-125.21167912418716,0.875,26955.204439387548,13494.954912916492,,,, -MinimumCoresPredictions,1640790915000000000,,,,,,,,,-131.1372839037368,0.85,26955.204439387548,8996.00939809764,,,, -MinimumCoresPredictions,1640790945000000000,,,,,,,,,,,,,-135.58495618982414,0.8,132.89015388944634,-1.9886460369936003 -MinimumCoresPredictions,1640790948000000000,,,,,,,,,-138.8919373376316,0.85,26955.204439387548,8996.00939809764,,,, -MinimumCoresPredictions,1640790950000000000,-12.597405336604453,0.95,263.33714191181355,125.36986828760456,,,,,-135.58495618982414,0.875,216.44327051897568,38.39454686804592,,,, -MinimumCoresPredictions,1640790965000000000,,,,,27063.69952024545,0.8,27069.69952024545,27066.69952024545,-12.597405336604453,0.875,27069.69952024545,13596.034694266527,,,, -MinimumCoresPredictions,1640790978000000000,,,,,,,,,,,,,-124.46589439079473,0.8,120.72522274336936,-2.0945250815181353 -MinimumCoresPredictions,1640790980000000000,,,,,,,,,-124.46589439079473,0.85,27069.69952024545,9063.324954483845,,,, -MinimumCoresPredictions,1640791008000000000,-6.311894930912899,0.95,272.51053523556743,133.09932015232727,,,,,-128.6504775414145,0.85,25297.82926532748,8495.67652913284,,,, -MinimumCoresPredictions,1640791009000000000,,,,,,,,,-124.46589439079473,0.85,27069.69952024545,9075.62898594235,,,, -MinimumCoresPredictions,1640791010000000000,,,,,,,,,,,,,-140.6147231124454,0.8,132.58233092015988,-2.1992583629241764 -MinimumCoresPredictions,1640791012000000000,,,,,,,,,-140.6147231124454,0.875,286.26184593662003,72.43192943551541,,,, -MinimumCoresPredictions,1640791014000000000,,,,,27625.94419486597,0.8,27631.94419486597,27628.94419486597,-142.36698133863842,0.85,25019.42451309202,8393.247836455803,,,, -MinimumCoresPredictions,1640791015000000000,,,,,,,,,-6.311894930912899,0.875,27631.94419486597,13881.021757509148,,,, -MinimumCoresPredictions,1640791042000000000,,,,,,,,,,,,,-145.34488720820963,0.8,133.04234642217477,-2.302835657511558 -MinimumCoresPredictions,1640791044000000000,,,,,,,,,-135.51677212585952,0.85,30097.334052575243,10079.732637148758,,,, -MinimumCoresPredictions,1640791045000000000,,,,,,,,,-145.34488720820963,0.85,27631.94419486597,9253.246893120262,,,, -MinimumCoresPredictions,1640791053000000000,,,,,21058.22121397717,0.8,21064.22121397717,21061.22121397717,-145.34488720820963,0.85,25582.967180813655,8570.254555102823,,,, -MinimumCoresPredictions,1640791068000000000,99.19925675678061,0.95,385.3468904390106,242.27307359789563,,,,,99.19925675678061,0.875,21064.22121397717,10651.747143787532,,,, -MinimumCoresPredictions,1640791074000000000,,,,,,,,,,,,,-131.7614905517805,0.8,126.24571196481368,-2.4052468237563502 -MinimumCoresPredictions,1640791077000000000,,,,,,,,,-131.7614905517805,0.85,24010.48649526834,8047.887584321098,,,, -MinimumCoresPredictions,1640791102000000000,,,,,26556.060929607673,0.8,26562.060929607673,26559.060929607673,99.19925675678061,0.875,34372.50183949568,17305.88745654679,,,, -MinimumCoresPredictions,1640791107000000000,,,,,,,,,,,,,-137.14332843278052,0.8,132.28796851232323,-2.5064818039847694 -MinimumCoresPredictions,1640791109000000000,,,,,,,,,-137.14332843278052,0.85,34372.50183949568,11536.422810429865,,,, -MinimumCoresPredictions,1640791129000000000,207.18193316802896,0.95,505.90665482488873,356.54429399645886,,,,,208.98711405922043,0.875,26562.060929607673,13458.705193317606,,,, -MinimumCoresPredictions,1640791138000000000,,,,,25261.377692983082,0.8,25267.377692983082,25264.377692983082,207.18193316802896,0.875,27675.66885618541,14014.606575090935,,,, -MinimumCoresPredictions,1640791139000000000,,,,,,,,,,,,,-126.93073726534512,0.8,122.11954496813567,-2.6065306316055583 -MinimumCoresPredictions,1640791141000000000,,,,,,,,,-126.93073726534512,0.85,31820.14687911597,10724.296601837303,,,, -MinimumCoresPredictions,1640791171000000000,,,,,,,,,,,,,-132.4191261296443,0.8,133.38444500968458,-2.705383423646154 -MinimumCoresPredictions,1640791174000000000,,,,,,,,,-132.4191261296443,0.85,27675.66885618541,9342.169255586074,,,, -MinimumCoresPredictions,1640791181000000000,,,,,25261.23620728164,0.8,25267.23620728164,25264.23620728164,-132.4191261296443,0.85,31684.742401020256,10678.527103864357,,,, -MinimumCoresPredictions,1640791189000000000,205.87640718960188,0.95,505.21279430976335,355.5446007496826,,,,,205.87640718960188,0.875,25267.23620728164,12809.890404015661,,,, -MinimumCoresPredictions,1640791204000000000,,,,,,,,,,,,,-133.4044630703763,0.8,126.95924819078968,-2.803030385189558 -MinimumCoresPredictions,1640791206000000000,,,,,,,,,-133.4044630703763,0.85,27802.780961744607,9370.011837554513,,,, -MinimumCoresPredictions,1640791236000000000,,,,,21109.18637023582,0.8,21115.18637023582,21112.18637023582,-130.4222759100162,0.85,25060.97257762744,8471.54392756551,-132.02656891356364,0.8,137.63523651580255,-2.8994618128159857 -MinimumCoresPredictions,1640791237000000000,,,,,,,,,205.87640718960188,0.875,20369.945758122365,10361.245179436024,,,, -MinimumCoresPredictions,1640791238000000000,,,,,,,,,-132.02656891356364,0.85,20369.945758122365,6906.530299019744,,,, -MinimumCoresPredictions,1640791248000000000,-419.02517513189343,0.95,-81.50763522688817,-250.2664051793908,,,,,-193.4603272802651,0.875,21115.18637023582,10543.742148580413,,,, -MinimumCoresPredictions,1640791268000000000,,,,,,,,,,,,,-129.16876870162628,0.8,129.30201410134583,-2.994668090857793 -MinimumCoresPredictions,1640791270000000000,,,,,,,,,-193.4603272802651,0.85,21115.18637023582,7028.163209689989,,,, diff --git a/deployment/ensembler/src/models/test.ipynb b/deployment/ensembler/src/models/test.ipynb deleted file mode 100644 index 02937d2b..00000000 --- a/deployment/ensembler/src/models/test.ipynb +++ /dev/null @@ -1,988 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "5af44adc", - "metadata": {}, - "outputs": [], - "source": [ - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding\n", - "\n", - "\n", - "\"\"\"Script for deep learning networks \"\"\"\n", - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "\n", - "import pandas as pd\n", - "import numpy as np\n", - "import os\n", - "import matplotlib.pyplot as plt\n", - "import random\n", - "\n", - "# PyTorch\n", - "import torch.utils.data as data\n", - "import torch\n", - "import re" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "523d7c32", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nametimearima_left_confarima_probabilityarima_right_confarima_valuecnn_left_confcnn_probabilitycnn_right_confcnn_valueensembled_left_confensembled_probabilityensembled_right_confensembled_valueprophet_left_confprophet_probabilityprophet_right_confprophet_valueyseries_id
0MinimumCoresPredictions1640789523000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.4472720.8121.613427-21.27583210
1MinimumCoresPredictions1640789561000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-150.4075260.8114.049350-21.38388410
2MinimumCoresPredictions1640789566000000000-161.8963560.95157.730807-2.082775NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN10
3MinimumCoresPredictions1640789599000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-158.9194030.8114.000617-21.49079310
4MinimumCoresPredictions1640789636000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-154.5533040.8117.114690-21.59655110
...............................................................
90MinimumCoresPredictions1640791237000000000NaNNaNNaNNaNNaNNaNNaNNaN205.8764070.87520369.94575810361.245179NaNNaNNaNNaN11
91MinimumCoresPredictions1640791238000000000NaNNaNNaNNaNNaNNaNNaNNaN-132.0265690.85020369.9457586906.530299NaNNaNNaNNaN11
92MinimumCoresPredictions1640791248000000000-419.0251750.95-81.507635-250.266405NaNNaNNaNNaN-193.4603270.87521115.18637010543.742149NaNNaNNaNNaN11
93MinimumCoresPredictions1640791268000000000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN-129.1687690.8129.302014-2.99466811
94MinimumCoresPredictions1640791270000000000NaNNaNNaNNaNNaNNaNNaNNaN-193.4603270.85021115.1863707028.163210NaNNaNNaNNaN10001
\n", - "

95 rows × 20 columns

\n", - "
" - ], - "text/plain": [ - " name time arima_left_conf \\\n", - "0 MinimumCoresPredictions 1640789523000000000 NaN \n", - "1 MinimumCoresPredictions 1640789561000000000 NaN \n", - "2 MinimumCoresPredictions 1640789566000000000 -161.896356 \n", - "3 MinimumCoresPredictions 1640789599000000000 NaN \n", - "4 MinimumCoresPredictions 1640789636000000000 NaN \n", - ".. ... ... ... \n", - "90 MinimumCoresPredictions 1640791237000000000 NaN \n", - "91 MinimumCoresPredictions 1640791238000000000 NaN \n", - "92 MinimumCoresPredictions 1640791248000000000 -419.025175 \n", - "93 MinimumCoresPredictions 1640791268000000000 NaN \n", - "94 MinimumCoresPredictions 1640791270000000000 NaN \n", - "\n", - " arima_probability arima_right_conf arima_value cnn_left_conf \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 0.95 157.730807 -2.082775 NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN NaN \n", - "91 NaN NaN NaN NaN \n", - "92 0.95 -81.507635 -250.266405 NaN \n", - "93 NaN NaN NaN NaN \n", - "94 NaN NaN NaN NaN \n", - "\n", - " cnn_probability cnn_right_conf cnn_value ensembled_left_conf \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN 205.876407 \n", - "91 NaN NaN NaN -132.026569 \n", - "92 NaN NaN NaN -193.460327 \n", - "93 NaN NaN NaN NaN \n", - "94 NaN NaN NaN -193.460327 \n", - "\n", - " ensembled_probability ensembled_right_conf ensembled_value \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", - ".. ... ... ... \n", - "90 0.875 20369.945758 10361.245179 \n", - "91 0.850 20369.945758 6906.530299 \n", - "92 0.875 21115.186370 10543.742149 \n", - "93 NaN NaN NaN \n", - "94 0.850 21115.186370 7028.163210 \n", - "\n", - " prophet_left_conf prophet_probability prophet_right_conf prophet_value \\\n", - "0 -158.447272 0.8 121.613427 -21.275832 \n", - "1 -150.407526 0.8 114.049350 -21.383884 \n", - "2 NaN NaN NaN NaN \n", - "3 -158.919403 0.8 114.000617 -21.490793 \n", - "4 -154.553304 0.8 117.114690 -21.596551 \n", - ".. ... ... ... ... \n", - "90 NaN NaN NaN NaN \n", - "91 NaN NaN NaN NaN \n", - "92 NaN NaN NaN NaN \n", - "93 -129.168769 0.8 129.302014 -2.994668 \n", - "94 NaN NaN NaN NaN \n", - "\n", - " y series_id \n", - "0 1 0 \n", - "1 1 0 \n", - "2 1 0 \n", - "3 1 0 \n", - "4 1 0 \n", - ".. ... ... \n", - "90 1 1 \n", - "91 1 1 \n", - "92 1 1 \n", - "93 1 1 \n", - "94 1000 1 \n", - "\n", - "[95 rows x 20 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv('new.csv')\n", - "df['y'] = [1 for _ in range(df.shape[0] - 1)] + [1000]\n", - "df['series_id'] = list([0 for _ in range(20)]) + list([1 for _ in range(df.shape[0] - 20)])\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "e27f8c06", - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"Script for pythorch dataset class\"\"\"\n", - "import torch.utils.data as data\n", - "import torch\n", - "import re\n", - "import random\n", - "import numpy as np\n", - "\n", - "\n", - "class DatasetHistMask(torch.utils.data.Dataset):\n", - " \"\"\"Defines a dataset for PyTorch, dataset\n", - " networks_prediction_df - data frame with predictions and target\n", - " models_list - list with present forecasters\n", - " max_pred_len - maximum value for prediction steps\n", - " series_len - ensemble series len (historical values len + curent prediction length)\n", - " target_column - target column name in networks_prediction_df\n", - " start_idx - start from this indices networks_prediction_df rows will be chosen\n", - " last_idx - networks_prediction_df rows will be chosen to this index (might be None)\n", - " nan_fill_value - value for filling missing data e.g target value mean\n", - " \"\"\"\n", - "\n", - " def __init__(\n", - " self,\n", - " networks_prediction_df,\n", - " models_list=[\"arima\", \"cnn\"],\n", - " max_pred_len=5,\n", - " series_len=16,\n", - " target_column=\"y\",\n", - " start_idx=0,\n", - " last_idx=None,\n", - " nan_fill_value=100,\n", - " ):\n", - " \"Initialization\"\n", - " self.df = networks_prediction_df\n", - " self.get_rows(last_idx, start_idx)\n", - " self.models_list = models_list\n", - " assert len(self.models_list) > 1, \"There must be more than one forecaster!\"\n", - " self.x_columns = self.get_x_col_names()\n", - " self.series_lengths = self.get_series_lengths()\n", - " self.valid_indices = self.get_valid_indices()\n", - " self.df = self.df[self.x_columns + [target_column, \"series_id\"]]\n", - " self.target_column = target_column\n", - " self.max_pred_len = max_pred_len\n", - " self.series_len = series_len\n", - " self.nan_fill_value = nan_fill_value\n", - "\n", - " def get_x_col_names(self):\n", - " \"\"\"Get forecasters predictions columns names\"\"\"\n", - " predictions_col_pattern = \"\".join(\n", - " [f\"^{model}_value|\" for model in self.models_list]\n", - " )[:-1]\n", - " return [\n", - " col for col in self.df.columns if re.match(predictions_col_pattern, col)\n", - " ]\n", - "\n", - " def get_series_lengths(self):\n", - " \"\"\"Get whole series lenghths using series_id column\"\"\"\n", - " return self.df[\"series_id\"].value_counts().sort_values(\"index\").cumsum()\n", - "\n", - " def get_valid_indices(self):\n", - " \"\"\"Get valid inidices for series starts according to series_id column\"\"\"\n", - " indices = [\n", - " i\n", - " for i in range(self.df.shape[0])\n", - " if self.series_lengths.loc[self.df.iloc[i][\"series_id\"]] - i >= 15\n", - " ]\n", - " return indices\n", - "\n", - " def get_rows(self, last_idx, start_idx):\n", - " \"\"\"Get rows according to last_idx, start_idx\"\"\"\n", - " if last_idx:\n", - " self.df = self.df.iloc[start_idx:last_idx]\n", - " else:\n", - " self.df = self.df.iloc[start_idx:]\n", - "\n", - " def __len__(self):\n", - " \"Denotes the total number of samples\"\n", - " return len(self.valid_indices)\n", - "\n", - " def get_one_series_df_part(self, idx):\n", - " \"\"\"Get single series (consecutive rows from\n", - " data frame of length: series_len)\"\"\"\n", - " return self.df.iloc[idx : idx + self.series_len].reset_index()\n", - "\n", - " def get_target_value(self, df):\n", - " \"\"\"Get target value, single y true value which\n", - " we want to approximate with ensembling\"\"\"\n", - " return df[self.target_column].values[-1]\n", - "\n", - " def replace_future_values(self, col, hist_len):\n", - " \"\"\"Replace values connected with target from future\"\"\"\n", - " col.iloc[hist_len:] = self.nan_fill_value\n", - " return col\n", - "\n", - " def add_columns(self, x, hist_len):\n", - " \"\"\"Add extra columns: time_idx, nans masks, is_past\"\"\"\n", - " for col in self.x_columns:\n", - " x[f\"{col}_res\"] = x[col] - x[self.target_column]\n", - " x[f\"{col}_res\"] = self.replace_future_values(x[f\"{col}_res\"], hist_len)\n", - " x[\"time_idx\"] = range(self.series_len)\n", - " x[\"is_past\"] = [1 for _ in range(hist_len)] + [\n", - " 0 for _ in range(self.series_len - hist_len)\n", - " ]\n", - " for col in self.x_columns:\n", - " x[f\"{col}_mask\"] = x[col].notna().astype(int)\n", - " return x\n", - "\n", - " def get_predictions_to_ensemble(self, x):\n", - " \"\"\"Get forcasters values which will be ensembled\"\"\"\n", - " return (\n", - " x[self.x_columns + [f\"{col}_mask\" for col in self.x_columns]].tail(1).copy()\n", - " )\n", - "\n", - " @staticmethod\n", - " def to_tensors(x, preds, y):\n", - " \"\"\"Convert network input to tensor\"\"\"\n", - " return (\n", - " torch.tensor(x.to_numpy().astype(np.float32)),\n", - " torch.tensor(preds.fillna(0).values.astype(np.float32)).squeeze(),\n", - " torch.tensor(y),\n", - " )\n", - "\n", - " def get_one_series(self, idx, hist_len=10):\n", - " \"\"\"Get single input example\"\"\"\n", - " x = self.get_one_series_df_part(idx)\n", - " target = self.get_target_value(x)\n", - " x[self.target_column] = self.replace_future_values(\n", - " x[self.target_column], hist_len\n", - " )\n", - " x = self.add_columns(x, hist_len)\n", - " predictions_to_ensemble = self.get_predictions_to_ensemble(x)\n", - " x = x.fillna(self.nan_fill_value)\n", - " return (x, predictions_to_ensemble, target)\n", - "\n", - " def __getitem__(self, idx, rand_hist_len=True):\n", - " \"\"\"Get item, optionaly rand histry length\"\"\"\n", - " idx = self.valid_indices[idx]\n", - " if rand_hist_len:\n", - " hist_len = random.randint(\n", - " self.series_len - self.max_pred_len, self.series_len - 1\n", - " )\n", - " else:\n", - " hist_len = (\n", - " self.series_len\n", - " - self.get_one_series_df_part(idx)[self.target_column]\n", - " .iloc[::-1]\n", - " .last_valid_index()\n", - " )\n", - " x, predictions_to_ensemble, target = self.get_one_series(idx, hist_len=hist_len)\n", - " return self.to_tensors(x, predictions_to_ensemble, target)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "52ea0d4c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "67" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = DatasetHistMask(df)\n", - "len(d)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "ccdf0833", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/awarno/.pyenv/versions/3.7.9/lib/python3.7/site-packages/pandas/core/indexing.py:670: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " iloc._setitem_with_indexer(indexer, value)\n" - ] - }, - { - "data": { - "text/plain": [ - "(tensor([[ 5.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 0.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 6.0000, 92.3064, 100.0000, 1.0000, 0.0000, 91.3064,\n", - " 100.0000, 1.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 7.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 2.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 8.0000, 149.9781, 100.0000, 1.0000, 0.0000, 148.9781,\n", - " 100.0000, 3.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 9.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 4.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 10.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 5.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 11.0000, 317.8232, 100.0000, 1.0000, 0.0000, 316.8232,\n", - " 100.0000, 6.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 12.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 7.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 13.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 8.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 14.0000, 477.4886, 100.0000, 1.0000, 0.0000, 476.4886,\n", - " 100.0000, 9.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 15.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 10.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 16.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 11.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 17.0000, 468.1973, 100.0000, 1.0000, 0.0000, 467.1973,\n", - " 100.0000, 12.0000, 1.0000, 1.0000, 0.0000],\n", - " [ 18.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 13.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 19.0000, 100.0000, 100.0000, 1.0000, 0.0000, 100.0000,\n", - " 100.0000, 14.0000, 1.0000, 0.0000, 0.0000],\n", - " [ 20.0000, -221.9459, 100.0000, 1.0000, 1.0000, -222.9459,\n", - " 100.0000, 15.0000, 1.0000, 1.0000, 0.0000]]),\n", - " tensor([-221.9459, 0.0000, 1.0000, 0.0000]),\n", - " tensor(1))" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d.__getitem__(19, rand_hist_len=False)\n", - "x = d.__getitem__(5, rand_hist_len=False)\n", - "x" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c64676ce", - "metadata": {}, - "outputs": [ - { - "ename": "ImportError", - "evalue": "cannot import name 'base_conv1_layer' from 'dl_helpers' (/home/awarno/MORPH_22/morphemic-preprocessor/deployment/ensembler/src/models/dl_helpers.py)", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mweight_norm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdl_helpers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mbase_linear_module\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmasked_softmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcalculate_matching_padding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbase_conv1_layer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattention_module\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mImportError\u001b[0m: cannot import name 'base_conv1_layer' from 'dl_helpers' (/home/awarno/MORPH_22/morphemic-preprocessor/deployment/ensembler/src/models/dl_helpers.py)" - ] - } - ], - "source": [ - "import torch.nn as nn\n", - "import torch\n", - "from torch.nn.utils import weight_norm\n", - "from dl_helpers import base_linear_module, masked_softmax, calculate_matching_padding, base_conv1_layer, attention_module" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fde0de4c", - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"Script for Ensembler torch network\"\"\"\n", - "\n", - "import torch.nn as nn\n", - "import torch\n", - "from dl_helpers import (\n", - " masked_softmax,\n", - " calculate_matching_padding,\n", - " base_conv_layer,\n", - " attention_module,\n", - ")\n", - "\n", - "\n", - "class EnsemblerRegressorModel(nn.Module):\n", - " \"\"\"Torch ensemble network\"\"\"\n", - "\n", - " def __init__(\n", - " self,\n", - " forecasters_num=2,\n", - " n_inputs=[11, 16, 32],\n", - " n_outputs=[16, 32, 64],\n", - " kernel_size=[5, 4, 4],\n", - " stride=[1, 1, 2],\n", - " dilation=[1, 2, 1],\n", - " series_len=16,\n", - " with_att=True,\n", - " ):\n", - " super().__init__()\n", - " self.forecasters_num = forecasters_num\n", - " self.n_layers = len(dilation)\n", - " self.with_att = with_att\n", - " self.series_len = series_len\n", - " self.cnn_layers = nn.ModuleList(\n", - " self.create_cnn_layers(n_inputs, n_outputs, kernel_size, stride, dilation)\n", - " )\n", - " self.att_layers = attention_module(embed_dim=n_outputs[-1])\n", - " self.activation_layers = nn.GELU()\n", - " self.last_layer = nn.Linear(\n", - " int(series_len * n_outputs[-1]), self.forecasters_num\n", - " )\n", - "\n", - " def create_cnn_layers(self, n_inputs, n_outputs, kernel_size, stride, dilation):\n", - " \"\"\"Creates convolutional layers with padding\n", - " so that the output has the same length as input\"\"\"\n", - " return [\n", - " base_conv_layer(\n", - " in_f,\n", - " out_f,\n", - " k,\n", - " stride=s,\n", - " padding=calculate_matching_padding(\n", - " self.series_len, self.series_len, k, d, s\n", - " ),\n", - " dilation=d,\n", - " )\n", - " for in_f, out_f, k, s, d in zip(\n", - " n_inputs, n_outputs, kernel_size, stride, dilation\n", - " )\n", - " ]\n", - "\n", - " def get_mask_and_preds(self, prediction):\n", - " \"\"\"Get binary mask for predictions which\n", - " are not present and predicted values\"\"\"\n", - " return (\n", - " prediction[:, self.forecasters_num :],\n", - " prediction[:, : self.forecasters_num],\n", - " )\n", - "\n", - " def forward(self, batch):\n", - " \"\"\"model forward function\"\"\"\n", - " x, preds_to_ensemble = batch\n", - " for i in range(self.n_layers):\n", - " x = x.permute(0, 2, 1)\n", - " x = self.cnn_layers[i](x)\n", - " x = x.permute(0, 2, 1)\n", - " if i == self.n_layers - 1:\n", - " if self.with_att:\n", - " x, _ = self.att_layers(x, x, x)\n", - " x = self.activation_layers(x)\n", - "\n", - " x = torch.flatten(x, start_dim=1)\n", - " x = self.last_layer(x)\n", - " mask, preds = self.get_mask_and_preds(preds_to_ensemble)\n", - " x = masked_softmax(x, mask)\n", - " return torch.sum(preds * x, 1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3be22115", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([[-221.9459, 0.0000, 1.0000, 0.0000],\n", - " [-221.9459, 0.0000, 1.0000, 0.0000]])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x1 = torch.stack([x[0], x[0]])\n", - "x2 = torch.stack([x[1], x[1]]).squeeze()\n", - "x2" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2ad0a196", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([-221.9437, -221.9437], grad_fn=)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n = EnsemblerRegressorModel()\n", - "n((x1, x2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f60479d8", - "metadata": {}, - "outputs": [], - "source": [ - "def create_cnn_config():\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "122558e5", - "metadata": {}, - "outputs": [], - "source": [ - "class BaseCNNNetworkMask(nn.Module):\n", - " \"\"\"Dense CNN 1D network with softmax at the end\"\"\"\n", - " def __init__(self, num_feat=6, hist_len=15, pred_len=1, extra_feat=3):\n", - " super(BaseCNNNetworkMask, self).__init__()\n", - " self.extra_feat = extra_feat\n", - " self.num_feat = num_feat\n", - " self.hist_len = hist_len\n", - " self.pred_len = pred_len\n", - " n_inputs = [\n", - " self.num_feat,\n", - " 16,\n", - " ]\n", - " n_outputs = [16, 32]\n", - " kernel_size = [4, 4]\n", - " stride = [1, 1]\n", - " padding = [1, 2]\n", - " dilation = [1, 2]\n", - " self.n_layers = len(dilation)\n", - " layers = [\n", - " base_conv1_layer(in_f, out_f, k, stride=s, padding=p, dilation=d)\n", - " for in_f, out_f, k, s, p, d in zip(\n", - " n_inputs, n_outputs, kernel_size, stride, padding, dilation\n", - " )\n", - " ]\n", - " self.cnn_layers = nn.ModuleList(layers)\n", - " self.att_layers = nn.ModuleList(\n", - " [[attention_module(embed_dim=e_dim) for e_dim in n_outputs][-1]]\n", - " )\n", - " self.activation_layers = nn.ModuleList(\n", - " [nn.GELU() for _ in range(self.n_layers)]\n", - " )\n", - " self.last_layer = nn.Sequential(\n", - " nn.Linear(297, 128),\n", - " nn.BatchNorm1d(num_features=128),\n", - " nn.Linear(128, int((num_feat - self.extra_feat) // 2)),\n", - " )\n", - "\n", - " def forward(self, x):\n", - " org_x = x[\n", - " :,\n", - " self.hist_len :,\n", - " : -self.extra_feat - int((self.num_feat - self.extra_feat) // 2),\n", - " ]\n", - " mask = x[\n", - " :,\n", - " 0,\n", - " self.num_feat - int((self.num_feat - self.extra_feat) // 2) :,\n", - " ]\n", - " for i in range(self.n_layers):\n", - " x = x.permute(0, 2, 1)\n", - " x = self.cnn_layers[i](x)\n", - " x = x.permute(0, 2, 1)\n", - " if i >= self.n_layers:\n", - " x, _ = self.att_layers[0](x, x, x)\n", - " x = self.activation_layers[i](x)\n", - "\n", - " x = torch.flatten(x, start_dim=1)\n", - " x = torch.cat([x, org_x.squeeze(1)], 1)\n", - " x = self.last_layer(x)\n", - " x = masked_softmax(x, mask)\n", - " return torch.sum(org_x * x[:, None], 2)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cbf674cc", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.9" - }, - "latex_envs": { - "LaTeX_envs_menu_present": true, - "autoclose": false, - "autocomplete": true, - "bibliofile": "biblio.bib", - "cite_by": "apalike", - "current_citInitial": 1, - "eqLabelWithNumbers": true, - "eqNumInitial": 1, - "hotkeys": { - "equation": "Ctrl-E", - "itemize": "Ctrl-I" - }, - "labels_anchors": false, - "latex_user_defs": false, - "report_style_numbering": false, - "user_envs_cfg": false - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/deployment/ensembler/tests/__init__.py b/deployment/ensembler/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/deployment/ensembler/tests/test_ensembler.py b/deployment/ensembler/tests/test_ensembler.py new file mode 100644 index 00000000..586bf6b8 --- /dev/null +++ b/deployment/ensembler/tests/test_ensembler.py @@ -0,0 +1,5 @@ +from ensembler import __version__ + + +def test_version(): + assert __version__ == '0.1.0' -- GitLab