diff --git a/charts/nebulous-monitoring-data-persistor/templates/deployment.yaml b/charts/nebulous-monitoring-data-persistor/templates/deployment.yaml index a98305a..490f7a3 100644 --- a/charts/nebulous-monitoring-data-persistor/templates/deployment.yaml +++ b/charts/nebulous-monitoring-data-persistor/templates/deployment.yaml @@ -35,16 +35,18 @@ spec: imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http - containerPort: 8080 + containerPort: 8070 protocol: TCP livenessProbe: - httpGet: - path: / - port: http + exec: + command: + - ls + - /home readinessProbe: - httpGet: - path: / - port: http + exec: + command: + - ls + - /home resources: {{- toYaml .Values.resources | nindent 12 }} {{- with .Values.nodeSelector }} diff --git a/charts/nebulous-monitoring-data-persistor/values.yaml b/charts/nebulous-monitoring-data-persistor/values.yaml index 79fa413..7ac398f 100644 --- a/charts/nebulous-monitoring-data-persistor/values.yaml +++ b/charts/nebulous-monitoring-data-persistor/values.yaml @@ -5,7 +5,7 @@ replicaCount: 1 image: - repository: "quay.io/nebulous/monitoring-data-persistor-java-spring-boot-demo" + repository: "quay.io/nebulous/monitoring-data-persistor-monitoring-data-persistor" pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "" diff --git a/monitoring-data-persistor/Dockerfile b/monitoring-data-persistor/Dockerfile new file mode 100644 index 0000000..8b0530c --- /dev/null +++ b/monitoring-data-persistor/Dockerfile @@ -0,0 +1,42 @@ +# Copyright (c) 2023 Institute of Communication and Computer Systems +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +FROM python:3.11 as source +#RUN pip install --no-cache-dir --upgrade pip + +RUN mkdir /src +COPY ./src/ /src/ +WORKDIR /src +RUN pip install --no-cache-dir -r requirements.txt && python3 setup.py sdist +#RUN ls ./dist/ + + +FROM ubuntu:noble + +ENV TZ=Europe/Athens +ENV VERSION=1.0.0 +ENV LOG_FILE=monitoring_data_persistor.log + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install --no-install-recommends -y \ +libffi8=3.4.4-2 \ +build-essential=12.10ubuntu1 \ +libssl-dev=3.0.10-1ubuntu3 \ +libffi-dev=3.4.4-2 \ +python3-dev=3.11.4-5ubuntu1 \ +python3=3.11.4-5ubuntu1 \ +python3.11-venv=3.11.7-2 \ +python3-pip=23.3+dfsg-1 \ +&& rm -rf /var/lib/apt/lists/* + +COPY --from=source ./src/dist/monitoring-data-persistor-$VERSION.tar.gz /home/ +COPY ./ /home/monitoring-data-persistor-$VERSION +WORKDIR /home +RUN python3 -m venv monitoring-data-env && /bin/sh -c ". monitoring-data-env/bin/activate && pip install --no-cache-dir /home/monitoring-data-persistor-$VERSION.tar.gz" +RUN tar -xzvf /home/monitoring-data-persistor-$VERSION.tar.gz && /bin/sh -c ". monitoring-data-env/bin/activate && pip install --no-cache-dir -r /home/monitoring-data-persistor-$VERSION/src/requirements.txt" +#RUN bash -x /home/monitoring-data-persistor-$VERSION/src/prepare_project_code.sh +#COPY ./ /home/monitoring-data-persistor +CMD ["/bin/sh","-c",". monitoring-data-env/bin/activate && python3 -u /home/monitoring-data-persistor-$VERSION/src/main/runtime/DataPersistor.py /home/monitoring-data-persistor-$VERSION/src/resources/config.properties 2>&1 > $LOG_FILE "] \ No newline at end of file diff --git a/monitoring-data-persistor/README.md b/monitoring-data-persistor/README.md new file mode 100644 index 0000000..d9334c7 --- /dev/null +++ b/monitoring-data-persistor/README.md @@ -0,0 +1,14 @@ +### Necessary steps: +To further develop the component, some changes might be needed. Specifically, the NEBULOUS_BASE_NAME might need to be changed in the library code connecting the component with the broker. + + +### Interacting with the influx cli: + +```bash +influx config create --config-name nebulous_conf \ + --host-url http://localhost:8086 \ + --org nebulous \ + --token tq5pA5uyt3pk65g9fALRZbMXCNg-81bDXuWK3NmjAyQN-t_cT3zFAbHzhtSeX83mJ1PqwZmeXALfKfdvDlGhVQ== \ + --active + +``` \ No newline at end of file diff --git a/monitoring-data-persistor/random_data.csv b/monitoring-data-persistor/random_data.csv new file mode 100644 index 0000000..de87da7 --- /dev/null +++ b/monitoring-data-persistor/random_data.csv @@ -0,0 +1,3601 @@ +_time,_value +1703258127000,19.21190363185365 +1703258128000,13.278604235713393 +1703258129000,15.797742865132776 +1703258130000,11.29031751446033 +1703258131000,19.17174835828763 +1703258132000,17.054563108314937 +1703258133000,13.444665304456752 +1703258134000,19.753887757242314 +1703258135000,13.577949900180549 +1703258136000,10.713052860326567 +1703258137000,18.769850865291634 +1703258138000,16.58055341159185 +1703258139000,18.252810292755385 +1703258140000,18.334606201118852 +1703258141000,12.542955552800866 +1703258142000,12.296939038559707 +1703258143000,16.606622167620806 +1703258144000,17.594968387660384 +1703258145000,19.231761197459015 +1703258146000,18.254023773904088 +1703258147000,19.569179814816252 +1703258148000,14.665601158895548 +1703258149000,13.917680830401006 +1703258150000,12.10732401681059 +1703258151000,10.46332230918835 +1703258152000,17.257597942152827 +1703258153000,11.323385509000731 +1703258154000,12.490011032947907 +1703258155000,11.630994165746772 +1703258156000,12.311236913146834 +1703258157000,18.17805615097038 +1703258158000,19.315147142100862 +1703258159000,17.63694693921463 +1703258160000,19.221268472280208 +1703258161000,18.987457644298296 +1703258162000,12.129084626699196 +1703258163000,14.784228751028738 +1703258164000,10.78000369812711 +1703258165000,12.735709264455284 +1703258166000,16.594187892685447 +1703258167000,14.366417560032751 +1703258168000,12.552557278457806 +1703258169000,11.936943872122562 +1703258170000,10.034036002339604 +1703258171000,18.04321253826896 +1703258172000,14.70170958188483 +1703258173000,17.222471241630654 +1703258174000,15.246878950853326 +1703258175000,17.51364783865999 +1703258176000,10.46387955451768 +1703258177000,17.054278383793395 +1703258178000,10.29609999818542 +1703258179000,15.099519824599247 +1703258180000,11.489075505913615 +1703258181000,16.607715150998683 +1703258182000,16.699785291644442 +1703258183000,19.87561034385444 +1703258184000,17.866555467606105 +1703258185000,10.278471485986456 +1703258186000,18.540115598178563 +1703258187000,12.266551541886866 +1703258188000,18.610223926954077 +1703258189000,16.445311761219564 +1703258190000,19.71115587050587 +1703258191000,18.511432350888903 +1703258192000,19.879035704926615 +1703258193000,18.752395508784844 +1703258194000,16.938724798726206 +1703258195000,15.832177200416579 +1703258196000,12.0663716818685 +1703258197000,19.37984802440664 +1703258198000,13.109331690703169 +1703258199000,18.18917743878538 +1703258200000,11.654053353467246 +1703258201000,15.812464069537707 +1703258202000,12.414070384659954 +1703258203000,10.877875986920763 +1703258204000,11.73495726480531 +1703258205000,17.418256853163058 +1703258206000,19.808063768503082 +1703258207000,17.704567885541408 +1703258208000,18.001269348454485 +1703258209000,11.766994502895079 +1703258210000,13.932779808751613 +1703258211000,14.6180089019206 +1703258212000,19.5598080301734 +1703258213000,14.699525993312758 +1703258214000,12.764602642078454 +1703258215000,14.235510245767443 +1703258216000,13.683571222018669 +1703258217000,18.710556408170525 +1703258218000,14.124694159060695 +1703258219000,13.3993970018706 +1703258220000,19.954189117731453 +1703258221000,17.103988176901986 +1703258222000,17.94634348513125 +1703258223000,12.397097957857394 +1703258224000,16.29435136570989 +1703258225000,19.798908327864844 +1703258226000,11.840245798792976 +1703258227000,12.769897155926722 +1703258228000,11.705194821530675 +1703258229000,13.51558301080766 +1703258230000,13.019673428584117 +1703258231000,16.875186817768604 +1703258232000,15.44340517729384 +1703258233000,15.125400825550948 +1703258234000,19.113753087315843 +1703258235000,19.776093455063847 +1703258236000,13.204433458944315 +1703258237000,11.99019395480315 +1703258238000,18.875000228337825 +1703258239000,11.695889266084036 +1703258240000,17.50893252094044 +1703258241000,13.641025894284613 +1703258242000,12.346984981433033 +1703258243000,18.485676950511177 +1703258244000,19.343472321422606 +1703258245000,16.007394113326463 +1703258246000,17.024509711859928 +1703258247000,16.680183529485355 +1703258248000,18.69656195445574 +1703258249000,18.5944359802984 +1703258250000,16.06598388702173 +1703258251000,15.110364185968805 +1703258252000,13.881892016059194 +1703258253000,17.61161337567195 +1703258254000,14.699762452211157 +1703258255000,14.183516088692574 +1703258256000,13.937229573538653 +1703258257000,10.436821381809347 +1703258258000,19.155247132861582 +1703258259000,17.070154031384916 +1703258260000,19.297689404079705 +1703258261000,13.676825095858272 +1703258262000,18.182258764551253 +1703258263000,14.842937968531736 +1703258264000,19.813907174137825 +1703258265000,19.97230469677612 +1703258266000,16.08634128302611 +1703258267000,12.75533065002703 +1703258268000,12.836416689228427 +1703258269000,10.125508797056606 +1703258270000,17.16639298058852 +1703258271000,10.278505886956388 +1703258272000,13.390214999111443 +1703258273000,14.54104681368096 +1703258274000,13.747929524427382 +1703258275000,11.29474213498659 +1703258276000,19.955886712813705 +1703258277000,10.918837183153135 +1703258278000,16.539164049280025 +1703258279000,13.954610650051329 +1703258280000,10.625535320459427 +1703258281000,14.727560103039654 +1703258282000,14.641024780113867 +1703258283000,11.944044686240048 +1703258284000,17.09794476870957 +1703258285000,15.049687807695161 +1703258286000,17.629178820018875 +1703258287000,12.244639256259621 +1703258288000,13.064879484956196 +1703258289000,17.347656043685173 +1703258290000,11.756735446730021 +1703258291000,14.914885837269008 +1703258292000,19.756376059422355 +1703258293000,19.31766365474114 +1703258294000,11.99268614412725 +1703258295000,11.03095223014555 +1703258296000,11.73076693975151 +1703258297000,19.445353093692063 +1703258298000,11.892770675082069 +1703258299000,18.167344896674283 +1703258300000,17.596069024920094 +1703258301000,14.956569542017027 +1703258302000,17.384668049734564 +1703258303000,17.547131666408703 +1703258304000,16.138132500754907 +1703258305000,12.567939526958078 +1703258306000,19.615088931258207 +1703258307000,13.605720111054037 +1703258308000,18.616462890016752 +1703258309000,15.24348146364538 +1703258310000,17.52437190757121 +1703258311000,16.869112076608452 +1703258312000,13.921199224697633 +1703258313000,11.854781154983128 +1703258314000,15.677565587210482 +1703258315000,18.507451935271135 +1703258316000,16.89276755171886 +1703258317000,10.57221607604615 +1703258318000,12.92761472130298 +1703258319000,16.28130312710391 +1703258320000,10.287879146047874 +1703258321000,14.204651077127952 +1703258322000,14.894153474851674 +1703258323000,13.394154545101276 +1703258324000,18.602880746518167 +1703258325000,10.35826054892958 +1703258326000,14.768073672260838 +1703258327000,16.262494036144943 +1703258328000,11.685766497910553 +1703258329000,11.989000477522234 +1703258330000,14.842670695724564 +1703258331000,13.56613087493778 +1703258332000,19.119776941401426 +1703258333000,10.496595261634397 +1703258334000,15.658613802917564 +1703258335000,13.69355612801229 +1703258336000,12.209156219872344 +1703258337000,11.783134078016884 +1703258338000,18.105895652201827 +1703258339000,15.383035438744624 +1703258340000,16.230345200173467 +1703258341000,12.547656345063569 +1703258342000,17.539865446800647 +1703258343000,17.619253844875267 +1703258344000,11.469964321797853 +1703258345000,12.311381196674175 +1703258346000,19.883543705896283 +1703258347000,17.235267977632134 +1703258348000,12.674132056590643 +1703258349000,14.593428013352767 +1703258350000,19.57027690286496 +1703258351000,16.063792588461155 +1703258352000,19.457906607284187 +1703258353000,16.048890894541618 +1703258354000,13.042837218457226 +1703258355000,15.315049768736367 +1703258356000,19.686498479609515 +1703258357000,19.993434293875477 +1703258358000,12.078336998045561 +1703258359000,13.207963670664487 +1703258360000,10.973788977034896 +1703258361000,18.778865989468482 +1703258362000,19.426072629551104 +1703258363000,11.477493043633785 +1703258364000,19.008562261109564 +1703258365000,19.900505204434126 +1703258366000,19.05143873263693 +1703258367000,11.368216554958995 +1703258368000,15.94730192291839 +1703258369000,15.938569057335563 +1703258370000,17.95344608143955 +1703258371000,19.460419662393928 +1703258372000,19.052102857793223 +1703258373000,16.75285433658933 +1703258374000,11.654959170172972 +1703258375000,18.658843426137473 +1703258376000,12.545727955270088 +1703258377000,19.06416614943044 +1703258378000,18.823846817894726 +1703258379000,10.505513543225103 +1703258380000,10.640643261304213 +1703258381000,15.822166545546107 +1703258382000,19.488760056936584 +1703258383000,15.045219836850455 +1703258384000,12.535201559260916 +1703258385000,12.450313896937391 +1703258386000,15.216486678197327 +1703258387000,10.836978268116187 +1703258388000,18.211961773602496 +1703258389000,18.64135495678622 +1703258390000,14.424930143605842 +1703258391000,16.95539615517663 +1703258392000,15.199637609243121 +1703258393000,11.881524371918871 +1703258394000,16.475422319732886 +1703258395000,15.085912326881223 +1703258396000,10.125095705561725 +1703258397000,10.887618154509974 +1703258398000,13.345142105480084 +1703258399000,14.192610824391014 +1703258400000,13.899092096070312 +1703258401000,12.484066947305212 +1703258402000,10.512636652636875 +1703258403000,13.881062181555212 +1703258404000,19.654822134697042 +1703258405000,15.333898721661072 +1703258406000,12.263475493483085 +1703258407000,11.182707813621839 +1703258408000,12.284557491685888 +1703258409000,16.652138641554743 +1703258410000,18.44920962830973 +1703258411000,10.67368593811244 +1703258412000,10.343239250977092 +1703258413000,12.715113641657926 +1703258414000,13.69755535479115 +1703258415000,10.758477513014286 +1703258416000,10.551643826115452 +1703258417000,17.251827970518548 +1703258418000,13.331910245786542 +1703258419000,18.84942821584204 +1703258420000,10.647370047552098 +1703258421000,18.46326802334483 +1703258422000,18.711491097448974 +1703258423000,11.19058950556412 +1703258424000,18.10693649506819 +1703258425000,12.392221632656735 +1703258426000,17.257015503452635 +1703258427000,13.874746062067713 +1703258428000,11.99288382410383 +1703258429000,17.79445676524439 +1703258430000,19.65249863431222 +1703258431000,13.245721364199689 +1703258432000,16.73204997263025 +1703258433000,16.213188919102233 +1703258434000,13.11954706587301 +1703258435000,15.38042475415038 +1703258436000,15.49913413610402 +1703258437000,16.682420130509332 +1703258438000,18.727666847347372 +1703258439000,12.30105977844665 +1703258440000,10.16892897823566 +1703258441000,12.876434422664175 +1703258442000,18.1849428568377 +1703258443000,15.602962579048446 +1703258444000,18.256720045148874 +1703258445000,16.505526830802378 +1703258446000,15.333384733213489 +1703258447000,17.520620234574622 +1703258448000,19.64805117626591 +1703258449000,19.15138156802393 +1703258450000,14.049012773035782 +1703258451000,17.25223474413209 +1703258452000,10.465113834917606 +1703258453000,10.741327774780281 +1703258454000,17.536055429607046 +1703258455000,18.082232709488657 +1703258456000,12.40416046013374 +1703258457000,18.5221774085926 +1703258458000,17.13990965467756 +1703258459000,18.56046455271319 +1703258460000,11.044152110137617 +1703258461000,18.64887623108474 +1703258462000,18.79389955500093 +1703258463000,10.256825404249357 +1703258464000,14.750036281168098 +1703258465000,10.091203542838423 +1703258466000,18.88122329809599 +1703258467000,16.31608858156961 +1703258468000,12.567173032302623 +1703258469000,14.868898609126402 +1703258470000,19.750974610540744 +1703258471000,19.25789393579515 +1703258472000,18.622546152926766 +1703258473000,19.073581849676607 +1703258474000,15.884158982059574 +1703258475000,17.813969029220793 +1703258476000,13.904098204332248 +1703258477000,13.582105303949177 +1703258478000,19.19987176225515 +1703258479000,15.452902580536282 +1703258480000,10.600243063614144 +1703258481000,10.719423002888714 +1703258482000,10.399124658233482 +1703258483000,18.314021168924434 +1703258484000,15.482174101147729 +1703258485000,15.303974964582137 +1703258486000,17.842030198223327 +1703258487000,15.770513765152058 +1703258488000,18.795227439716378 +1703258489000,17.870023152334127 +1703258490000,19.091251522843095 +1703258491000,10.73199029370931 +1703258492000,11.590499543353694 +1703258493000,18.63244468913362 +1703258494000,16.426249101041233 +1703258495000,16.074876231679802 +1703258496000,14.742149306650951 +1703258497000,18.184222467169732 +1703258498000,15.566600487087126 +1703258499000,19.189846133079268 +1703258500000,11.338200792988992 +1703258501000,12.180243349941964 +1703258502000,10.606478106816306 +1703258503000,17.84819272850463 +1703258504000,11.963788263116156 +1703258505000,19.599460482631592 +1703258506000,10.795325102820662 +1703258507000,19.777230374436133 +1703258508000,14.115462931577355 +1703258509000,10.235961148907762 +1703258510000,15.072115401092304 +1703258511000,12.736182279732962 +1703258512000,12.033838347312418 +1703258513000,12.546291804203648 +1703258514000,17.79336258234393 +1703258515000,17.357108912443124 +1703258516000,19.314073983128033 +1703258517000,11.011193812616892 +1703258518000,16.426421888924708 +1703258519000,16.190637989816373 +1703258520000,16.568583191758137 +1703258521000,15.370087285983887 +1703258522000,16.43856205308245 +1703258523000,16.84026975616854 +1703258524000,14.245797235395946 +1703258525000,13.736818320517614 +1703258526000,12.461741452434772 +1703258527000,11.787748186491283 +1703258528000,15.811976285675101 +1703258529000,12.541162000765624 +1703258530000,16.512403860219244 +1703258531000,15.75511633060908 +1703258532000,10.499156978706367 +1703258533000,17.875619253547832 +1703258534000,16.312966468673025 +1703258535000,11.443679174323394 +1703258536000,16.680105972547494 +1703258537000,17.31108582940103 +1703258538000,10.717328647112241 +1703258539000,11.647104846256054 +1703258540000,15.003204097748938 +1703258541000,14.895918534096733 +1703258542000,12.602787411387649 +1703258543000,10.133758381772083 +1703258544000,12.841858516970312 +1703258545000,10.514005265881858 +1703258546000,13.482680746740268 +1703258547000,10.839005051851275 +1703258548000,10.511073329184867 +1703258549000,18.344733665523886 +1703258550000,13.102114946480103 +1703258551000,12.119936012901661 +1703258552000,18.919399580895565 +1703258553000,12.66308665983013 +1703258554000,18.058253834363253 +1703258555000,17.93260137593559 +1703258556000,15.165513974765618 +1703258557000,11.705761675850153 +1703258558000,16.077511549133536 +1703258559000,17.105670605073044 +1703258560000,15.605753737011463 +1703258561000,10.034275893759338 +1703258562000,11.723158879269539 +1703258563000,10.149095985968277 +1703258564000,15.5150617064604 +1703258565000,16.18785575539137 +1703258566000,12.66187169954522 +1703258567000,17.41151233131082 +1703258568000,14.871815885210506 +1703258569000,12.772499197399922 +1703258570000,16.261887520786587 +1703258571000,16.468686320916962 +1703258572000,14.841583836869834 +1703258573000,17.982748245135028 +1703258574000,17.797265059308923 +1703258575000,15.85596506097838 +1703258576000,13.350127853115767 +1703258577000,19.403410064368565 +1703258578000,16.787400846301246 +1703258579000,11.257038249036933 +1703258580000,11.891785405701324 +1703258581000,10.906616859679577 +1703258582000,16.77626444960586 +1703258583000,13.06109003153401 +1703258584000,18.69137422361291 +1703258585000,13.24579173298393 +1703258586000,11.729614912386644 +1703258587000,10.102020308432358 +1703258588000,13.530214677563103 +1703258589000,19.81991935943485 +1703258590000,13.880176438827952 +1703258591000,15.006077931010857 +1703258592000,15.686344098816349 +1703258593000,16.154226695934195 +1703258594000,18.097841177555566 +1703258595000,15.28587014268283 +1703258596000,18.268076887115967 +1703258597000,17.629460835648306 +1703258598000,16.230556824975295 +1703258599000,19.577529243341488 +1703258600000,10.662544523030753 +1703258601000,17.186955848279673 +1703258602000,17.7829308976248 +1703258603000,17.752827535274697 +1703258604000,12.439043754493287 +1703258605000,13.134258327105407 +1703258606000,10.155799134167342 +1703258607000,14.03353674056627 +1703258608000,18.3835412885729 +1703258609000,17.247501785328616 +1703258610000,13.99275838522016 +1703258611000,18.473670446752337 +1703258612000,14.000789422845978 +1703258613000,14.968869727834715 +1703258614000,14.398619815071442 +1703258615000,10.002139686323687 +1703258616000,14.888550333497502 +1703258617000,14.881639991057163 +1703258618000,16.477621801531768 +1703258619000,15.085370207560434 +1703258620000,11.640125807976316 +1703258621000,19.23191866972789 +1703258622000,16.54055562872165 +1703258623000,16.799891568706457 +1703258624000,12.711738185786174 +1703258625000,10.747074634823756 +1703258626000,10.153712844239791 +1703258627000,10.795517379416564 +1703258628000,17.921559818541102 +1703258629000,19.518788725239943 +1703258630000,14.017143219876917 +1703258631000,18.25542374709388 +1703258632000,11.66720096466116 +1703258633000,12.161549729343601 +1703258634000,12.635863075220158 +1703258635000,15.588225382191844 +1703258636000,18.394021155970417 +1703258637000,18.03328577657964 +1703258638000,19.517382645891526 +1703258639000,15.163363349486481 +1703258640000,11.417520609689852 +1703258641000,13.938702877998775 +1703258642000,14.947480682480498 +1703258643000,19.16234841828582 +1703258644000,11.206015313040453 +1703258645000,13.29747791222238 +1703258646000,11.432498932355443 +1703258647000,11.836493646307915 +1703258648000,11.0622428966246 +1703258649000,11.360660816866918 +1703258650000,17.714974461749478 +1703258651000,13.621882544521448 +1703258652000,18.063183774767793 +1703258653000,18.628086938044923 +1703258654000,16.332753493017137 +1703258655000,16.70332337547146 +1703258656000,15.583013748156903 +1703258657000,10.455661371108423 +1703258658000,16.86151392822321 +1703258659000,15.688174136234382 +1703258660000,15.816537026671739 +1703258661000,11.495485776633727 +1703258662000,17.957945336244702 +1703258663000,15.792667491417307 +1703258664000,19.251127629537557 +1703258665000,13.210611880969275 +1703258666000,19.19390214836997 +1703258667000,19.185109454472485 +1703258668000,14.59481871783734 +1703258669000,16.548610521188508 +1703258670000,18.962076540125757 +1703258671000,15.798452779388686 +1703258672000,15.001887168893262 +1703258673000,18.20648579929088 +1703258674000,15.624204002342314 +1703258675000,13.715920109329353 +1703258676000,11.064366062818081 +1703258677000,10.401994155802113 +1703258678000,14.34774536133903 +1703258679000,19.24638405483941 +1703258680000,19.05037623338535 +1703258681000,12.888614241600449 +1703258682000,11.892178671030427 +1703258683000,17.42661187557429 +1703258684000,12.139821165182006 +1703258685000,18.871888248800413 +1703258686000,13.100138356633655 +1703258687000,13.808441962996525 +1703258688000,19.697501726295112 +1703258689000,11.670024330024514 +1703258690000,19.323635270589246 +1703258691000,19.137430186325645 +1703258692000,14.374977561680321 +1703258693000,15.710554213490857 +1703258694000,15.438658592284247 +1703258695000,16.8970826535948 +1703258696000,10.747479020283995 +1703258697000,15.842517325228556 +1703258698000,11.929395106569133 +1703258699000,18.00767959683718 +1703258700000,13.91574587113299 +1703258701000,12.6141173266114 +1703258702000,17.251400487845668 +1703258703000,13.712383424236155 +1703258704000,19.089550187149335 +1703258705000,16.28499831022913 +1703258706000,13.877467224091168 +1703258707000,10.032893734508628 +1703258708000,12.877842877638077 +1703258709000,15.261921973874408 +1703258710000,13.237775714906462 +1703258711000,15.166839192907794 +1703258712000,18.53287569941599 +1703258713000,13.47982973170014 +1703258714000,11.406606421949842 +1703258715000,18.433872398892113 +1703258716000,19.143003010797536 +1703258717000,19.838114150714745 +1703258718000,18.329367744606238 +1703258719000,18.921753133302623 +1703258720000,13.003877720464569 +1703258721000,13.35902758164057 +1703258722000,16.945944850836042 +1703258723000,14.422105091929419 +1703258724000,13.625319460185887 +1703258725000,13.17478765801977 +1703258726000,13.520151444839206 +1703258727000,19.379683486630462 +1703258728000,19.174200252200635 +1703258729000,17.72469264701322 +1703258730000,19.942308399075056 +1703258731000,17.086290923910184 +1703258732000,19.07479306471898 +1703258733000,15.636739328724513 +1703258734000,12.63934435288548 +1703258735000,13.777017926599537 +1703258736000,19.236561064908244 +1703258737000,12.16501368370472 +1703258738000,18.26629373432693 +1703258739000,19.368369337301047 +1703258740000,15.910169694844905 +1703258741000,17.869432432201904 +1703258742000,12.608275594895098 +1703258743000,19.173134709782534 +1703258744000,14.104686925509107 +1703258745000,19.322696749276197 +1703258746000,12.727340470267308 +1703258747000,13.14425710946954 +1703258748000,13.848327807632772 +1703258749000,12.953015581298082 +1703258750000,19.96317761689778 +1703258751000,19.455454813502897 +1703258752000,11.105626554489431 +1703258753000,13.104451060128365 +1703258754000,19.673148009306423 +1703258755000,11.148191453259818 +1703258756000,18.375566871011742 +1703258757000,15.651380985975553 +1703258758000,15.144804871197877 +1703258759000,10.906231335768226 +1703258760000,15.18972876689448 +1703258761000,19.125769523650327 +1703258762000,12.523875937746585 +1703258763000,19.88343225536788 +1703258764000,19.123271782834614 +1703258765000,14.626396874499298 +1703258766000,11.782181891270863 +1703258767000,10.101184729530482 +1703258768000,14.472530102230142 +1703258769000,16.25715561825299 +1703258770000,13.837532470409805 +1703258771000,16.259776742676642 +1703258772000,16.456046315482546 +1703258773000,18.81459750551457 +1703258774000,13.846407909959105 +1703258775000,10.902830836075903 +1703258776000,19.428442596094925 +1703258777000,11.945675146044865 +1703258778000,17.926505821067686 +1703258779000,12.016980609621926 +1703258780000,16.27069220545918 +1703258781000,10.635687503227642 +1703258782000,14.211446764280678 +1703258783000,11.59133009001093 +1703258784000,17.065928748326236 +1703258785000,16.641169546367074 +1703258786000,11.425153028490003 +1703258787000,18.49752845721156 +1703258788000,12.046144246316931 +1703258789000,17.52810168086598 +1703258790000,13.878386868782894 +1703258791000,16.971678643539924 +1703258792000,13.440044633964492 +1703258793000,14.227339309778328 +1703258794000,18.475175113801455 +1703258795000,13.056935643986964 +1703258796000,11.853649298575572 +1703258797000,16.142359236065275 +1703258798000,16.803001519563566 +1703258799000,11.086505204222673 +1703258800000,12.413518647913426 +1703258801000,17.171380275407248 +1703258802000,14.94503921066719 +1703258803000,10.50995685520968 +1703258804000,18.524917166521895 +1703258805000,13.164084717436499 +1703258806000,17.162506950728478 +1703258807000,18.13029366277656 +1703258808000,12.203289921715676 +1703258809000,13.273734505621437 +1703258810000,18.27969018805399 +1703258811000,19.489463784548708 +1703258812000,13.391060218606404 +1703258813000,11.14508488801932 +1703258814000,17.50274954921995 +1703258815000,17.0782848263371 +1703258816000,13.532984183418094 +1703258817000,15.619129418722427 +1703258818000,14.56692444331038 +1703258819000,14.537076675548315 +1703258820000,16.678008676000626 +1703258821000,11.016463233833056 +1703258822000,13.097667880348084 +1703258823000,11.797001686404625 +1703258824000,16.62751580345243 +1703258825000,12.873736125275379 +1703258826000,17.657716416846302 +1703258827000,17.996732635430416 +1703258828000,19.4591780517978 +1703258829000,14.489154573221873 +1703258830000,17.14337892027103 +1703258831000,16.01492539935775 +1703258832000,15.19578007751387 +1703258833000,16.74073983765001 +1703258834000,13.584263875484279 +1703258835000,11.639191397305755 +1703258836000,18.77678874912455 +1703258837000,12.90214238346621 +1703258838000,14.945308844142609 +1703258839000,13.7088624001346 +1703258840000,15.708571969056077 +1703258841000,18.27683248511742 +1703258842000,16.8336431785508 +1703258843000,15.646457257355355 +1703258844000,14.569723163132736 +1703258845000,14.229091036896815 +1703258846000,10.542860136735758 +1703258847000,19.947262067025335 +1703258848000,15.066768945724998 +1703258849000,15.7428626639031 +1703258850000,15.805732326721307 +1703258851000,17.132689117313493 +1703258852000,14.639200548417818 +1703258853000,15.497636368307894 +1703258854000,19.683906802315636 +1703258855000,12.481333462109259 +1703258856000,14.376498781643383 +1703258857000,11.475565128335539 +1703258858000,19.484415128978483 +1703258859000,12.118237159867252 +1703258860000,15.874700907764765 +1703258861000,13.26812200292844 +1703258862000,15.162839495992682 +1703258863000,15.619312456970746 +1703258864000,17.49680700870548 +1703258865000,18.742613976458017 +1703258866000,12.386937620593653 +1703258867000,13.192572138600694 +1703258868000,19.611907334542387 +1703258869000,19.659464845796983 +1703258870000,10.758962234287894 +1703258871000,18.399756188581875 +1703258872000,18.90814890115607 +1703258873000,14.846700611996448 +1703258874000,17.35494182051444 +1703258875000,19.035752815580086 +1703258876000,17.281572649501697 +1703258877000,19.732644610421396 +1703258878000,18.997458702407403 +1703258879000,10.609139633851077 +1703258880000,14.15046883270156 +1703258881000,19.29507457536437 +1703258882000,11.137947944092977 +1703258883000,15.900691969624177 +1703258884000,10.519200911300214 +1703258885000,15.69154104121841 +1703258886000,19.542266760370815 +1703258887000,11.227132019700587 +1703258888000,16.07515470527219 +1703258889000,14.901128024817027 +1703258890000,19.21845447869689 +1703258891000,18.912621558297985 +1703258892000,11.060252102629368 +1703258893000,17.32922788850855 +1703258894000,16.11443323946798 +1703258895000,16.600064339789235 +1703258896000,18.60580012145743 +1703258897000,16.876496491912043 +1703258898000,12.061476928352427 +1703258899000,14.46252492172519 +1703258900000,18.98849307952743 +1703258901000,16.279158756619267 +1703258902000,18.490238564427628 +1703258903000,15.466719018230286 +1703258904000,12.769261538031248 +1703258905000,13.100159746109439 +1703258906000,17.713479587330937 +1703258907000,11.383878871629715 +1703258908000,14.353746777591772 +1703258909000,19.18493104417096 +1703258910000,18.634187103475327 +1703258911000,17.918752852222653 +1703258912000,18.583668610531646 +1703258913000,15.577854647051492 +1703258914000,19.415925655687932 +1703258915000,15.874648861546184 +1703258916000,10.030475981774611 +1703258917000,14.0050610447407 +1703258918000,14.723797921392407 +1703258919000,12.791169661911237 +1703258920000,12.730575562144633 +1703258921000,11.602004263646222 +1703258922000,17.50894331194945 +1703258923000,18.709546801455254 +1703258924000,19.47007512176649 +1703258925000,16.410762439110453 +1703258926000,10.913654241578659 +1703258927000,19.230294440023428 +1703258928000,11.500968556346528 +1703258929000,11.378287055755784 +1703258930000,13.653790215732316 +1703258931000,18.188692631276076 +1703258932000,19.30915290622256 +1703258933000,16.064047048044827 +1703258934000,11.919836701237061 +1703258935000,18.321112780587445 +1703258936000,18.558671461065252 +1703258937000,12.191926621571683 +1703258938000,14.075944843320679 +1703258939000,17.856677518035674 +1703258940000,13.848950071567184 +1703258941000,19.803338101613875 +1703258942000,13.962685207262073 +1703258943000,12.2178329262345 +1703258944000,14.370155380954762 +1703258945000,13.573677091434444 +1703258946000,17.6869088995909 +1703258947000,10.571904242823543 +1703258948000,16.57850792059343 +1703258949000,13.54817911941035 +1703258950000,19.994580773396503 +1703258951000,16.553263633014975 +1703258952000,17.222055070384723 +1703258953000,17.167772905065 +1703258954000,12.45147241758944 +1703258955000,14.135917606822717 +1703258956000,16.63056646481853 +1703258957000,12.148373292138437 +1703258958000,18.607236022544214 +1703258959000,14.219324615805634 +1703258960000,12.771515596461722 +1703258961000,14.461104291584519 +1703258962000,11.721085801907691 +1703258963000,15.676036157962246 +1703258964000,18.916681829171715 +1703258965000,15.343346465719137 +1703258966000,18.190841610622584 +1703258967000,10.091627905049464 +1703258968000,13.822797931512126 +1703258969000,14.584837065142079 +1703258970000,10.88674554386705 +1703258971000,11.736939444268103 +1703258972000,16.284513570477902 +1703258973000,17.770991657954205 +1703258974000,18.158825963012383 +1703258975000,17.936515914808105 +1703258976000,19.459919525616932 +1703258977000,17.176792899252092 +1703258978000,13.519489044112479 +1703258979000,18.73442754156818 +1703258980000,11.798003892752682 +1703258981000,11.871823161782833 +1703258982000,14.579304817772163 +1703258983000,19.34348126433534 +1703258984000,11.879327173347127 +1703258985000,11.248304136025292 +1703258986000,12.406864970256688 +1703258987000,16.762238308614684 +1703258988000,15.533340411033391 +1703258989000,17.21949061764414 +1703258990000,19.267081333159837 +1703258991000,13.322903396741744 +1703258992000,17.15376034027648 +1703258993000,11.809541098733115 +1703258994000,17.382102949145818 +1703258995000,16.85461924602696 +1703258996000,10.921201020239886 +1703258997000,19.46327001921997 +1703258998000,14.178553359466603 +1703258999000,14.139827402051157 +1703259000000,15.222430473570396 +1703259001000,14.624390120002248 +1703259002000,14.902379784753926 +1703259003000,12.198670035515462 +1703259004000,17.028252595613843 +1703259005000,12.10062265181125 +1703259006000,14.280623946222342 +1703259007000,17.244485658136828 +1703259008000,13.874550496534347 +1703259009000,12.682626395214436 +1703259010000,12.763697875613557 +1703259011000,14.039004312543177 +1703259012000,12.252284945943579 +1703259013000,18.854268812330957 +1703259014000,16.999170496053864 +1703259015000,12.627773182067434 +1703259016000,17.19152424668158 +1703259017000,11.241555101737774 +1703259018000,16.80867177904488 +1703259019000,17.569299789018224 +1703259020000,18.669956314894776 +1703259021000,17.85560968956812 +1703259022000,16.18083071129061 +1703259023000,10.828594527553236 +1703259024000,11.178833526598304 +1703259025000,15.744713768390069 +1703259026000,14.456242133888104 +1703259027000,12.918671616784334 +1703259028000,14.384684189070112 +1703259029000,14.056651265297361 +1703259030000,19.54915577056409 +1703259031000,11.501963813753317 +1703259032000,11.75794679610359 +1703259033000,17.87743144816912 +1703259034000,14.711734462951942 +1703259035000,13.910086255516184 +1703259036000,14.774742833520047 +1703259037000,10.367224963332365 +1703259038000,10.28852975644707 +1703259039000,19.039385082462438 +1703259040000,15.888249394163237 +1703259041000,15.406435004572657 +1703259042000,14.64960712288176 +1703259043000,16.80611895361737 +1703259044000,12.440356199213571 +1703259045000,12.200919801019083 +1703259046000,19.673607070458548 +1703259047000,18.68646584913794 +1703259048000,16.71282018140446 +1703259049000,19.55226611722831 +1703259050000,12.759232213365244 +1703259051000,12.194952514250286 +1703259052000,16.03390564188765 +1703259053000,12.767919621439521 +1703259054000,18.56444478141459 +1703259055000,11.264158002963594 +1703259056000,13.005510870097236 +1703259057000,15.469253095559198 +1703259058000,11.247576787016394 +1703259059000,14.581319758082115 +1703259060000,12.063800400055245 +1703259061000,18.8858853200281 +1703259062000,15.805620535055619 +1703259063000,19.74960782760664 +1703259064000,15.322541589693754 +1703259065000,16.47088224197605 +1703259066000,14.111193761438292 +1703259067000,12.356683840442884 +1703259068000,14.311989597092454 +1703259069000,16.029063214207696 +1703259070000,11.042965220011732 +1703259071000,14.654684776656286 +1703259072000,17.692291663650654 +1703259073000,10.903945145463705 +1703259074000,17.17996624054583 +1703259075000,19.156265895079994 +1703259076000,15.133124835922791 +1703259077000,14.321102390735312 +1703259078000,19.41785837592753 +1703259079000,16.84805863089774 +1703259080000,14.65471013613785 +1703259081000,19.64251011023925 +1703259082000,19.431402503276928 +1703259083000,19.399994736177284 +1703259084000,17.0324601134333 +1703259085000,13.038272333628283 +1703259086000,11.438371688350609 +1703259087000,14.189704763716774 +1703259088000,11.248705862111638 +1703259089000,14.150717848432167 +1703259090000,12.926146213562046 +1703259091000,14.80167297612174 +1703259092000,16.85370987844746 +1703259093000,12.984352035783893 +1703259094000,13.606175037331903 +1703259095000,13.128527706743021 +1703259096000,10.809707888852117 +1703259097000,15.354588762811353 +1703259098000,12.420880381445125 +1703259099000,18.993348542308215 +1703259100000,14.144774195800949 +1703259101000,15.124217683462255 +1703259102000,12.287078232127365 +1703259103000,16.56774551273573 +1703259104000,11.940997344241318 +1703259105000,12.470970028560554 +1703259106000,10.3251183826198 +1703259107000,11.25868886015985 +1703259108000,11.49567959042489 +1703259109000,10.503311369785186 +1703259110000,11.035015334920974 +1703259111000,16.234186455784 +1703259112000,16.173431657205196 +1703259113000,12.872397133731198 +1703259114000,15.120101129166063 +1703259115000,16.785873689202884 +1703259116000,13.853175246772803 +1703259117000,14.312806086253168 +1703259118000,14.148288541465899 +1703259119000,18.2231552443822 +1703259120000,14.233876543834924 +1703259121000,12.94543808254156 +1703259122000,14.680891041565665 +1703259123000,16.693335819245824 +1703259124000,18.339708821580153 +1703259125000,18.794993613352737 +1703259126000,14.621983116579177 +1703259127000,15.137727730896842 +1703259128000,13.725342938657981 +1703259129000,10.138284013791596 +1703259130000,10.135695205607018 +1703259131000,12.188330999261531 +1703259132000,13.864020877497891 +1703259133000,14.456533266223389 +1703259134000,15.010674787843548 +1703259135000,18.00334563267307 +1703259136000,11.724738773315826 +1703259137000,11.351204390846535 +1703259138000,11.347469976638195 +1703259139000,19.6473737965549 +1703259140000,17.620391844574776 +1703259141000,15.592176395325387 +1703259142000,17.392494032820863 +1703259143000,18.51295362341985 +1703259144000,17.43140157496687 +1703259145000,16.54971424461991 +1703259146000,10.315189853872624 +1703259147000,13.984072937008726 +1703259148000,18.198160158611447 +1703259149000,16.28574424195127 +1703259150000,11.216482541226334 +1703259151000,11.184111996390984 +1703259152000,19.777257450075705 +1703259153000,14.526262556604507 +1703259154000,10.780856544536814 +1703259155000,17.143557380104866 +1703259156000,14.779099865608515 +1703259157000,10.880863550261568 +1703259158000,13.295760030211202 +1703259159000,18.637889549571895 +1703259160000,18.570057242565422 +1703259161000,18.118318038027134 +1703259162000,16.09557927177859 +1703259163000,16.69284677869671 +1703259164000,15.716514966229232 +1703259165000,11.343678639269466 +1703259166000,14.23878232074872 +1703259167000,14.853396796893271 +1703259168000,10.19533796641001 +1703259169000,16.429619679538234 +1703259170000,19.830109840016554 +1703259171000,16.981525548262063 +1703259172000,17.880033645971995 +1703259173000,15.374020727502836 +1703259174000,18.22985815320192 +1703259175000,14.97918613591091 +1703259176000,10.856919809511522 +1703259177000,15.002223469032385 +1703259178000,11.735845763995002 +1703259179000,12.466226349736457 +1703259180000,11.48092816123303 +1703259181000,18.430966094092923 +1703259182000,15.90903419945658 +1703259183000,14.241075448546557 +1703259184000,10.56872124241733 +1703259185000,16.167456662053883 +1703259186000,18.876554723728333 +1703259187000,18.5555864635106 +1703259188000,10.047064926766819 +1703259189000,17.319693003283934 +1703259190000,19.012436568017826 +1703259191000,15.219555653952925 +1703259192000,11.5746567994932 +1703259193000,15.096177766888394 +1703259194000,11.48036428392876 +1703259195000,12.31260343848528 +1703259196000,11.11508432214837 +1703259197000,19.26354925007881 +1703259198000,13.785517428371467 +1703259199000,16.059216520435058 +1703259200000,14.632341854423789 +1703259201000,12.858918167008216 +1703259202000,19.759489378221723 +1703259203000,10.251522584420176 +1703259204000,16.80296045701097 +1703259205000,16.884359410726304 +1703259206000,14.518822886426507 +1703259207000,19.810518714192163 +1703259208000,13.01346654058424 +1703259209000,17.243731025304236 +1703259210000,14.760424117349743 +1703259211000,11.41500757688081 +1703259212000,12.38431064685609 +1703259213000,11.478187967708061 +1703259214000,15.749014680968063 +1703259215000,16.022774630187246 +1703259216000,12.967266771467685 +1703259217000,18.588202468973826 +1703259218000,19.544687878809206 +1703259219000,13.9563203022942 +1703259220000,10.885705701100198 +1703259221000,18.974680635082866 +1703259222000,18.945072383774843 +1703259223000,19.888619743620794 +1703259224000,15.766254544881974 +1703259225000,15.44887338466462 +1703259226000,14.78362038712403 +1703259227000,17.86499709977774 +1703259228000,16.161451918635574 +1703259229000,13.397707615668816 +1703259230000,16.74241938775216 +1703259231000,14.262334145659686 +1703259232000,14.42808305434519 +1703259233000,11.592460214827367 +1703259234000,14.145478936907043 +1703259235000,19.498904250913633 +1703259236000,19.145599026897955 +1703259237000,15.484840976939815 +1703259238000,11.25999570371924 +1703259239000,14.852441801395786 +1703259240000,13.786956711210628 +1703259241000,17.728076455443574 +1703259242000,16.418289961931112 +1703259243000,16.55746151555158 +1703259244000,15.802238519989729 +1703259245000,10.195640238878854 +1703259246000,10.387303169667039 +1703259247000,10.088255034382502 +1703259248000,15.661136323645907 +1703259249000,12.269448608116392 +1703259250000,13.013901612730407 +1703259251000,16.725739019789206 +1703259252000,11.344853952742138 +1703259253000,15.002156648162496 +1703259254000,11.306145235325465 +1703259255000,15.541734692151367 +1703259256000,13.823400007663611 +1703259257000,13.462826412697034 +1703259258000,14.102802579800985 +1703259259000,12.9364593882726 +1703259260000,19.929073605311192 +1703259261000,15.126902659715995 +1703259262000,12.335253156005741 +1703259263000,16.745046784901938 +1703259264000,15.124383067051662 +1703259265000,10.683418519740375 +1703259266000,17.358789171667905 +1703259267000,14.829778658346953 +1703259268000,16.04080732790672 +1703259269000,16.227307557373614 +1703259270000,19.858809212859434 +1703259271000,16.018685622746812 +1703259272000,10.121643467725585 +1703259273000,18.615965628733342 +1703259274000,12.588601185470809 +1703259275000,10.158383992103364 +1703259276000,13.036396952459686 +1703259277000,10.606001046592397 +1703259278000,17.369859741221674 +1703259279000,12.529696138822096 +1703259280000,13.334392927604377 +1703259281000,11.59801150720883 +1703259282000,18.677024083518695 +1703259283000,12.618520762951459 +1703259284000,18.025462065268965 +1703259285000,16.239203874234423 +1703259286000,17.153988922387203 +1703259287000,15.360207512896702 +1703259288000,19.58764428532053 +1703259289000,19.609818150984893 +1703259290000,19.643279405922087 +1703259291000,15.36914269017235 +1703259292000,10.234043732970651 +1703259293000,18.04215691893711 +1703259294000,14.057719278113307 +1703259295000,19.40902386980499 +1703259296000,10.036222018984033 +1703259297000,15.284791692388614 +1703259298000,12.206697445498845 +1703259299000,10.665592942766072 +1703259300000,17.298295813677953 +1703259301000,14.724019296459954 +1703259302000,12.150458152438262 +1703259303000,12.38852241409203 +1703259304000,16.23814145506791 +1703259305000,10.315470651796836 +1703259306000,14.192054976319017 +1703259307000,14.398030917427164 +1703259308000,13.834029623794539 +1703259309000,13.701875585744364 +1703259310000,12.886228853024868 +1703259311000,19.087830184596136 +1703259312000,16.315422599165395 +1703259313000,10.766769282295428 +1703259314000,16.8998138576279 +1703259315000,11.96571341963529 +1703259316000,13.319449140644547 +1703259317000,13.711537217297284 +1703259318000,12.263536721974404 +1703259319000,16.69777552294268 +1703259320000,14.70280443051008 +1703259321000,10.17500289097935 +1703259322000,14.752354921514645 +1703259323000,19.532202701581173 +1703259324000,13.22468767882709 +1703259325000,15.992315590906081 +1703259326000,10.552463673341926 +1703259327000,18.14240283197494 +1703259328000,18.61039610186309 +1703259329000,10.639967830459202 +1703259330000,16.867160230849834 +1703259331000,15.944777981226093 +1703259332000,12.688223904664955 +1703259333000,19.247485626893642 +1703259334000,18.768470022521125 +1703259335000,10.60337761990917 +1703259336000,12.338945952638229 +1703259337000,18.726571765949753 +1703259338000,18.208549702370306 +1703259339000,11.441487784958193 +1703259340000,18.23245092990645 +1703259341000,13.722363996167147 +1703259342000,17.664458913417853 +1703259343000,19.17405108956301 +1703259344000,18.14344492475174 +1703259345000,15.592213307200288 +1703259346000,11.773426369505145 +1703259347000,14.441993828955235 +1703259348000,15.691960152737192 +1703259349000,12.486121787346416 +1703259350000,16.37166913073431 +1703259351000,14.803264700061547 +1703259352000,15.442731722546284 +1703259353000,18.21509071486419 +1703259354000,18.21639009233119 +1703259355000,18.782803087755237 +1703259356000,15.408907912761649 +1703259357000,12.38988209267169 +1703259358000,17.43996163217021 +1703259359000,17.868305053312756 +1703259360000,19.963916745887648 +1703259361000,19.733896102735166 +1703259362000,12.638609041868012 +1703259363000,14.693542003781541 +1703259364000,19.278444710184502 +1703259365000,19.06791849218554 +1703259366000,14.988657836088318 +1703259367000,14.058007655123731 +1703259368000,17.73013295142016 +1703259369000,14.494284757117315 +1703259370000,17.37884106420097 +1703259371000,16.582470330648853 +1703259372000,13.52427342489555 +1703259373000,12.291570981001938 +1703259374000,18.612736908109678 +1703259375000,16.55160742411376 +1703259376000,15.74928859049492 +1703259377000,19.380499565264294 +1703259378000,17.14495031292082 +1703259379000,13.342786828986473 +1703259380000,10.662340470171442 +1703259381000,10.141418640205307 +1703259382000,10.433155420684026 +1703259383000,12.099622743748249 +1703259384000,12.743702689030773 +1703259385000,17.61171881188022 +1703259386000,17.05707958117788 +1703259387000,14.531677241781907 +1703259388000,14.387466779710362 +1703259389000,15.845341746703252 +1703259390000,13.22972432641785 +1703259391000,13.00089055970458 +1703259392000,15.677094027502235 +1703259393000,14.992771466390666 +1703259394000,13.29450957710413 +1703259395000,15.790340077022751 +1703259396000,14.827898963704111 +1703259397000,18.025572542384037 +1703259398000,13.290854517945192 +1703259399000,14.694321233886157 +1703259400000,12.156236258328516 +1703259401000,12.93359643531739 +1703259402000,14.652232636810908 +1703259403000,12.543840540388171 +1703259404000,18.956648439824505 +1703259405000,11.68683120890758 +1703259406000,16.044256775949812 +1703259407000,17.043924051067016 +1703259408000,11.146613156204761 +1703259409000,18.167855168891126 +1703259410000,13.762142677744398 +1703259411000,19.406646653895002 +1703259412000,14.485237679351744 +1703259413000,16.69726359497823 +1703259414000,18.8925608183677 +1703259415000,19.4514058886556 +1703259416000,17.983176020642716 +1703259417000,11.230762431697203 +1703259418000,13.91497369169137 +1703259419000,11.204790092013154 +1703259420000,15.838800720695271 +1703259421000,17.683983157702116 +1703259422000,18.08931679630107 +1703259423000,13.587278126693645 +1703259424000,19.296270956022692 +1703259425000,12.897022162311156 +1703259426000,11.82598839491499 +1703259427000,10.242602269317036 +1703259428000,10.724368804714508 +1703259429000,18.086792236794082 +1703259430000,17.176470245523173 +1703259431000,10.10919297448983 +1703259432000,13.077973474686695 +1703259433000,12.924563390564286 +1703259434000,17.89038691419103 +1703259435000,18.71792495795219 +1703259436000,17.22923596994369 +1703259437000,13.461566779667983 +1703259438000,19.183126886739156 +1703259439000,16.226615934863496 +1703259440000,17.63174812360934 +1703259441000,19.550250850965668 +1703259442000,10.399161302825137 +1703259443000,13.363026531810284 +1703259444000,19.197255734266427 +1703259445000,11.34197396657688 +1703259446000,13.3532430954949 +1703259447000,10.5345712274361 +1703259448000,14.192357324935688 +1703259449000,11.903372625169455 +1703259450000,14.87033576704361 +1703259451000,13.46057508339024 +1703259452000,10.189256730637178 +1703259453000,10.601351116840988 +1703259454000,18.14201658393351 +1703259455000,10.491791508682946 +1703259456000,12.82999656374071 +1703259457000,14.129382222946656 +1703259458000,11.289037659761094 +1703259459000,11.740739813040804 +1703259460000,10.751885246199928 +1703259461000,11.036178221642206 +1703259462000,10.466711824616855 +1703259463000,10.319104557291208 +1703259464000,15.202862857087133 +1703259465000,19.56398156724562 +1703259466000,13.219074778529478 +1703259467000,17.25433788395705 +1703259468000,11.509279977740942 +1703259469000,17.675837265687175 +1703259470000,13.297200270186675 +1703259471000,18.150733404045475 +1703259472000,16.303905382257497 +1703259473000,13.764523017959347 +1703259474000,10.237281893437949 +1703259475000,17.727754248202938 +1703259476000,10.410119340725215 +1703259477000,14.222334048226912 +1703259478000,19.52711747306401 +1703259479000,13.47305480690804 +1703259480000,11.818135970347697 +1703259481000,13.264759862758025 +1703259482000,19.8058414087158 +1703259483000,11.156273859657604 +1703259484000,12.019471969971683 +1703259485000,12.011015357754996 +1703259486000,15.311154848543058 +1703259487000,11.411719223358185 +1703259488000,10.05262554662743 +1703259489000,10.655527081447303 +1703259490000,11.86165138882218 +1703259491000,18.487675759058252 +1703259492000,10.835017864874484 +1703259493000,19.913672760729227 +1703259494000,17.22198002183292 +1703259495000,16.877230998439735 +1703259496000,18.00197747375516 +1703259497000,13.646856001622844 +1703259498000,10.276508227258601 +1703259499000,17.69675363983173 +1703259500000,16.61821664116104 +1703259501000,15.436853894223828 +1703259502000,13.93195906430918 +1703259503000,11.960481802982603 +1703259504000,19.15806257238591 +1703259505000,15.247264666558596 +1703259506000,19.070976472394904 +1703259507000,12.81259876148646 +1703259508000,15.577549016870625 +1703259509000,17.898708658716995 +1703259510000,16.585130399003827 +1703259511000,10.89994284369653 +1703259512000,17.31543591226271 +1703259513000,11.41525356483943 +1703259514000,15.90317253514865 +1703259515000,11.330833065780995 +1703259516000,13.265671223859085 +1703259517000,15.342424224353175 +1703259518000,15.58752195328415 +1703259519000,16.72584594463295 +1703259520000,15.976468490408031 +1703259521000,13.614452718058677 +1703259522000,14.663997245275832 +1703259523000,17.67058632647315 +1703259524000,14.918214864036337 +1703259525000,14.05378994629045 +1703259526000,16.14254064433433 +1703259527000,13.49113813996168 +1703259528000,18.161882029210805 +1703259529000,18.210046594315777 +1703259530000,11.406696968604862 +1703259531000,16.616625984713046 +1703259532000,14.34245402249236 +1703259533000,10.714918664469042 +1703259534000,14.559625647089309 +1703259535000,17.725583344185516 +1703259536000,13.367133252978068 +1703259537000,12.012935163455412 +1703259538000,16.985678639224012 +1703259539000,17.023453384079428 +1703259540000,16.561711640160343 +1703259541000,12.661023756049898 +1703259542000,14.461808458280428 +1703259543000,10.563557419607896 +1703259544000,14.363983052537037 +1703259545000,13.695331425183518 +1703259546000,12.356618998333602 +1703259547000,15.251109656145884 +1703259548000,18.85394241605482 +1703259549000,15.712633656390384 +1703259550000,11.502221759916853 +1703259551000,11.642781298763861 +1703259552000,13.892766841531635 +1703259553000,18.08774906979789 +1703259554000,19.850321858449956 +1703259555000,19.749573268831803 +1703259556000,17.080479620917515 +1703259557000,13.137131526868693 +1703259558000,14.15731089768039 +1703259559000,14.781319962983613 +1703259560000,14.288169808693336 +1703259561000,11.13105060717427 +1703259562000,16.920210109817344 +1703259563000,10.373805423428085 +1703259564000,19.26154155817142 +1703259565000,13.368460244548421 +1703259566000,11.488399332438243 +1703259567000,13.373003650607682 +1703259568000,16.479115591444963 +1703259569000,10.1399421369743 +1703259570000,12.434948824552592 +1703259571000,15.413684678280177 +1703259572000,14.869666183037346 +1703259573000,10.81231413635637 +1703259574000,18.966658534323212 +1703259575000,19.793373639146026 +1703259576000,16.22056293959856 +1703259577000,16.170300631018602 +1703259578000,11.169009297546847 +1703259579000,12.529081431603274 +1703259580000,18.017741698480705 +1703259581000,18.89574898740791 +1703259582000,12.656967606628106 +1703259583000,18.718955556142383 +1703259584000,16.256204127763983 +1703259585000,15.932331013911138 +1703259586000,12.532400478507473 +1703259587000,15.96856344614909 +1703259588000,11.23923688900604 +1703259589000,18.563818138802542 +1703259590000,18.91073991747966 +1703259591000,17.764165575799634 +1703259592000,14.320708819406601 +1703259593000,18.08918488317642 +1703259594000,10.007903857020095 +1703259595000,19.588948451588863 +1703259596000,12.526753244376021 +1703259597000,15.421073359361664 +1703259598000,10.100779346285616 +1703259599000,10.789087000963274 +1703259600000,10.532031363882828 +1703259601000,12.99598828738528 +1703259602000,15.495559731441208 +1703259603000,17.35069336157484 +1703259604000,18.812267740844355 +1703259605000,18.918885017642207 +1703259606000,14.333778074910224 +1703259607000,17.754072395868413 +1703259608000,13.778476819957822 +1703259609000,18.50340589354269 +1703259610000,14.850320623145716 +1703259611000,10.51962403658549 +1703259612000,18.208397895115837 +1703259613000,13.788457735286158 +1703259614000,13.188578493077875 +1703259615000,14.443679813119914 +1703259616000,12.833617844533013 +1703259617000,15.444636664002939 +1703259618000,12.360561902731117 +1703259619000,14.633034173088884 +1703259620000,19.40811408036828 +1703259621000,18.850058805950624 +1703259622000,15.103105108158864 +1703259623000,18.011598199012667 +1703259624000,13.115514400104939 +1703259625000,16.925056969082448 +1703259626000,12.731167867558932 +1703259627000,18.586751955451625 +1703259628000,18.654307531858393 +1703259629000,13.588341478519933 +1703259630000,17.337448612748478 +1703259631000,12.413811263276862 +1703259632000,13.158521762884856 +1703259633000,12.007804550744378 +1703259634000,11.943655279179417 +1703259635000,14.86888893657494 +1703259636000,18.11447776807337 +1703259637000,16.76433948857517 +1703259638000,14.03492339245345 +1703259639000,16.495860554491088 +1703259640000,16.063617114656434 +1703259641000,14.794943033717995 +1703259642000,11.321459008780291 +1703259643000,10.153652866143844 +1703259644000,16.178929278820448 +1703259645000,19.73177440919772 +1703259646000,13.761465504044965 +1703259647000,14.82936189445386 +1703259648000,16.051595653026872 +1703259649000,18.769064547870435 +1703259650000,12.740057954167995 +1703259651000,13.438598853223853 +1703259652000,19.208371722314908 +1703259653000,16.0894276236701 +1703259654000,19.499097985440606 +1703259655000,16.582745979954844 +1703259656000,19.534678707301325 +1703259657000,18.47558037208849 +1703259658000,13.2416245568831 +1703259659000,17.696007390471845 +1703259660000,18.586908048562687 +1703259661000,10.166622244350394 +1703259662000,13.82512830320471 +1703259663000,10.995619582030837 +1703259664000,14.700557828430476 +1703259665000,11.247483157950786 +1703259666000,12.115343508054956 +1703259667000,14.790004888993359 +1703259668000,12.008671443373233 +1703259669000,19.633712186895696 +1703259670000,14.676482768947984 +1703259671000,11.547291229271782 +1703259672000,12.555307396492479 +1703259673000,11.773062936400331 +1703259674000,12.677685954163785 +1703259675000,15.099722626821645 +1703259676000,18.716107916287967 +1703259677000,18.304577824822815 +1703259678000,15.033637513935329 +1703259679000,17.4464507485259 +1703259680000,15.991592215062388 +1703259681000,16.329203417191742 +1703259682000,18.658277479650714 +1703259683000,18.856972420391312 +1703259684000,16.217132677886845 +1703259685000,17.659853036936585 +1703259686000,12.649311416271372 +1703259687000,19.93721117765424 +1703259688000,10.666438407861541 +1703259689000,17.512893809512846 +1703259690000,15.278861560901493 +1703259691000,13.330996378734252 +1703259692000,15.329409043620752 +1703259693000,18.73923604598371 +1703259694000,17.223242015059714 +1703259695000,16.363342928732283 +1703259696000,17.25034535665256 +1703259697000,10.363677040534673 +1703259698000,16.84575455410037 +1703259699000,18.533036122093748 +1703259700000,14.115043657513024 +1703259701000,10.388700309362381 +1703259702000,13.622816848807222 +1703259703000,15.381769684455962 +1703259704000,10.12994842218967 +1703259705000,11.73556923195706 +1703259706000,15.231520442555556 +1703259707000,18.656433609970456 +1703259708000,18.237186207270035 +1703259709000,11.364067952431697 +1703259710000,14.23467909827195 +1703259711000,16.847464081267464 +1703259712000,10.06387759594247 +1703259713000,10.102414583312964 +1703259714000,16.843209213733196 +1703259715000,15.546426385671946 +1703259716000,14.719930140052433 +1703259717000,18.75373633688246 +1703259718000,19.753348347158614 +1703259719000,18.85003799250715 +1703259720000,12.383338223337272 +1703259721000,15.895952621197415 +1703259722000,15.32774209426786 +1703259723000,16.6037487691813 +1703259724000,17.239836199053514 +1703259725000,10.889159250525767 +1703259726000,16.104795596715036 +1703259727000,16.762473520505296 +1703259728000,10.09387360497782 +1703259729000,18.82869585846013 +1703259730000,11.156005978219437 +1703259731000,14.342174609143914 +1703259732000,18.99201283233566 +1703259733000,19.57242357452083 +1703259734000,11.897200940397958 +1703259735000,12.878252504067468 +1703259736000,17.04797409021248 +1703259737000,18.469973282709667 +1703259738000,15.938339626188812 +1703259739000,16.648656498106398 +1703259740000,11.75537707729592 +1703259741000,14.120508462086685 +1703259742000,18.783854269415656 +1703259743000,14.305941165307328 +1703259744000,10.677551262434292 +1703259745000,10.231046968693265 +1703259746000,18.97115628386069 +1703259747000,19.59009602767685 +1703259748000,18.6215479145444 +1703259749000,11.409493919624568 +1703259750000,13.574401761318292 +1703259751000,18.659581098618126 +1703259752000,17.328427872875256 +1703259753000,10.928488457739235 +1703259754000,16.606742574893435 +1703259755000,13.229761249795176 +1703259756000,15.170404606890727 +1703259757000,15.490829752710024 +1703259758000,17.28237615523371 +1703259759000,14.939870958288857 +1703259760000,18.4122838590269 +1703259761000,12.573322317436599 +1703259762000,18.121369336530243 +1703259763000,14.992136943845562 +1703259764000,15.331993070401097 +1703259765000,13.46679067326448 +1703259766000,11.38206724838387 +1703259767000,10.215870627420271 +1703259768000,11.697769594381995 +1703259769000,17.063581985809584 +1703259770000,18.044545243062814 +1703259771000,10.230793098376738 +1703259772000,17.773135491482655 +1703259773000,16.757074125159395 +1703259774000,18.272659797786908 +1703259775000,13.510989569981726 +1703259776000,18.859683435938557 +1703259777000,12.833093142313244 +1703259778000,11.668005033102629 +1703259779000,10.562319675414766 +1703259780000,16.841384050113447 +1703259781000,19.402139572542936 +1703259782000,12.210186089338944 +1703259783000,16.589972032916638 +1703259784000,15.255810507165343 +1703259785000,16.381651726973473 +1703259786000,17.937417458133318 +1703259787000,12.818272779605167 +1703259788000,19.12733688319594 +1703259789000,12.655293505807343 +1703259790000,14.278349685622366 +1703259791000,11.668108715854494 +1703259792000,16.063908444822378 +1703259793000,12.991016132235702 +1703259794000,13.675134601315797 +1703259795000,18.600614292308656 +1703259796000,10.21820611083512 +1703259797000,13.917720603699419 +1703259798000,18.028485039621437 +1703259799000,10.489385994542026 +1703259800000,11.445536044307106 +1703259801000,11.994671182153237 +1703259802000,13.278816301315079 +1703259803000,10.425477387227195 +1703259804000,11.731801812880576 +1703259805000,17.974563618936067 +1703259806000,17.282974540279543 +1703259807000,18.56937829256767 +1703259808000,11.144294950372329 +1703259809000,11.933168637932383 +1703259810000,16.919591284601232 +1703259811000,19.785153772158353 +1703259812000,13.376068830537932 +1703259813000,16.570790370307304 +1703259814000,16.439611494568823 +1703259815000,10.430884202211496 +1703259816000,11.038081210598508 +1703259817000,12.478938129461476 +1703259818000,18.693404909764652 +1703259819000,15.510787301521415 +1703259820000,19.76214855938936 +1703259821000,16.849483815138495 +1703259822000,17.113573714464497 +1703259823000,11.31267475250606 +1703259824000,15.926760915754155 +1703259825000,11.5963103453595 +1703259826000,15.691209296882835 +1703259827000,18.37164225906892 +1703259828000,12.801936792585872 +1703259829000,15.40925736384212 +1703259830000,17.446138748272098 +1703259831000,16.20789265212354 +1703259832000,12.92428635366184 +1703259833000,13.82609465620352 +1703259834000,18.19245447371958 +1703259835000,13.935738064568806 +1703259836000,13.852746452266382 +1703259837000,13.532212868435522 +1703259838000,14.697955149229383 +1703259839000,15.83650442878375 +1703259840000,11.351615123651525 +1703259841000,16.09437941216062 +1703259842000,11.812756311778747 +1703259843000,13.013614471781128 +1703259844000,18.881861435211597 +1703259845000,11.059523416263781 +1703259846000,19.37713306569256 +1703259847000,14.722950479342213 +1703259848000,18.930748437231728 +1703259849000,13.91481647502735 +1703259850000,10.340912039434878 +1703259851000,13.251144991850476 +1703259852000,11.621082787660493 +1703259853000,11.259684364481998 +1703259854000,13.885799466561098 +1703259855000,10.471932800484877 +1703259856000,11.247119860753921 +1703259857000,13.478039314804917 +1703259858000,16.180962333699824 +1703259859000,10.239723506685127 +1703259860000,11.96878011637481 +1703259861000,13.537068215506102 +1703259862000,14.929268648498939 +1703259863000,12.766178613175853 +1703259864000,19.36271166877223 +1703259865000,14.977593656717511 +1703259866000,19.351682492725807 +1703259867000,11.354461722308262 +1703259868000,16.62209207379554 +1703259869000,17.113400349481466 +1703259870000,18.360913515505935 +1703259871000,12.714729276337554 +1703259872000,19.325391267851217 +1703259873000,10.856184281583168 +1703259874000,15.70972189048467 +1703259875000,16.875539332807488 +1703259876000,18.678270768624632 +1703259877000,18.401474471520032 +1703259878000,13.392470858590961 +1703259879000,17.61561412225747 +1703259880000,14.829403899820388 +1703259881000,12.56129446607232 +1703259882000,12.634856186421311 +1703259883000,17.411801071011933 +1703259884000,11.988225700716926 +1703259885000,11.418117108550474 +1703259886000,17.626767685279557 +1703259887000,14.10484915158174 +1703259888000,11.248217894190171 +1703259889000,12.305255039228545 +1703259890000,18.993037341666184 +1703259891000,19.405430997811358 +1703259892000,14.64318062050925 +1703259893000,13.328269805908995 +1703259894000,19.9345670585728 +1703259895000,16.427529803702164 +1703259896000,10.578295606133244 +1703259897000,19.519158712576342 +1703259898000,10.937799342907056 +1703259899000,16.097727412297154 +1703259900000,19.671747203265078 +1703259901000,14.02670350249306 +1703259902000,14.866944753144564 +1703259903000,12.72389627726034 +1703259904000,15.535286484184786 +1703259905000,13.276084529643898 +1703259906000,16.193802743958877 +1703259907000,14.318648047874117 +1703259908000,18.786130143975683 +1703259909000,19.32615850106734 +1703259910000,11.685564587640044 +1703259911000,14.32019885450523 +1703259912000,11.31932446580074 +1703259913000,11.396681344111268 +1703259914000,14.834503242076732 +1703259915000,10.781962714833806 +1703259916000,12.7180696521525 +1703259917000,19.77209522961347 +1703259918000,15.3914792820208 +1703259919000,10.857379732580245 +1703259920000,13.72955632343949 +1703259921000,12.065953217087234 +1703259922000,10.158263362902813 +1703259923000,18.032806948662333 +1703259924000,15.19176613083875 +1703259925000,13.961204634046524 +1703259926000,11.133644468834635 +1703259927000,18.041330248712764 +1703259928000,16.811347509592416 +1703259929000,13.166639411022974 +1703259930000,15.14690959628587 +1703259931000,18.858290669783702 +1703259932000,13.624692283763576 +1703259933000,11.916296342631652 +1703259934000,12.275905708941805 +1703259935000,14.610053847603083 +1703259936000,17.07217847158634 +1703259937000,10.885177999366515 +1703259938000,12.613751714758118 +1703259939000,16.549188040356764 +1703259940000,15.238975363966967 +1703259941000,12.541293899002499 +1703259942000,12.246562648464648 +1703259943000,10.301718764972097 +1703259944000,14.535055104274182 +1703259945000,17.500122979693433 +1703259946000,13.18262255497348 +1703259947000,18.324751860332945 +1703259948000,15.339654837369228 +1703259949000,11.557102674620769 +1703259950000,15.997713262652034 +1703259951000,13.29269617442866 +1703259952000,14.857580323268417 +1703259953000,11.624440331919665 +1703259954000,11.249429762763977 +1703259955000,14.71463142261651 +1703259956000,16.313230078215124 +1703259957000,14.282625506216409 +1703259958000,12.602405895292325 +1703259959000,15.34117625410433 +1703259960000,18.089757493329014 +1703259961000,12.123149332988286 +1703259962000,10.506493650785574 +1703259963000,14.856057443525877 +1703259964000,18.060943011017468 +1703259965000,12.895746579443102 +1703259966000,15.07582343579512 +1703259967000,14.620233038268022 +1703259968000,12.260461389406878 +1703259969000,10.786778764674299 +1703259970000,10.519131189964778 +1703259971000,19.098236162025884 +1703259972000,11.104299139441327 +1703259973000,17.941022253107224 +1703259974000,11.312240466895819 +1703259975000,12.095886597659128 +1703259976000,16.25769951940627 +1703259977000,11.584207887243815 +1703259978000,18.050742788634416 +1703259979000,15.531188013481382 +1703259980000,18.67421696845573 +1703259981000,10.211092551561443 +1703259982000,17.82559189534182 +1703259983000,15.659401395881865 +1703259984000,17.842554546971087 +1703259985000,17.585680522487213 +1703259986000,12.378212070506128 +1703259987000,13.602413183483247 +1703259988000,16.3413356137823 +1703259989000,11.275438847528882 +1703259990000,10.099652921319857 +1703259991000,18.92820804265884 +1703259992000,11.67981603220755 +1703259993000,16.24100689151844 +1703259994000,10.296602945176653 +1703259995000,11.304073538433947 +1703259996000,12.584433977945462 +1703259997000,18.21372963567503 +1703259998000,14.74288655084178 +1703259999000,19.870288447732666 +1703260000000,19.883714976680054 +1703260001000,10.607148470363882 +1703260002000,10.93078642970449 +1703260003000,18.699286952620877 +1703260004000,14.52908687851497 +1703260005000,18.398701316243894 +1703260006000,13.136315970880528 +1703260007000,19.451972066421575 +1703260008000,17.349413372660486 +1703260009000,16.355175237212755 +1703260010000,11.340835005949446 +1703260011000,12.786325315975908 +1703260012000,16.35583475167597 +1703260013000,12.755370352404494 +1703260014000,16.97601875569471 +1703260015000,11.593821694312334 +1703260016000,11.39882464499381 +1703260017000,11.832181566697948 +1703260018000,12.511589338774218 +1703260019000,17.286169701340278 +1703260020000,19.770180299363282 +1703260021000,10.55971621103402 +1703260022000,15.379231492421065 +1703260023000,11.781473199877173 +1703260024000,12.864970447452446 +1703260025000,10.670692289765372 +1703260026000,17.490288243277718 +1703260027000,14.685158764544877 +1703260028000,12.051531177921142 +1703260029000,18.72285279485407 +1703260030000,11.30393152438269 +1703260031000,11.576132726274377 +1703260032000,16.091030508487357 +1703260033000,15.052990994964247 +1703260034000,16.03454816766529 +1703260035000,15.876042556245842 +1703260036000,11.203834926956862 +1703260037000,12.53280647208723 +1703260038000,19.433342790047483 +1703260039000,17.38170499633893 +1703260040000,18.79580546883426 +1703260041000,17.135988085310135 +1703260042000,11.203369739538457 +1703260043000,19.92447314396985 +1703260044000,14.546632325300772 +1703260045000,18.18802488886567 +1703260046000,10.221364588060238 +1703260047000,17.511547424518383 +1703260048000,11.988988216401445 +1703260049000,15.240461426819703 +1703260050000,14.806028028411262 +1703260051000,16.064502366216665 +1703260052000,10.471974218821872 +1703260053000,15.929082147214064 +1703260054000,16.115625440449502 +1703260055000,12.82736331308336 +1703260056000,11.310139187647746 +1703260057000,11.083521962339958 +1703260058000,10.612161456295036 +1703260059000,11.154395940101763 +1703260060000,13.677346258225283 +1703260061000,13.317622870916857 +1703260062000,11.150886470788082 +1703260063000,14.700819447893725 +1703260064000,15.482929065223772 +1703260065000,17.19769063210442 +1703260066000,14.444707544174177 +1703260067000,10.772343548658018 +1703260068000,16.82456500362224 +1703260069000,13.698534805043739 +1703260070000,15.348771517752521 +1703260071000,16.472617597311263 +1703260072000,13.691607622522957 +1703260073000,15.513682746077762 +1703260074000,17.437993755719873 +1703260075000,17.0621886737502 +1703260076000,14.604446998157622 +1703260077000,14.532828921328582 +1703260078000,17.40937726855387 +1703260079000,11.44096605768546 +1703260080000,19.329658986279576 +1703260081000,13.90824567171252 +1703260082000,15.720971897181048 +1703260083000,16.03676517233437 +1703260084000,11.17795134597748 +1703260085000,14.684413710698495 +1703260086000,16.76185083360082 +1703260087000,15.670775920191904 +1703260088000,17.264715114199053 +1703260089000,10.693987140773384 +1703260090000,14.411072713086412 +1703260091000,14.625681795077432 +1703260092000,15.746275391460511 +1703260093000,11.563137403650408 +1703260094000,10.294026979956337 +1703260095000,14.247952827232112 +1703260096000,10.985276722025326 +1703260097000,18.59365030248174 +1703260098000,19.441365500857483 +1703260099000,13.932264143593773 +1703260100000,14.51450380824285 +1703260101000,13.615175482569839 +1703260102000,13.165508761836282 +1703260103000,11.204339470050197 +1703260104000,14.292744942108293 +1703260105000,11.796005903830856 +1703260106000,12.049967761469134 +1703260107000,12.544101100434233 +1703260108000,11.771569058723333 +1703260109000,14.442981539469553 +1703260110000,17.137452506902015 +1703260111000,11.338406039402214 +1703260112000,18.51816934064578 +1703260113000,13.494042492881377 +1703260114000,18.300901987730747 +1703260115000,18.91310642685323 +1703260116000,14.822602150907507 +1703260117000,10.955060096499189 +1703260118000,12.471565359262653 +1703260119000,19.985515048580424 +1703260120000,19.283988818899626 +1703260121000,17.588569105743744 +1703260122000,12.35753618433143 +1703260123000,16.382225268869185 +1703260124000,11.168034194247719 +1703260125000,18.389708760284037 +1703260126000,10.367158371585912 +1703260127000,14.999465604381763 +1703260128000,16.040308196233845 +1703260129000,18.70167930173782 +1703260130000,12.527418437099046 +1703260131000,18.14149749854425 +1703260132000,12.438711675165095 +1703260133000,13.765238975628627 +1703260134000,11.081254146583447 +1703260135000,11.389421118533471 +1703260136000,15.16924981984161 +1703260137000,10.825058297932657 +1703260138000,12.813872403899673 +1703260139000,15.646942372445935 +1703260140000,11.815920993549561 +1703260141000,18.98419516708904 +1703260142000,15.671414003220164 +1703260143000,19.87348160008093 +1703260144000,11.61758264335102 +1703260145000,16.260870449502285 +1703260146000,18.3098942070508 +1703260147000,18.895971500965913 +1703260148000,13.196079279851968 +1703260149000,13.109296659299389 +1703260150000,17.22704693246536 +1703260151000,12.603460582502091 +1703260152000,18.100206487073653 +1703260153000,15.334805671000739 +1703260154000,17.517814746161115 +1703260155000,11.866091990785213 +1703260156000,10.63474867940329 +1703260157000,19.682217274091514 +1703260158000,13.756873222070936 +1703260159000,19.718034523243613 +1703260160000,13.647897868589812 +1703260161000,12.807879305472945 +1703260162000,16.680596118300663 +1703260163000,13.79367715606166 +1703260164000,14.829065248258596 +1703260165000,13.786973498430811 +1703260166000,18.354497134863855 +1703260167000,10.579096096245209 +1703260168000,15.260167351502638 +1703260169000,14.773980000693797 +1703260170000,14.712058231190799 +1703260171000,16.707661863516183 +1703260172000,19.8769427767203 +1703260173000,15.089865680817761 +1703260174000,10.807183274332212 +1703260175000,12.822518679944286 +1703260176000,15.37245436995886 +1703260177000,15.432210463762111 +1703260178000,14.431560761512625 +1703260179000,11.288498361250827 +1703260180000,15.462488549784748 +1703260181000,13.807881500721741 +1703260182000,19.573408797801875 +1703260183000,14.101409005664564 +1703260184000,11.24569624203669 +1703260185000,16.958430406319405 +1703260186000,17.2604092002226 +1703260187000,18.64845801099595 +1703260188000,13.79679656852865 +1703260189000,12.360470699009197 +1703260190000,19.425863374456632 +1703260191000,17.639897846863036 +1703260192000,19.220962497945703 +1703260193000,12.149029296912671 +1703260194000,19.655573915673266 +1703260195000,12.185988803750263 +1703260196000,15.167690392397995 +1703260197000,10.773670571606628 +1703260198000,15.964750848228126 +1703260199000,18.019043869356636 +1703260200000,17.436976198854587 +1703260201000,16.887856145994824 +1703260202000,19.16268253743562 +1703260203000,13.310103202039963 +1703260204000,14.546602332697285 +1703260205000,14.90178158685642 +1703260206000,13.286691326620334 +1703260207000,18.19342468878948 +1703260208000,11.467243662674738 +1703260209000,12.085640507577757 +1703260210000,12.641898103413329 +1703260211000,13.963050856831833 +1703260212000,17.655625145506377 +1703260213000,17.697752947143673 +1703260214000,15.87504935942654 +1703260215000,12.54966039433544 +1703260216000,19.48289138735209 +1703260217000,19.5917135085774 +1703260218000,13.674210218125676 +1703260219000,14.535984527218739 +1703260220000,11.429528213206806 +1703260221000,12.699678123197238 +1703260222000,10.356018373506139 +1703260223000,19.81256008432105 +1703260224000,17.18328135990312 +1703260225000,19.92877899666607 +1703260226000,13.474674892754797 +1703260227000,15.689997238151602 +1703260228000,16.110969838152116 +1703260229000,14.430336356070955 +1703260230000,11.84567078977105 +1703260231000,16.580782521420666 +1703260232000,12.780722193376784 +1703260233000,10.280910020969857 +1703260234000,12.044538603683295 +1703260235000,19.60920528167464 +1703260236000,16.83476800337989 +1703260237000,13.634480025970767 +1703260238000,11.23460796706252 +1703260239000,16.340451408222922 +1703260240000,10.107605023164655 +1703260241000,11.50061267284538 +1703260242000,11.333289416087146 +1703260243000,11.287881910255273 +1703260244000,15.315613277254208 +1703260245000,18.108173979774012 +1703260246000,16.42063832461222 +1703260247000,17.327565606470245 +1703260248000,12.980720111226372 +1703260249000,17.94397933029385 +1703260250000,17.385512190754994 +1703260251000,13.504704294365848 +1703260252000,13.784648995820268 +1703260253000,13.218158247992324 +1703260254000,15.22568063512467 +1703260255000,15.699256522681692 +1703260256000,14.860914048085057 +1703260257000,17.665437625914713 +1703260258000,17.360159518812242 +1703260259000,15.547660846816118 +1703260260000,10.640260778877016 +1703260261000,18.42088619250834 +1703260262000,19.52127466114044 +1703260263000,14.10610759143734 +1703260264000,13.970532850499675 +1703260265000,13.873625801066206 +1703260266000,14.343905485834414 +1703260267000,15.618128516717695 +1703260268000,19.686075959173113 +1703260269000,18.007135800935895 +1703260270000,17.67015688005668 +1703260271000,11.248121937519604 +1703260272000,13.442166205230922 +1703260273000,13.423073322711142 +1703260274000,14.38543103300081 +1703260275000,12.41705742966428 +1703260276000,13.7057843627222 +1703260277000,13.399714391691392 +1703260278000,16.034543545116136 +1703260279000,11.162906272510607 +1703260280000,19.59212318877475 +1703260281000,14.90248037586539 +1703260282000,19.92854858080863 +1703260283000,14.38555278727918 +1703260284000,15.844942408950054 +1703260285000,15.400308947715025 +1703260286000,18.58989219805417 +1703260287000,18.189743041687827 +1703260288000,19.49238659484526 +1703260289000,17.753418304104546 +1703260290000,16.322827388197418 +1703260291000,16.85084449610514 +1703260292000,19.944044439019272 +1703260293000,16.957936700830473 +1703260294000,10.318289542825994 +1703260295000,12.858933828129665 +1703260296000,17.454094545433723 +1703260297000,19.83568648680153 +1703260298000,13.807092819629496 +1703260299000,19.67225767027927 +1703260300000,16.768238512451358 +1703260301000,11.257367249692452 +1703260302000,15.1208922400869 +1703260303000,18.604053601647315 +1703260304000,13.773853624304865 +1703260305000,18.29446938917677 +1703260306000,17.31642441166268 +1703260307000,16.13223286381569 +1703260308000,17.279326206053046 +1703260309000,18.009304635159914 +1703260310000,13.844693591506482 +1703260311000,13.353187021362032 +1703260312000,13.991084753336864 +1703260313000,12.488283788682542 +1703260314000,14.572486981094581 +1703260315000,10.665027753445582 +1703260316000,16.098050368971784 +1703260317000,10.92084945006397 +1703260318000,17.65404246745905 +1703260319000,15.659390228706894 +1703260320000,10.431809308458055 +1703260321000,18.62926958984568 +1703260322000,14.616185640663776 +1703260323000,13.294580995122551 +1703260324000,15.45395688885939 +1703260325000,17.442652514967456 +1703260326000,19.935330527580184 +1703260327000,14.548370105250974 +1703260328000,11.576909552356609 +1703260329000,15.42762942012763 +1703260330000,12.392292838582346 +1703260331000,18.73275768090763 +1703260332000,12.518952627623278 +1703260333000,12.450626238338481 +1703260334000,14.416570494726493 +1703260335000,11.476109826814957 +1703260336000,12.31010828119345 +1703260337000,18.36615961581178 +1703260338000,16.091707415981908 +1703260339000,17.35498255148656 +1703260340000,16.879412106531664 +1703260341000,13.535364626612136 +1703260342000,16.63228423537442 +1703260343000,11.410249898805617 +1703260344000,13.455717123523133 +1703260345000,12.655642796529696 +1703260346000,10.874476945545835 +1703260347000,18.81969180124577 +1703260348000,15.230237897138359 +1703260349000,18.021946136846665 +1703260350000,18.41632496802463 +1703260351000,12.708372250488026 +1703260352000,10.441112317054403 +1703260353000,18.437092705804453 +1703260354000,18.005174174682836 +1703260355000,13.834457329498433 +1703260356000,18.57374728000412 +1703260357000,13.020154212785265 +1703260358000,18.622426806066642 +1703260359000,14.819213266628154 +1703260360000,15.52621746686535 +1703260361000,17.55260781314333 +1703260362000,12.45396831835298 +1703260363000,16.059132777406596 +1703260364000,17.71156063400213 +1703260365000,18.907351750764484 +1703260366000,15.11514394927086 +1703260367000,19.828673932778358 +1703260368000,16.61149487604665 +1703260369000,12.574059302542159 +1703260370000,10.216637671309769 +1703260371000,12.887225808505438 +1703260372000,16.084003780715882 +1703260373000,10.593164815979767 +1703260374000,10.567719332817147 +1703260375000,14.232507607376117 +1703260376000,13.310795620666212 +1703260377000,15.673959883678645 +1703260378000,17.455533147099942 +1703260379000,16.68711502863843 +1703260380000,11.423322284725124 +1703260381000,14.891892956103455 +1703260382000,15.525971786427593 +1703260383000,15.287764987597589 +1703260384000,17.941677176134824 +1703260385000,16.275852227410304 +1703260386000,17.343115596884562 +1703260387000,19.01692997775065 +1703260388000,19.56118913995394 +1703260389000,18.002319983061547 +1703260390000,14.860581443644675 +1703260391000,10.793635947227113 +1703260392000,19.663086146713212 +1703260393000,16.62924684001808 +1703260394000,16.465714814430825 +1703260395000,15.192546293516298 +1703260396000,19.603871477056288 +1703260397000,14.6230124037284 +1703260398000,17.474350393398602 +1703260399000,17.29045298133901 +1703260400000,17.86405117425735 +1703260401000,18.5903257129452 +1703260402000,19.708637071397735 +1703260403000,15.370995094160616 +1703260404000,12.802629126428226 +1703260405000,16.683640159191167 +1703260406000,16.165681405626927 +1703260407000,13.165970485104493 +1703260408000,11.571603257274568 +1703260409000,13.16719297482371 +1703260410000,18.734355941862255 +1703260411000,15.054054315469296 +1703260412000,16.938698935118687 +1703260413000,15.57634740283127 +1703260414000,13.428570727503837 +1703260415000,14.230024947591222 +1703260416000,10.974116746756904 +1703260417000,15.588729764005187 +1703260418000,16.8835035779993 +1703260419000,13.793689669547643 +1703260420000,19.13281282958695 +1703260421000,19.085245382005382 +1703260422000,14.767919159258529 +1703260423000,14.239277004183885 +1703260424000,10.155378559106895 +1703260425000,10.87553691836903 +1703260426000,17.848371649047706 +1703260427000,13.159543343252373 +1703260428000,19.597944212673337 +1703260429000,10.857024419272532 +1703260430000,13.270349973518085 +1703260431000,13.09972410829105 +1703260432000,19.617027821345015 +1703260433000,19.800918091102368 +1703260434000,12.566967126929336 +1703260435000,16.510211986515458 +1703260436000,18.338062498531976 +1703260437000,16.47440990937696 +1703260438000,10.982474750951338 +1703260439000,10.632414635456977 +1703260440000,10.343161172846404 +1703260441000,13.6215604156436 +1703260442000,13.62696007098441 +1703260443000,15.891116558912199 +1703260444000,14.34223848961662 +1703260445000,14.004020581368897 +1703260446000,12.01334092731057 +1703260447000,16.976947783156582 +1703260448000,13.675295878370243 +1703260449000,10.099717050081834 +1703260450000,12.159567873462938 +1703260451000,15.177785495466065 +1703260452000,12.407655632067971 +1703260453000,19.83521366774732 +1703260454000,17.046466256515522 +1703260455000,10.910500052287194 +1703260456000,17.576440429781805 +1703260457000,14.532021020309582 +1703260458000,10.824953271607896 +1703260459000,18.71193552991769 +1703260460000,12.261203693753208 +1703260461000,10.016470270429235 +1703260462000,19.428133163953976 +1703260463000,16.932902114359713 +1703260464000,10.48411985282369 +1703260465000,12.423535798906542 +1703260466000,13.913840393917194 +1703260467000,10.33212671744288 +1703260468000,17.055964132654516 +1703260469000,14.060574955562883 +1703260470000,12.653095005126502 +1703260471000,11.386483125371226 +1703260472000,10.198648905226538 +1703260473000,15.013131398944385 +1703260474000,16.891459360437246 +1703260475000,15.177645900357604 +1703260476000,15.282846003806867 +1703260477000,10.446279284186499 +1703260478000,17.297390342299796 +1703260479000,19.985071592708138 +1703260480000,17.153513666794534 +1703260481000,19.508169345024392 +1703260482000,19.75527177073605 +1703260483000,16.62779702014098 +1703260484000,11.506569018061258 +1703260485000,18.47088536663068 +1703260486000,15.170231563610487 +1703260487000,13.735964018210549 +1703260488000,11.137526007203839 +1703260489000,10.225922809782693 +1703260490000,13.33884894596343 +1703260491000,10.253202021994705 +1703260492000,15.023042984352456 +1703260493000,18.035973904363455 +1703260494000,13.636142297666433 +1703260495000,16.727274705953178 +1703260496000,19.128649741740823 +1703260497000,16.87770379695307 +1703260498000,10.456393316145821 +1703260499000,17.60879948914979 +1703260500000,11.004415609037205 +1703260501000,10.393660190341574 +1703260502000,17.102758743620925 +1703260503000,12.353936602773382 +1703260504000,16.6489217287568 +1703260505000,16.75754991835789 +1703260506000,13.218581096471983 +1703260507000,15.117017310609691 +1703260508000,12.680754934135136 +1703260509000,16.560212605153104 +1703260510000,15.111272670568084 +1703260511000,15.40389372796015 +1703260512000,17.218489550602058 +1703260513000,12.52505711552387 +1703260514000,10.082188890175889 +1703260515000,10.248315153915353 +1703260516000,11.481953673349203 +1703260517000,13.088603384405372 +1703260518000,12.721487898684657 +1703260519000,17.624465723049518 +1703260520000,11.092535953264449 +1703260521000,13.673949687680754 +1703260522000,14.380200687867292 +1703260523000,11.965668494025417 +1703260524000,19.653919567953057 +1703260525000,17.64161187990795 +1703260526000,12.403371062511543 +1703260527000,16.884173811525372 +1703260528000,11.283804158353586 +1703260529000,11.92727393082538 +1703260530000,13.141837413580731 +1703260531000,18.137032629330676 +1703260532000,13.002921857021548 +1703260533000,11.974523524010907 +1703260534000,19.432082548897725 +1703260535000,16.419954195908304 +1703260536000,14.419002590614715 +1703260537000,13.93876255038774 +1703260538000,19.29251445952848 +1703260539000,13.199749881723761 +1703260540000,10.272389566981841 +1703260541000,11.451715451793177 +1703260542000,19.353226074045356 +1703260543000,14.232343103539874 +1703260544000,19.620529001014447 +1703260545000,10.786116716103745 +1703260546000,11.925884744894086 +1703260547000,15.490176385165864 +1703260548000,18.16907137884553 +1703260549000,11.50980352353423 +1703260550000,19.258130465127525 +1703260551000,18.097645807210185 +1703260552000,15.317933296211999 +1703260553000,19.16885855878253 +1703260554000,12.952619314041836 +1703260555000,13.094764309215376 +1703260556000,10.558667677875349 +1703260557000,19.64287412124642 +1703260558000,16.789556654432737 +1703260559000,13.050177772677271 +1703260560000,19.261405331881946 +1703260561000,11.769863777345469 +1703260562000,15.68626502473257 +1703260563000,19.821163320660915 +1703260564000,17.09549141313681 +1703260565000,10.488875034093715 +1703260566000,13.246407800812497 +1703260567000,19.5035207326375 +1703260568000,13.807279027856048 +1703260569000,19.17113313170887 +1703260570000,16.37462959112304 +1703260571000,18.85813980217206 +1703260572000,18.155147501915494 +1703260573000,19.80734049216411 +1703260574000,11.52397269305273 +1703260575000,16.477336765310508 +1703260576000,12.113829728250284 +1703260577000,10.991414845519552 +1703260578000,15.665755070740904 +1703260579000,10.437331968266102 +1703260580000,18.41974459738148 +1703260581000,14.32133681336344 +1703260582000,11.697175814728784 +1703260583000,15.22518148425226 +1703260584000,11.330629109684487 +1703260585000,13.715261130910271 +1703260586000,17.902704675262704 +1703260587000,18.418826423197384 +1703260588000,13.846405748093245 +1703260589000,17.411348811970882 +1703260590000,17.700183572489433 +1703260591000,17.39466451383918 +1703260592000,11.752399777395238 +1703260593000,17.339407750181508 +1703260594000,19.48135202603444 +1703260595000,12.48286724394211 +1703260596000,18.738614863517075 +1703260597000,17.911574694763566 +1703260598000,19.59059821606735 +1703260599000,16.785542033288962 +1703260600000,12.172978197205925 +1703260601000,17.146061244550882 +1703260602000,13.288340682436734 +1703260603000,10.409535915548041 +1703260604000,12.564683643016993 +1703260605000,12.54026174391772 +1703260606000,17.91778208218613 +1703260607000,14.211670647377405 +1703260608000,15.5351822705676 +1703260609000,18.501313909429225 +1703260610000,14.642747282141952 +1703260611000,12.873843273766678 +1703260612000,15.129397680152625 +1703260613000,10.177256136268193 +1703260614000,16.472082601141704 +1703260615000,18.676915364178637 +1703260616000,13.345794608561663 +1703260617000,10.878698825580084 +1703260618000,13.09031882432039 +1703260619000,10.951041565100091 +1703260620000,17.32260508601707 +1703260621000,13.259420777138114 +1703260622000,16.81856355741136 +1703260623000,19.414261428265533 +1703260624000,17.611273008360993 +1703260625000,12.195987386804365 +1703260626000,14.438388793703872 +1703260627000,13.769159220505566 +1703260628000,19.175625049334613 +1703260629000,18.352867229997408 +1703260630000,11.764939084283364 +1703260631000,19.836498907854093 +1703260632000,14.607288034561371 +1703260633000,14.21051307318643 +1703260634000,14.4922320471552 +1703260635000,11.235744260076423 +1703260636000,11.386250072413652 +1703260637000,17.636181300135455 +1703260638000,19.917259506311986 +1703260639000,12.871477770871783 +1703260640000,13.025978068497976 +1703260641000,15.284456595640512 +1703260642000,15.399512095604592 +1703260643000,14.187747701521168 +1703260644000,18.842891475804254 +1703260645000,17.180657568362037 +1703260646000,14.226965148582238 +1703260647000,12.877935383538771 +1703260648000,11.249336264176668 +1703260649000,12.099765827404433 +1703260650000,11.35829654472462 +1703260651000,12.727002048291212 +1703260652000,18.84983554021112 +1703260653000,15.355698632970949 +1703260654000,12.970072407000039 +1703260655000,17.121791644535328 +1703260656000,16.188084104749514 +1703260657000,19.44217543271964 +1703260658000,18.596986443889072 +1703260659000,15.556944997687344 +1703260660000,14.388001980802006 +1703260661000,17.4932287880724 +1703260662000,14.4081236169134 +1703260663000,15.039995610016858 +1703260664000,13.160136810031812 +1703260665000,10.79935605202445 +1703260666000,12.195864232920822 +1703260667000,11.77101862397567 +1703260668000,18.774484857223783 +1703260669000,10.364550568518473 +1703260670000,18.304924309578325 +1703260671000,18.262212597781087 +1703260672000,18.965207989494353 +1703260673000,18.59027570497274 +1703260674000,10.282955244338416 +1703260675000,19.78760731206119 +1703260676000,10.152699992517892 +1703260677000,12.589454385122037 +1703260678000,13.237730005517435 +1703260679000,12.840120480781993 +1703260680000,14.667445999092388 +1703260681000,19.381609460445624 +1703260682000,10.068906622139725 +1703260683000,14.602392113974012 +1703260684000,10.447247352058081 +1703260685000,12.763431461571109 +1703260686000,14.565526816699766 +1703260687000,13.61026058711387 +1703260688000,18.66427019566214 +1703260689000,15.079621365354495 +1703260690000,15.004435537619647 +1703260691000,14.484467135449071 +1703260692000,11.757940216593028 +1703260693000,19.485397253137922 +1703260694000,16.59930304628072 +1703260695000,10.539629599375782 +1703260696000,11.12543728919947 +1703260697000,14.770839017896686 +1703260698000,19.478870680855245 +1703260699000,19.02364047528971 +1703260700000,18.92606526052037 +1703260701000,13.717179388492646 +1703260702000,10.735078475732854 +1703260703000,18.11382327739654 +1703260704000,16.364414961182 +1703260705000,19.22295359812358 +1703260706000,13.69917388646094 +1703260707000,17.255010917976236 +1703260708000,14.961688374135228 +1703260709000,10.83313995128647 +1703260710000,17.882514635932868 +1703260711000,16.392478962428907 +1703260712000,10.793036939758826 +1703260713000,15.265528002959778 +1703260714000,14.038795588164934 +1703260715000,13.84378272780281 +1703260716000,16.06608225162137 +1703260717000,12.363488209141256 +1703260718000,11.261541323816385 +1703260719000,12.704767845542614 +1703260720000,16.406300586818432 +1703260721000,14.392888544382245 +1703260722000,15.390778380120615 +1703260723000,10.301123100290717 +1703260724000,13.783663016524805 +1703260725000,17.546597386042713 +1703260726000,10.36511457564055 +1703260727000,11.607770794004468 +1703260728000,19.082109747361805 +1703260729000,18.596728621332378 +1703260730000,18.832762732995242 +1703260731000,19.903610931026503 +1703260732000,15.334304155335321 +1703260733000,13.072825413837528 +1703260734000,16.353211788267828 +1703260735000,18.813908421039375 +1703260736000,14.76139527903301 +1703260737000,10.465732147521623 +1703260738000,17.641041138211357 +1703260739000,12.21014532263278 +1703260740000,18.52954956546744 +1703260741000,10.07485475547265 +1703260742000,17.075994681809828 +1703260743000,16.53899550694121 +1703260744000,13.714168808481535 +1703260745000,11.472704800347453 +1703260746000,10.426589289411718 +1703260747000,16.23467520275351 +1703260748000,14.907758009295797 +1703260749000,13.833850570682529 +1703260750000,12.549207268437545 +1703260751000,12.71632707220243 +1703260752000,16.452038181015322 +1703260753000,17.756757311846187 +1703260754000,15.892191358107004 +1703260755000,19.17403126203716 +1703260756000,15.15214762602876 +1703260757000,12.473391361586547 +1703260758000,18.304019400200744 +1703260759000,11.726322490965028 +1703260760000,11.290244345695193 +1703260761000,19.956380986592308 +1703260762000,11.897931286560947 +1703260763000,18.726984411490754 +1703260764000,19.734879876800427 +1703260765000,13.019001027328024 +1703260766000,17.737157448933964 +1703260767000,13.587854625287239 +1703260768000,10.097492140911195 +1703260769000,14.89052343008787 +1703260770000,13.866564009486094 +1703260771000,18.65110422830684 +1703260772000,14.636485154324053 +1703260773000,18.412415178131358 +1703260774000,12.504277126737868 +1703260775000,11.910990531113011 +1703260776000,19.774556846970437 +1703260777000,11.346665238887631 +1703260778000,17.249083697925094 +1703260779000,19.845344312652536 +1703260780000,13.68285992026303 +1703260781000,15.1168659120857 +1703260782000,15.707312382434363 +1703260783000,13.586346144899371 +1703260784000,12.058733472232202 +1703260785000,13.517203549884806 +1703260786000,15.417147283286049 +1703260787000,14.656762730252412 +1703260788000,15.03949165771196 +1703260789000,19.27365012087755 +1703260790000,12.674456149740498 +1703260791000,11.353435543669422 +1703260792000,18.863371060102743 +1703260793000,10.654754879135798 +1703260794000,19.671059267497622 +1703260795000,18.569292718352486 +1703260796000,13.59445836337397 +1703260797000,16.02278592957637 +1703260798000,11.08751960846189 +1703260799000,16.176744863332473 +1703260800000,10.640523476117012 +1703260801000,15.6518575206539 +1703260802000,19.301013549188706 +1703260803000,10.939842725194017 +1703260804000,13.554319577394292 +1703260805000,13.435893539198593 +1703260806000,19.785518080383405 +1703260807000,12.048178501775967 +1703260808000,11.755399659800426 +1703260809000,11.183230924383409 +1703260810000,17.116183041202845 +1703260811000,17.081333954745624 +1703260812000,18.096047216702644 +1703260813000,10.878962950277307 +1703260814000,10.664724154471621 +1703260815000,16.89962902866581 +1703260816000,15.647532350875325 +1703260817000,17.62214954938831 +1703260818000,12.575470019621653 +1703260819000,19.72528347166445 +1703260820000,19.46267094366519 +1703260821000,17.8116405324936 +1703260822000,17.078125260737668 +1703260823000,13.393169719147256 +1703260824000,14.915145947035299 +1703260825000,13.522663950005354 +1703260826000,10.999465269341734 +1703260827000,11.88300696746816 +1703260828000,12.568983457876621 +1703260829000,10.393919252137877 +1703260830000,13.725046862161097 +1703260831000,15.949050504167426 +1703260832000,15.8133936459519 +1703260833000,19.368977568526518 +1703260834000,11.757931678796412 +1703260835000,17.592985056852676 +1703260836000,17.146688427688154 +1703260837000,19.903243774491525 +1703260838000,13.099489767967114 +1703260839000,17.841383297896492 +1703260840000,10.616361818143425 +1703260841000,14.246917195168134 +1703260842000,18.769570789091016 +1703260843000,10.628206640678956 +1703260844000,19.766911182975615 +1703260845000,14.22786576310245 +1703260846000,16.11041510820521 +1703260847000,14.116984907657638 +1703260848000,14.014768654684225 +1703260849000,17.261713230722584 +1703260850000,19.828524175317497 +1703260851000,19.361997370573434 +1703260852000,14.204970797486737 +1703260853000,16.998326084735464 +1703260854000,16.338361209859606 +1703260855000,12.964017369653718 +1703260856000,13.004353489520492 +1703260857000,13.031218054741961 +1703260858000,16.60232742151986 +1703260859000,11.43647693109254 +1703260860000,17.708560604149667 +1703260861000,15.166884809286294 +1703260862000,11.189992891743431 +1703260863000,13.652788812472643 +1703260864000,11.447036539012844 +1703260865000,18.248893203063375 +1703260866000,10.69847887916823 +1703260867000,17.597833406880458 +1703260868000,11.377701367639784 +1703260869000,12.277415497732036 +1703260870000,12.336382102324084 +1703260871000,17.69116223042161 +1703260872000,10.606099071473702 +1703260873000,17.922220220151544 +1703260874000,12.822997037215313 +1703260875000,13.324567867039377 +1703260876000,19.106414848455824 +1703260877000,13.75052794484703 +1703260878000,12.057272095211438 +1703260879000,18.62370541346586 +1703260880000,15.624327734674752 +1703260881000,12.190289857475396 +1703260882000,19.46591897142748 +1703260883000,12.243632062863469 +1703260884000,12.232214736430517 +1703260885000,19.341219153296066 +1703260886000,14.518079619294351 +1703260887000,17.321819894719656 +1703260888000,12.015942618259654 +1703260889000,14.575861394441132 +1703260890000,13.002015943526619 +1703260891000,11.564932802829578 +1703260892000,14.34723530662247 +1703260893000,13.115206572113749 +1703260894000,12.129852285540803 +1703260895000,16.75590832415875 +1703260896000,19.30129245668325 +1703260897000,12.342263822052644 +1703260898000,16.458150942185227 +1703260899000,15.850214523113888 +1703260900000,12.989135612033152 +1703260901000,11.754047771653 +1703260902000,16.334704494641656 +1703260903000,15.784210023877662 +1703260904000,16.152371235562143 +1703260905000,11.047242805338811 +1703260906000,16.67636593789288 +1703260907000,19.45642493057525 +1703260908000,18.356756833123185 +1703260909000,18.105218514553936 +1703260910000,13.448287970045863 +1703260911000,16.312860836851428 +1703260912000,14.976240142717598 +1703260913000,19.70937034172246 +1703260914000,18.28352450323139 +1703260915000,15.758162719986792 +1703260916000,17.77793447254653 +1703260917000,12.38415977027847 +1703260918000,18.222962521951644 +1703260919000,16.934805760016218 +1703260920000,12.494967193876473 +1703260921000,14.693873892420788 +1703260922000,12.236566016556884 +1703260923000,12.997922851499391 +1703260924000,13.355705342246921 +1703260925000,16.43240841126649 +1703260926000,14.325689079977 +1703260927000,10.712115760867654 +1703260928000,13.924156887849382 +1703260929000,12.38586921869869 +1703260930000,16.447148543811892 +1703260931000,10.901681271093292 +1703260932000,18.28333909962112 +1703260933000,11.355516576228815 +1703260934000,18.830107775665525 +1703260935000,18.728213828355685 +1703260936000,11.234098755786647 +1703260937000,16.22403463491125 +1703260938000,12.884251512956165 +1703260939000,16.726351552444275 +1703260940000,10.34453054697915 +1703260941000,13.35042832635617 +1703260942000,17.090443709296686 +1703260943000,11.487453216490257 +1703260944000,16.714097748535263 +1703260945000,13.15201935831575 +1703260946000,18.372040817387678 +1703260947000,15.899256160369026 +1703260948000,16.17992529206899 +1703260949000,15.574497013146827 +1703260950000,19.643904370502195 +1703260951000,12.89467002747175 +1703260952000,18.086627758175407 +1703260953000,18.676817092617256 +1703260954000,11.744946783876266 +1703260955000,16.49841408751618 +1703260956000,14.540050824653878 +1703260957000,17.550112648990577 +1703260958000,16.363773764421605 +1703260959000,19.22265280170273 +1703260960000,14.379821233891228 +1703260961000,12.028561322497914 +1703260962000,18.37881869896564 +1703260963000,13.8940338250292 +1703260964000,17.36043704782361 +1703260965000,12.411448103148707 +1703260966000,18.061615146300195 +1703260967000,14.48264584085835 +1703260968000,10.526048817732065 +1703260969000,10.133534276909575 +1703260970000,19.880156119405676 +1703260971000,16.968750245069867 +1703260972000,18.492663904785317 +1703260973000,12.029825921549119 +1703260974000,14.133691297927268 +1703260975000,10.741470955016684 +1703260976000,10.284586916735414 +1703260977000,17.177769427610233 +1703260978000,19.087954050394142 +1703260979000,19.14449722786071 +1703260980000,12.412753966674128 +1703260981000,14.162118140714899 +1703260982000,10.75565383931923 +1703260983000,19.163537200012954 +1703260984000,12.658676170169668 +1703260985000,13.80906710937514 +1703260986000,16.36388222438533 +1703260987000,18.085801139822777 +1703260988000,14.678550192182326 +1703260989000,17.58560418379821 +1703260990000,19.658963480214123 +1703260991000,14.035903943792274 +1703260992000,13.383264588102536 +1703260993000,13.186529031778065 +1703260994000,17.942981284297936 +1703260995000,17.810184886248713 +1703260996000,18.26697294402535 +1703260997000,16.813074920522865 +1703260998000,14.131257049900864 +1703260999000,13.18219829606457 +1703261000000,17.49656664316408 +1703261001000,10.476909432820195 +1703261002000,19.216122367577636 +1703261003000,11.769187232412072 +1703261004000,12.70705368410059 +1703261005000,12.57430428826505 +1703261006000,10.115241013827314 +1703261007000,12.8376105085165 +1703261008000,14.458050949365045 +1703261009000,11.529789770000146 +1703261010000,14.93482975427388 +1703261011000,16.13169572218273 +1703261012000,16.961544109318286 +1703261013000,10.49143254753095 +1703261014000,14.117889777779208 +1703261015000,19.253199201057477 +1703261016000,13.859553001376714 +1703261017000,10.380271404915776 +1703261018000,13.170789596548515 +1703261019000,14.112764667032298 +1703261020000,14.889392804334314 +1703261021000,10.849879445737537 +1703261022000,19.732833382407414 +1703261023000,18.659437649368925 +1703261024000,16.430524847257253 +1703261025000,10.165940485890443 +1703261026000,15.713757601227744 +1703261027000,16.294871982503437 +1703261028000,16.83917072461679 +1703261029000,15.811899105415486 +1703261030000,18.013997374624672 +1703261031000,18.133325606436756 +1703261032000,19.544972714731124 +1703261033000,17.669919352403 +1703261034000,17.793442677177605 +1703261035000,14.79606170341124 +1703261036000,11.10557033665251 +1703261037000,14.07672848306599 +1703261038000,15.952990021167423 +1703261039000,10.721820622182928 +1703261040000,16.39742929672362 +1703261041000,14.056505501357197 +1703261042000,13.516007621491145 +1703261043000,17.139415394542596 +1703261044000,15.417422767799973 +1703261045000,16.045976814872773 +1703261046000,11.293413421340995 +1703261047000,17.636112059337524 +1703261048000,10.755817125330829 +1703261049000,18.02896989510089 +1703261050000,17.507681506873663 +1703261051000,10.085593782776973 +1703261052000,11.17874231989156 +1703261053000,18.160989515681024 +1703261054000,17.936454678395126 +1703261055000,19.47616361502173 +1703261056000,12.2528870614309 +1703261057000,12.855124369601231 +1703261058000,19.487338700852156 +1703261059000,11.380327518256168 +1703261060000,17.552718672787687 +1703261061000,15.818376932739001 +1703261062000,16.580393675662602 +1703261063000,15.662330071875637 +1703261064000,11.739276047680814 +1703261065000,12.98651760377015 +1703261066000,17.691659645284986 +1703261067000,10.293385404790495 +1703261068000,11.927818232471171 +1703261069000,11.129807797705695 +1703261070000,16.44137363329712 +1703261071000,17.621344154734366 +1703261072000,18.135559514062557 +1703261073000,13.413267063445211 +1703261074000,18.730645626344085 +1703261075000,14.785428407359401 +1703261076000,12.01224479432039 +1703261077000,10.538974958064967 +1703261078000,18.472792177826157 +1703261079000,17.867991084106123 +1703261080000,18.663092926179367 +1703261081000,16.56575093945106 +1703261082000,13.128139056424835 +1703261083000,16.280536776899552 +1703261084000,15.094068397935322 +1703261085000,17.183245793571498 +1703261086000,14.961297107185718 +1703261087000,19.594382265654215 +1703261088000,17.251101999794454 +1703261089000,14.292531547810338 +1703261090000,11.42853970643314 +1703261091000,14.077902041519575 +1703261092000,18.21134589268662 +1703261093000,16.554372694797834 +1703261094000,16.301486949476548 +1703261095000,18.636620167500965 +1703261096000,16.337760223969113 +1703261097000,11.65875281441498 +1703261098000,15.196421057004795 +1703261099000,12.02133322544562 +1703261100000,10.311296956026677 +1703261101000,19.935829141428982 +1703261102000,15.021412063839374 +1703261103000,14.031674580178073 +1703261104000,13.649650537239477 +1703261105000,11.347202534882838 +1703261106000,11.625754134331185 +1703261107000,11.360951270539733 +1703261108000,19.385646465432607 +1703261109000,16.75429116837168 +1703261110000,18.758145678781922 +1703261111000,12.427124082341157 +1703261112000,15.547659360141058 +1703261113000,15.650070227801624 +1703261114000,17.29431851919699 +1703261115000,10.237944884405467 +1703261116000,12.415500884345125 +1703261117000,18.62664561113825 +1703261118000,12.564934744047381 +1703261119000,15.06958714329718 +1703261120000,13.357417006328763 +1703261121000,12.662653780596287 +1703261122000,14.730148174563507 +1703261123000,15.525250377198864 +1703261124000,12.759360416343528 +1703261125000,19.321143002352905 +1703261126000,19.268048232259915 +1703261127000,15.615103057751151 +1703261128000,12.201852163291575 +1703261129000,15.153772351975672 +1703261130000,14.107932231472835 +1703261131000,12.370222761662639 +1703261132000,15.78190296780365 +1703261133000,16.913525963684144 +1703261134000,19.456451813188007 +1703261135000,17.46709542002298 +1703261136000,13.862669488031667 +1703261137000,18.896206957370794 +1703261138000,10.858398794292954 +1703261139000,11.087082584050576 +1703261140000,17.40902374143732 +1703261141000,14.955518635535892 +1703261142000,11.610176220345899 +1703261143000,14.76209274009926 +1703261144000,12.070117220070312 +1703261145000,14.814598031110387 +1703261146000,19.928736264784526 +1703261147000,12.717685921320045 +1703261148000,18.540945778814198 +1703261149000,11.295195994753653 +1703261150000,15.930266337385683 +1703261151000,13.120239030121443 +1703261152000,16.401221187230032 +1703261153000,15.732443184098315 +1703261154000,15.600650714024585 +1703261155000,17.575847515354223 +1703261156000,14.99227129653284 +1703261157000,12.71857027990772 +1703261158000,12.124848113626891 +1703261159000,19.642554633922497 +1703261160000,13.67493648162129 +1703261161000,14.55460789406079 +1703261162000,18.21836302145593 +1703261163000,14.802985093251316 +1703261164000,15.376797681289885 +1703261165000,19.30249875077488 +1703261166000,12.203738737346178 +1703261167000,10.676877990324037 +1703261168000,11.323389492914451 +1703261169000,10.672776140193694 +1703261170000,16.40004380778466 +1703261171000,12.822392385285106 +1703261172000,18.469634508952247 +1703261173000,19.45931229915754 +1703261174000,16.647985402813276 +1703261175000,12.04214036709972 +1703261176000,19.59881011301772 +1703261177000,11.939350843775829 +1703261178000,11.25163874452337 +1703261179000,12.068207239022007 +1703261180000,13.070219154058606 +1703261181000,11.825815012158532 +1703261182000,12.936529159748257 +1703261183000,11.668677564425735 +1703261184000,13.288864181881701 +1703261185000,18.61661339676201 +1703261186000,10.193074690284796 +1703261187000,10.487952112412064 +1703261188000,15.23077883639073 +1703261189000,15.126014877419994 +1703261190000,11.425500871712593 +1703261191000,15.631334857120011 +1703261192000,13.624047494840548 +1703261193000,17.729985477576925 +1703261194000,13.111968355560869 +1703261195000,11.190205712087884 +1703261196000,18.96316729531607 +1703261197000,12.49306737688019 +1703261198000,17.64004445297301 +1703261199000,15.540929993530366 +1703261200000,14.86014832022144 +1703261201000,10.443695788262023 +1703261202000,16.684912802423064 +1703261203000,18.694650209488692 +1703261204000,17.704152685738347 +1703261205000,18.660771337752145 +1703261206000,12.086599628997119 +1703261207000,19.415340171572325 +1703261208000,13.54005681059677 +1703261209000,15.038204293556348 +1703261210000,18.136980301132148 +1703261211000,13.1626144860461 +1703261212000,19.34287795904467 +1703261213000,14.425629368824172 +1703261214000,14.662681334829738 +1703261215000,18.319987477326393 +1703261216000,16.27654217925967 +1703261217000,15.68787715510783 +1703261218000,13.180704413364575 +1703261219000,15.292349547178397 +1703261220000,15.252469215728722 +1703261221000,10.175025395893943 +1703261222000,11.270958297575206 +1703261223000,13.624109154422518 +1703261224000,16.81948466915835 +1703261225000,16.77336835669677 +1703261226000,15.657278424301236 +1703261227000,18.737030260292684 +1703261228000,14.430708238064145 +1703261229000,14.504667710750303 +1703261230000,11.485174928588098 +1703261231000,15.90409264176587 +1703261232000,11.244275227456104 +1703261233000,13.612990457588115 +1703261234000,13.763369803423679 +1703261235000,18.524040960852222 +1703261236000,10.748423023420976 +1703261237000,10.18854153618631 +1703261238000,12.849466776733468 +1703261239000,16.836519882089277 +1703261240000,18.04056781969549 +1703261241000,10.141432901905626 +1703261242000,12.806748980974685 +1703261243000,19.757013080200046 +1703261244000,18.480895174325525 +1703261245000,11.010747958633942 +1703261246000,16.982436110412642 +1703261247000,16.898303969097995 +1703261248000,15.973907573646386 +1703261249000,17.722033688204533 +1703261250000,17.19582936502104 +1703261251000,10.448256054488319 +1703261252000,14.758039163356488 +1703261253000,16.11524107340558 +1703261254000,17.683792810633157 +1703261255000,12.930305572045254 +1703261256000,11.739269305639619 +1703261257000,12.085859106448442 +1703261258000,19.893409330085717 +1703261259000,12.026694071882837 +1703261260000,10.707847664361621 +1703261261000,10.017864794311201 +1703261262000,11.744885622869708 +1703261263000,17.204209641886038 +1703261264000,15.44743957668976 +1703261265000,18.18760715578679 +1703261266000,12.441328845939228 +1703261267000,18.308123122579612 +1703261268000,15.776919030328727 +1703261269000,13.122777434057927 +1703261270000,10.182153556601982 +1703261271000,13.8175588946255 +1703261272000,17.284565039258148 +1703261273000,11.35923397526595 +1703261274000,12.959523678694197 +1703261275000,14.507002651393938 +1703261276000,12.39297597965395 +1703261277000,18.570846336946317 +1703261278000,11.45708499136973 +1703261279000,17.881576879349854 +1703261280000,19.73641924388996 +1703261281000,17.162402219615416 +1703261282000,12.198102178467916 +1703261283000,15.48827481076505 +1703261284000,10.746837931308992 +1703261285000,13.148771696876928 +1703261286000,12.175802017889449 +1703261287000,16.8627142936138 +1703261288000,17.16250545308643 +1703261289000,17.19356009587648 +1703261290000,15.665057892372207 +1703261291000,11.619580528855177 +1703261292000,17.455005592282713 +1703261293000,16.22879352521725 +1703261294000,12.410733195966127 +1703261295000,13.66030263811076 +1703261296000,13.28427066363544 +1703261297000,16.189862859123426 +1703261298000,12.23892450784605 +1703261299000,19.42960243077485 +1703261300000,11.295998819677814 +1703261301000,17.1127745652974 +1703261302000,18.16698595607935 +1703261303000,19.942082501429706 +1703261304000,12.231249348439864 +1703261305000,16.926679245023358 +1703261306000,10.477452228944621 +1703261307000,14.191641636532523 +1703261308000,19.960269429234042 +1703261309000,19.711430395808446 +1703261310000,15.69578708970427 +1703261311000,10.859761451838839 +1703261312000,19.42069600300409 +1703261313000,13.772594861127036 +1703261314000,15.724520566197235 +1703261315000,12.860503018358568 +1703261316000,14.802631752219906 +1703261317000,19.77492799958499 +1703261318000,12.099232557452808 +1703261319000,14.10215722434102 +1703261320000,19.118482096459587 +1703261321000,14.38513028730057 +1703261322000,19.303426160951556 +1703261323000,15.660723634824832 +1703261324000,19.152921316121436 +1703261325000,11.013514988873224 +1703261326000,10.707196637176533 +1703261327000,10.570675225287589 +1703261328000,17.360459521678123 +1703261329000,11.669894883517731 +1703261330000,12.845335332312246 +1703261331000,14.649994877652585 +1703261332000,15.606687981409053 +1703261333000,18.837968044395932 +1703261334000,13.480465328323328 +1703261335000,15.998884388346458 +1703261336000,18.217200506583335 +1703261337000,15.674143232788687 +1703261338000,19.059702598617335 +1703261339000,15.490203085409263 +1703261340000,19.37054041265592 +1703261341000,13.722955491337057 +1703261342000,19.99174966154863 +1703261343000,18.415646915653262 +1703261344000,10.362776751710214 +1703261345000,18.926411526242426 +1703261346000,10.235471574112264 +1703261347000,11.594330455756246 +1703261348000,16.54881981034221 +1703261349000,12.125181646628661 +1703261350000,19.21107651970354 +1703261351000,12.5075627864702 +1703261352000,19.445674523232064 +1703261353000,19.624652622877335 +1703261354000,14.531221188287589 +1703261355000,10.42452966927288 +1703261356000,12.67328954355129 +1703261357000,15.84606669537644 +1703261358000,19.123679118690845 +1703261359000,12.094639554599814 +1703261360000,11.931816786507838 +1703261361000,16.303025741908908 +1703261362000,18.170407331504773 +1703261363000,15.855686323863257 +1703261364000,18.78885053861455 +1703261365000,19.043915851717408 +1703261366000,10.544310329297982 +1703261367000,12.451207694419224 +1703261368000,12.868129718327827 +1703261369000,15.654639380528502 +1703261370000,13.063458129822155 +1703261371000,15.898714959615267 +1703261372000,17.754283567337446 +1703261373000,18.48711614449531 +1703261374000,10.877082101212677 +1703261375000,11.266530976711755 +1703261376000,11.456300994935578 +1703261377000,11.147724493460462 +1703261378000,19.51314406354743 +1703261379000,18.45746284426994 +1703261380000,12.44223573272999 +1703261381000,19.589602089162604 +1703261382000,17.54455253624147 +1703261383000,11.948272661745971 +1703261384000,15.461503423067917 +1703261385000,12.857162058763853 +1703261386000,19.564813911408635 +1703261387000,15.908026059932991 +1703261388000,19.32788455731624 +1703261389000,10.079610993021669 +1703261390000,10.41908370696651 +1703261391000,11.719014913735105 +1703261392000,14.948921313435697 +1703261393000,13.732993330748897 +1703261394000,17.17577818379221 +1703261395000,10.342309715974043 +1703261396000,11.932019955593782 +1703261397000,18.37766428039405 +1703261398000,13.229051923982816 +1703261399000,16.62771836207294 +1703261400000,12.40440778470661 +1703261401000,19.689030778064197 +1703261402000,14.62861948077147 +1703261403000,17.497435711557554 +1703261404000,14.654365927024317 +1703261405000,16.45126806764361 +1703261406000,17.171527689934045 +1703261407000,15.131000905995448 +1703261408000,18.056081902553974 +1703261409000,19.15143354909862 +1703261410000,13.221772046416104 +1703261411000,18.711542607685217 +1703261412000,12.286419913793207 +1703261413000,18.880179418622664 +1703261414000,18.251732239651353 +1703261415000,16.56888409607983 +1703261416000,18.95806122250389 +1703261417000,18.44719361705659 +1703261418000,15.212346351505229 +1703261419000,11.907266733260936 +1703261420000,14.838294320906353 +1703261421000,12.0543827196913 +1703261422000,15.531690026661494 +1703261423000,18.43835839026876 +1703261424000,14.764185797610681 +1703261425000,16.565145180561657 +1703261426000,14.543255705186105 +1703261427000,14.797150996293688 +1703261428000,11.645213135567806 +1703261429000,12.415901823732863 +1703261430000,17.068085899731578 +1703261431000,12.618571300338365 +1703261432000,18.140630178838542 +1703261433000,15.725701562002106 +1703261434000,16.72589136886089 +1703261435000,15.488537669960719 +1703261436000,14.046341236719146 +1703261437000,11.900134070194362 +1703261438000,14.954274712559481 +1703261439000,16.36585367699729 +1703261440000,18.18089494441716 +1703261441000,11.735745809999864 +1703261442000,11.087080740494855 +1703261443000,11.792556928053552 +1703261444000,19.045843506570954 +1703261445000,17.97037410188456 +1703261446000,16.68650595118455 +1703261447000,15.654712713536956 +1703261448000,15.667297941767657 +1703261449000,14.358979342653758 +1703261450000,17.80419731453818 +1703261451000,14.469911264566559 +1703261452000,17.80223865816402 +1703261453000,15.376861428948445 +1703261454000,14.500200084507757 +1703261455000,11.840358904232689 +1703261456000,12.573836753223476 +1703261457000,13.323184178037609 +1703261458000,17.155467390374337 +1703261459000,13.860894166588901 +1703261460000,13.315030471014122 +1703261461000,14.040676798466857 +1703261462000,11.252104387183845 +1703261463000,17.84972407894838 +1703261464000,15.211901873279018 +1703261465000,14.824681181252926 +1703261466000,17.109269287550184 +1703261467000,15.982818576442849 +1703261468000,10.240409960488542 +1703261469000,10.479775343776303 +1703261470000,13.849134770774862 +1703261471000,11.075868885594351 +1703261472000,10.020082327402612 +1703261473000,14.036085002552252 +1703261474000,13.878312207409014 +1703261475000,10.428632759737352 +1703261476000,18.406569839182332 +1703261477000,11.598127619300234 +1703261478000,12.337462440839566 +1703261479000,10.454486889920943 +1703261480000,15.343720327511154 +1703261481000,19.818057062822625 +1703261482000,16.886807743409886 +1703261483000,13.516048295133569 +1703261484000,11.11096161547913 +1703261485000,17.0741013199774 +1703261486000,12.647862769118197 +1703261487000,19.309825374296523 +1703261488000,19.68129039632627 +1703261489000,16.676410461556184 +1703261490000,18.919040151517464 +1703261491000,14.707149499264025 +1703261492000,10.433107065655287 +1703261493000,16.361271468635 +1703261494000,11.612833110629568 +1703261495000,13.51901260219815 +1703261496000,12.062147682472293 +1703261497000,10.070173526267869 +1703261498000,17.374324532526746 +1703261499000,15.19829036307245 +1703261500000,12.7825123012887 +1703261501000,19.39659746015449 +1703261502000,16.22842969285059 +1703261503000,11.956250069085137 +1703261504000,10.035413650576734 +1703261505000,17.650070000266258 +1703261506000,18.90248561451775 +1703261507000,11.077686372315485 +1703261508000,18.15451896576471 +1703261509000,18.156731508523556 +1703261510000,15.638605013794608 +1703261511000,17.952604814034196 +1703261512000,16.300644355672205 +1703261513000,11.341943658076922 +1703261514000,15.485959683203134 +1703261515000,16.80536594402034 +1703261516000,11.303668738381203 +1703261517000,15.170454845113799 +1703261518000,19.136093577636398 +1703261519000,16.27353494741347 +1703261520000,13.14303113013976 +1703261521000,18.910181134282794 +1703261522000,16.669076627477537 +1703261523000,17.616018079230322 +1703261524000,17.431861800763933 +1703261525000,13.105941834656965 +1703261526000,12.24386407461615 +1703261527000,18.510708741468314 +1703261528000,10.096160912333776 +1703261529000,10.217217011005516 +1703261530000,19.896937942691626 +1703261531000,18.957502435516595 +1703261532000,15.849113203309997 +1703261533000,15.924846325654485 +1703261534000,19.645735004183585 +1703261535000,13.2462194552069 +1703261536000,12.999682078096658 +1703261537000,19.88754608994138 +1703261538000,18.748567903277902 +1703261539000,17.845101781524455 +1703261540000,16.712807423366836 +1703261541000,14.724586325171735 +1703261542000,10.40228262590015 +1703261543000,17.886603837070794 +1703261544000,12.18211938501716 +1703261545000,10.77357765842347 +1703261546000,13.763299405195768 +1703261547000,16.912277097943864 +1703261548000,18.08720603981645 +1703261549000,11.848671958651586 +1703261550000,10.389793766925584 +1703261551000,13.549828255016415 +1703261552000,15.15904208838201 +1703261553000,11.835124149653595 +1703261554000,11.82036677028665 +1703261555000,11.284120850625811 +1703261556000,13.49124398328263 +1703261557000,13.710986789953406 +1703261558000,15.065196260710021 +1703261559000,16.579143627922445 +1703261560000,14.129836539629704 +1703261561000,11.175516903955788 +1703261562000,16.231380268967463 +1703261563000,13.521117593604561 +1703261564000,15.447699838566876 +1703261565000,10.322411575987843 +1703261566000,16.275375647306603 +1703261567000,10.900745211767415 +1703261568000,14.34150861924237 +1703261569000,19.995758684006013 +1703261570000,16.240581607429753 +1703261571000,18.77788382456971 +1703261572000,13.37082565129041 +1703261573000,15.72060438013911 +1703261574000,10.221166119278163 +1703261575000,18.499551819788174 +1703261576000,16.59637347611875 +1703261577000,11.382824284433662 +1703261578000,10.143057533545033 +1703261579000,16.226859408242305 +1703261580000,19.92997322883258 +1703261581000,13.035845407764395 +1703261582000,16.884213258297542 +1703261583000,15.086995811470123 +1703261584000,14.718314749898141 +1703261585000,14.945923459833214 +1703261586000,16.747270013408034 +1703261587000,13.666813324561478 +1703261588000,18.34120556872474 +1703261589000,10.063493369810269 +1703261590000,16.07542001318243 +1703261591000,18.437910903062047 +1703261592000,14.503189114017315 +1703261593000,11.204738602975379 +1703261594000,18.78907151521115 +1703261595000,19.765744713922174 +1703261596000,10.376724072525846 +1703261597000,13.34519930722526 +1703261598000,12.235399295084228 +1703261599000,16.904858459107977 +1703261600000,19.70163740704408 +1703261601000,17.450155931399625 +1703261602000,12.263048588667065 +1703261603000,10.53322999982184 +1703261604000,19.281461110151106 +1703261605000,17.59984819218388 +1703261606000,19.916421805452828 +1703261607000,14.432571589285596 +1703261608000,11.514787900030495 +1703261609000,12.946402650311327 +1703261610000,15.599151276732485 +1703261611000,12.52295340580799 +1703261612000,11.699370818336874 +1703261613000,18.11944773872155 +1703261614000,15.256335921603766 +1703261615000,12.491756202589896 +1703261616000,15.370606325022422 +1703261617000,12.065630156819605 +1703261618000,16.631379210719157 +1703261619000,17.416062695932304 +1703261620000,10.931028998051922 +1703261621000,11.9157356171058 +1703261622000,16.714151475559753 +1703261623000,17.205932536551114 +1703261624000,10.313398374094344 +1703261625000,11.650547294207946 +1703261626000,10.344495621978524 +1703261627000,19.972114680431112 +1703261628000,15.154248015242471 +1703261629000,14.836405267013163 +1703261630000,18.40230836368235 +1703261631000,19.712559551383286 +1703261632000,16.857371931776655 +1703261633000,18.09904650958555 +1703261634000,15.062057225631804 +1703261635000,16.28228019456544 +1703261636000,18.211885215462082 +1703261637000,12.83999229303333 +1703261638000,18.867840999376305 +1703261639000,10.515542261862642 +1703261640000,10.390981017155616 +1703261641000,10.98715954829061 +1703261642000,17.312482309373546 +1703261643000,12.003957397378446 +1703261644000,17.934531186699694 +1703261645000,14.462860584459555 +1703261646000,12.300055457745485 +1703261647000,15.591027437778491 +1703261648000,14.403455883304673 +1703261649000,16.70285956832675 +1703261650000,10.12837295228931 +1703261651000,19.126844730873948 +1703261652000,13.45071176287377 +1703261653000,12.20669125445578 +1703261654000,18.50614076741635 +1703261655000,16.676223183308174 +1703261656000,15.329787549403008 +1703261657000,14.722568282968354 +1703261658000,10.774579329791932 +1703261659000,15.225669769406927 +1703261660000,11.594318461221366 +1703261661000,14.569477516469425 +1703261662000,16.20152175635176 +1703261663000,17.938679835945983 +1703261664000,18.386863861821773 +1703261665000,18.23906789963314 +1703261666000,19.43592012387331 +1703261667000,15.554496216845859 +1703261668000,16.987180455873478 +1703261669000,19.909068195900048 +1703261670000,16.316991202569984 +1703261671000,15.731473397389294 +1703261672000,15.697670010454235 +1703261673000,19.480465825510663 +1703261674000,10.083079516701828 +1703261675000,12.32053532993917 +1703261676000,13.366613019970298 +1703261677000,19.124240772249134 +1703261678000,18.581404311799727 +1703261679000,12.60926032275772 +1703261680000,17.502950122960637 +1703261681000,10.626691440700297 +1703261682000,14.176556856907565 +1703261683000,19.60492080184358 +1703261684000,17.187380330100456 +1703261685000,16.312537959451042 +1703261686000,18.8522086874942 +1703261687000,16.525380749201588 +1703261688000,17.724093153960897 +1703261689000,16.470282914009466 +1703261690000,18.70046026512883 +1703261691000,10.091100186980666 +1703261692000,17.37455627720361 +1703261693000,15.544449565098809 +1703261694000,13.68756194606451 +1703261695000,15.30997186681936 +1703261696000,10.44530593190267 +1703261697000,15.57003194603308 +1703261698000,11.180178582716858 +1703261699000,18.668469588558743 +1703261700000,12.078968817887068 +1703261701000,12.125004490804795 +1703261702000,14.527646083533238 +1703261703000,18.25570354258177 +1703261704000,11.480787211765053 +1703261705000,13.858248411980833 +1703261706000,13.76106844738626 +1703261707000,17.669925196077564 +1703261708000,11.320945257503306 +1703261709000,19.042471690988712 +1703261710000,13.0656753168006 +1703261711000,10.348622067653807 +1703261712000,13.73368268702087 +1703261713000,14.44768518113944 +1703261714000,18.383750260851393 +1703261715000,17.59534845838496 +1703261716000,16.27551475366755 +1703261717000,10.414257052347143 +1703261718000,17.176905395313735 +1703261719000,11.374805541957075 +1703261720000,17.076125635474853 +1703261721000,17.689995666043725 +1703261722000,15.514507156468012 +1703261723000,11.943392443466387 +1703261724000,18.452572104570283 +1703261725000,17.581487672663574 +1703261726000,10.448853975910293 diff --git a/monitoring-data-persistor/src/main/exn/__init__.py b/monitoring-data-persistor/src/main/exn/__init__.py new file mode 100644 index 0000000..0b73db1 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/__init__.py @@ -0,0 +1,6 @@ + + +from . import core +from . import handler +from . import settings +from . import connector \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/exn/connector.py b/monitoring-data-persistor/src/main/exn/connector.py new file mode 100644 index 0000000..47bbbf4 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/connector.py @@ -0,0 +1,84 @@ +import logging +import os + +from proton.reactor import Container + +from main.exn.core import state_publisher, schedule_publisher +from main.exn.core.context import Context +from .core.manager import Manager +from .settings import base +from .handler import connector_handler + +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +_logger = logging.getLogger(__name__) + + +class EXN: + + context = None + container = None + + def __init__(self, component=None, + handler:connector_handler.ConnectorHandler = None, + publishers=None, + consumers=None, + **kwargs): + + # Load .env file + # Validate and set connector + if not component: + _logger.error("Component cannot be empty or None") + raise ValueError("Component cannot be empty or None") + self.component = component + + self.url = kwargs.get('url',os.getenv('NEBULOUS_BROKER_URL')) + self.port = kwargs.get('port', os.getenv('NEBULOUS_BROKER_PORT')) + self.username = kwargs.get('username',os.getenv('NEBULOUS_BROKER_USERNAME')) + self.password = kwargs.get('password', os.getenv('NEBULOUS_BROKER_PASSWORD')) + self.handler = handler + + # Validate attributes + if not self.url: + _logger.error("URL cannot be empty or None") + raise ValueError("URL cannot be empty or None") + if not self.port: + _logger.error("PORT cannot be empty or None") + raise ValueError("PORT cannot be empty or None") + if not self.username: + _logger.error("USERNAME cannot be empty or None") + raise ValueError("USERNAME cannot be empty or None") + if not self.password: + _logger.error("PASSWORD cannot be empty or None") + raise ValueError("PASSWORD cannot be empty or None") + + self.context = Context(base=f"{base.NEBULOUS_BASE_NAME}.{self.component}") + + if not publishers: + publishers = [] + + if not consumers: + consumers = [] + + compiled_publishers = publishers + if kwargs.get("enable_state",False): + compiled_publishers.append(state_publisher.Publisher()) + + if kwargs.get("enable_health",False): + compiled_publishers.append(schedule_publisher.Publisher( + base.NEBULOUS_DEFAULT_HEALTH_CHECK_TIMEOUT, + 'health', + 'health', + topic=True)) + + for c in consumers: + self.context.register_consumers(c) + + for p in compiled_publishers: + self.context.register_publisher(p) + + def start(self): + self.context.start(Manager(f"{self.url}:{self.port}"),self.handler) + + + def stop(self): + self.context.stop() diff --git a/monitoring-data-persistor/src/main/exn/core/__init__.py b/monitoring-data-persistor/src/main/exn/core/__init__.py new file mode 100644 index 0000000..8fb3eb4 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/__init__.py @@ -0,0 +1,9 @@ + + +from . import context +from . import handler +from . import publisher +from . import consumer +from . import state_publisher +from . import schedule_publisher + diff --git a/monitoring-data-persistor/src/main/exn/core/consumer.py b/monitoring-data-persistor/src/main/exn/core/consumer.py new file mode 100644 index 0000000..a92a1c2 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/consumer.py @@ -0,0 +1,43 @@ +import logging + +from proton import Event +from .handler import Handler + +from . import link + +from proton.handlers import MessagingHandler + +_logger = logging.getLogger(__name__) +_logger.setLevel(level=logging.DEBUG) + + +class Consumer(link.Link, MessagingHandler): + application = None + + def __init__(self, key, address, handler: Handler, application=None, topic=False, fqdn=False): + super(Consumer, self).__init__(key, address, topic, fqdn) + self.application = application + self.handler = handler + self.handler._consumer = self + + def should_handle(self, event: Event): + + should = event.link.name == self._link.name and \ + (self.application is None or event.message.subject == self.application) + + _logger.debug(f"[{self.key}] checking if link is the same {event.link.name}={self._link.name} " + f" and application {self.application}={event.message.subject} == {should}") + + return should + + def on_start(self, event: Event) -> None: + _logger.debug(f"[{self.key}] on_start") + + def on_message(self, event): + _logger.debug(f"[{self.key}] handling event with address => {event.message.address}") + try: + if self.should_handle(event): + self.handler.on_message(self.key, event.message.address, event.message.body, event.message) + + except Exception as e: + _logger.error(f"Received message: {e}") diff --git a/monitoring-data-persistor/src/main/exn/core/context.py b/monitoring-data-persistor/src/main/exn/core/context.py new file mode 100644 index 0000000..db5cde6 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/context.py @@ -0,0 +1,109 @@ +import logging + +from proton.reactor import Container + +from . import link +from .manager import Manager + + +_logger = logging.getLogger(__name__) +_logger.setLevel(logging.DEBUG) + +class Context: + + base = None + handler = None + publishers = {} + consumers = {} + _manager = None + + def __init__(self, base): + + self.base = base + + def start(self, manager:Manager, handler): + self._manager = manager + + def on_ready(): + _logger.debug("[context] on_ready" ) + for key,publisher in self.publishers.items(): + self._manager.start_publisher(self,publisher) + + for key,consumer in self.consumers.items(): + self._manager.start_consumer(self,consumer) + + handler.ready(context=self) + + self._manager._on_ready=on_ready + self._manager.start() + + def stop(self): + if self._manager is not None and self._manager.started: + for key,publisher in self.publishers: + publisher._link.close() + for key,consumer in self.consumers: + consumer._link.close() + + self._manager.close() + + + def register_publisher(self, publisher): + if publisher.key in self.publishers: + _logger.warning("[context] Trying to register publisher that already exists") + return + _logger.info(f"[context] registering publisher {publisher.key} {publisher.address}" ) + self.publishers[publisher.key] = publisher + if self._manager is not None and self._manager.started: + self._manager.start_publisher(self,publisher) + + def get_publisher(self, key): + if key in self.publishers: + return self.publishers[key] + return None + + def has_publisher(self, key): + return key in self.publishers + + def has_consumer(self, key): + return key in self.consumers + + def register_consumers(self, consumer): + if consumer.key in self.consumers: + _logger.warning("[context] Trying to register consumer that already exists") + return + + self.consumers[consumer.key] = consumer + if self._manager is not None and self._manager.started: + self._manager.start_consumer(self,consumer) + + def unregister_consumer(self, key): + if not key in self.consumers: + _logger.warning("[context] Trying to unregister consumer that does not exists") + return + + consumer = self.consumers.pop(key) + if self._manager is not None and self._manager.started: + consumer._link.close() + + def unregister_publisher(self, key): + if not key in self.consumers: + _logger.warning("[context] Trying to unregister publisher that does not exists") + return + publisher = self.publishers.pop(key) + if self._manager is not None and self._manager.started: + publisher._link.close() + + def build_address_from_link(self, link: link.Link): + + if link.fqdn: + address = link.address + if link.topic and not link.address.startswith("topic://"): + address = f"topic://{address}" + return address + + address = f"{self.base}.{link.address}" + if link.topic: + address = f"topic://{address}" + + return address + diff --git a/monitoring-data-persistor/src/main/exn/core/handler.py b/monitoring-data-persistor/src/main/exn/core/handler.py new file mode 100644 index 0000000..8fd1bfb --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/handler.py @@ -0,0 +1,11 @@ +import logging + +from proton import Message + +_logger = logging.getLogger(__name__) + + +class Handler: + + def on_message(self, key, address, body, message: Message, context=None): + _logger.info(f"You should really override this... {key}=>{address}") diff --git a/monitoring-data-persistor/src/main/exn/core/link.py b/monitoring-data-persistor/src/main/exn/core/link.py new file mode 100644 index 0000000..bf91199 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/link.py @@ -0,0 +1,20 @@ + + +from proton import Link as pLink + +class Link: + + fqdn=False + + def __init__(self, key, address, topic=False, fqdn=False): + super().__init__() + self.key = key + self.address = address + self.topic= topic + self.fqdn= fqdn + self._link = None + + def set(self, link:pLink): + # The proton container creates a sender + # so we just use composition instead of extension + self._link = link diff --git a/monitoring-data-persistor/src/main/exn/core/manager.py b/monitoring-data-persistor/src/main/exn/core/manager.py new file mode 100644 index 0000000..dd4025e --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/manager.py @@ -0,0 +1,71 @@ +import logging + +from proton import Event, Connection,Session + +from proton.handlers import MessagingHandler +from proton.reactor import Container + +from .consumer import Consumer +from .publisher import Publisher + +_logger = logging.getLogger(__name__) +_logger.setLevel(logging.DEBUG) + + +class SessionPerConsumer(object): + def session(self, connection: Connection) -> Session: + session = connection.session() + session.open() + return session + + +class Manager(MessagingHandler): + uri = None + started = False + container = None + connection = None + + _on_ready = None + + def __init__(self, uri): + super(Manager, self).__init__() + self.uri = uri + + def start(self): + _logger.info(f"[manager] starting") + self.container = Container(self) + self.container.run() + + def on_start(self, event: Event) -> None: + self.connection = self.container.connect(self.uri) + self.connection._session_policy=SessionPerConsumer() + + self.started=True + _logger.debug(f"[manager] on_start") + if self._on_ready is not None: + self._on_ready() + + def on_message(self, event: Event) -> None: + _logger.warning(f"[manager] received generic on_message make sure you have set up your handlers" + f" properly ") + + def close(self): + _logger.info(f"[manager] closing") + if self.container: + self.container.stop() + + if self.connection: + self.connection.close() + + def start_publisher(self, context, publisher: Publisher): + address = context.build_address_from_link(publisher) + _logger.info(f"[manager] starting publisher {publisher.key} => {address}") + publisher.set(self.container.create_sender(self.connection, address)) + if hasattr(publisher, "delay"): + _logger.debug(f"{context.base} registering timer {hasattr(publisher, 'delay')}") + self.container.schedule(publisher.delay, handler=publisher) + + def start_consumer(self, context, consumer: Consumer): + address = context.build_address_from_link(consumer) + _logger.info(f"[manager] starting consumer {consumer.key} => {address}") + consumer.set(self.container.create_receiver(self.connection, address , handler=consumer)) diff --git a/monitoring-data-persistor/src/main/exn/core/publisher.py b/monitoring-data-persistor/src/main/exn/core/publisher.py new file mode 100644 index 0000000..e15ec6a --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/publisher.py @@ -0,0 +1,36 @@ +import datetime +import logging + +from proton import Message + +from . import link + +_logger = logging.getLogger(__name__) + + +class Publisher(link.Link): + + def send(self, body=None, application=None): + if not body: + body = {} + + _logger.info(f"[{self.key}] sending to {self._link.target.address} for application={application} - {body} ") + msg = self._prepare_message(body) + if application: + msg.subject = application + + self._link.send(msg) + + def _prepare_message(self, body=None): + + if not body: + body = {} + + send = {"when": datetime.datetime.utcnow().isoformat()} + send.update(body) + msg = Message( + address=self._link.target.address, + body=send + ) + msg.content_type = "application/json" + return msg diff --git a/monitoring-data-persistor/src/main/exn/core/schedule_publisher.py b/monitoring-data-persistor/src/main/exn/core/schedule_publisher.py new file mode 100644 index 0000000..f7dc10c --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/schedule_publisher.py @@ -0,0 +1,24 @@ +import logging + +from proton.handlers import MessagingHandler +from .publisher import Publisher + +_logger = logging.getLogger(__name__) + + +class Publisher(Publisher, MessagingHandler): + send_next = False + delay = 15 + + def __init__(self, delay, key, address, application=None, topic=False, fqdn=False): + super(Publisher, self).__init__(key, address, topic,fqdn) + self.delay = delay + self.application = application + + def on_timer_task(self, event): + _logger.debug(f"[manager] on_timer_task") + self.send() + event.reactor.schedule(self.delay, self) + + def send(self, body=None, application=None): + super(Publisher, self).send(body, self.application) diff --git a/monitoring-data-persistor/src/main/exn/core/state_publisher.py b/monitoring-data-persistor/src/main/exn/core/state_publisher.py new file mode 100644 index 0000000..f8ae1cb --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/core/state_publisher.py @@ -0,0 +1,45 @@ +import datetime +import json +from enum import Enum + +from proton import Message + +from . import publisher + +import logging + +_logger = logging.getLogger(__name__) + +class States(Enum): + + STARTING = "starting" + STARTED = "started" + READY = "ready" + STOPPING = "stopping" + STOPPED = "stopped" + +class Publisher(publisher.Publisher): + + def __init__(self): + super().__init__("state","state", True) + + def _send_message(self, message_type): + self.send({"state": message_type,"message": None}) + + def starting(self): + self._send_message(States.STARTING.value) + + def started(self): + self._send_message(States.STARTED.value) + + def ready(self): + self._send_message(States.READY.value) + + def stopping(self): + self._send_message(States.STOPPING.value) + + def stopped(self): + self._send_message(States.STOPPED.value) + + def custom(self, state): + self._send_message(state) diff --git a/monitoring-data-persistor/src/main/exn/handler/__init__.py b/monitoring-data-persistor/src/main/exn/handler/__init__.py new file mode 100644 index 0000000..a7a404b --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/handler/__init__.py @@ -0,0 +1,2 @@ + +from . import connector_handler \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/exn/handler/connector_handler.py b/monitoring-data-persistor/src/main/exn/handler/connector_handler.py new file mode 100644 index 0000000..dafe9d8 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/handler/connector_handler.py @@ -0,0 +1,12 @@ + +import logging + + +_logger = logging.getLogger(__name__) + +class ConnectorHandler: + + def ready(self, context): + pass + + diff --git a/monitoring-data-persistor/src/main/exn/settings/__init__.py b/monitoring-data-persistor/src/main/exn/settings/__init__.py new file mode 100644 index 0000000..cf50d1c --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/settings/__init__.py @@ -0,0 +1 @@ +from . import base \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/exn/settings/base.py b/monitoring-data-persistor/src/main/exn/settings/base.py new file mode 100644 index 0000000..baf5475 --- /dev/null +++ b/monitoring-data-persistor/src/main/exn/settings/base.py @@ -0,0 +1,2 @@ +NEBULOUS_BASE_NAME="eu.nebulouscloud" +NEBULOUS_DEFAULT_HEALTH_CHECK_TIMEOUT=15 \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/runtime/Constants.py b/monitoring-data-persistor/src/main/runtime/Constants.py new file mode 100644 index 0000000..479e2e6 --- /dev/null +++ b/monitoring-data-persistor/src/main/runtime/Constants.py @@ -0,0 +1,13 @@ +class Constants: + configuration_file_location = "/home/resources/config.properties" + broker_port = "5672" + broker_ip = "localhost" + broker_username = "admin" + broker_password = "admin" + monitoring_broker_topic = "monitoring" + bucket_name = "nebulous" + organization_name = "nebulous" + db_token = "tzIfpbU9b77quyvN0yHIbWltSh1c1371-o9nl_wJYaeo5TWdk5txyxXhp2iaLVMvOvf020HnEEAkE0yy5AllKQ==" + db_hostname = "localhost" + db_port = "8086" + monitoring_prefix = "topic://eu.nebulouscloud."+monitoring_broker_topic \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/runtime/DataPersistor.py b/monitoring-data-persistor/src/main/runtime/DataPersistor.py new file mode 100644 index 0000000..647b135 --- /dev/null +++ b/monitoring-data-persistor/src/main/runtime/DataPersistor.py @@ -0,0 +1,62 @@ +import logging +import os +import sys +import threading +import time +from jproperties import Properties + +from influxdb_client import Point, WritePrecision, InfluxDBClient +from influxdb_client.client.write_api import SYNCHRONOUS + +from Constants import Constants +from InfluxDBConnector import InfluxDBConnector +from main.exn import connector, core +from main.exn.handler.connector_handler import ConnectorHandler + +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logging.getLogger('main.exn.connector').setLevel(logging.DEBUG) + + +class Bootstrap(ConnectorHandler): + + influx_connector = InfluxDBConnector() + def on_message(self, key, address, body, context, **kwargs): + logging.info(f"Received {key} => {address}") + application_name = "default_application" + if (str(address)).startswith(Constants.monitoring_prefix): + logging.info("New monitoring data arrived at topic "+address) + logging.info(body) + point = Point(str(address).split(".")[-1]).field("metricValue",body["metricValue"]).tag("level",body["level"]).tag("component_id",body["component_id"]).tag("application_name",application_name) + point.time(body["timestamp"],write_precision=WritePrecision.S) + self.influx_connector.write_data(point) + else: + print("Address is "+str(address)+", but it was expected for it to start with " + Constants.monitoring_prefix) + + +def update_properties(configuration_file_location): + p = Properties() + with open(Constants.configuration_file_location, "rb") as f: + p.load(f, "utf-8") + Constants.broker_ip, metadata = p["broker_ip"] + Constants.broker_port, metadata = p["broker_port"] + Constants.broker_username, metadata = p["broker_username"] + Constants.broker_password, metadata = p["broker_password"] + Constants.monitoring_broker_topic, metadata = p["monitoring_broker_topic"] + +if __name__ == "__main__": + Constants.configuration_file_location = sys.argv[1] + update_properties(Constants.configuration_file_location) + application_handler = Bootstrap() + connector = connector.EXN('slovid', handler=application_handler, + consumers=[ + core.consumer.Consumer('monitoring', Constants.monitoring_broker_topic + '.>', topic=True, handler=application_handler), + ], + url=Constants.broker_ip, + port=Constants.broker_port, + username=Constants.broker_username, + password=Constants.broker_password + ) + #connector.start() + thread = threading.Thread(target=connector.start,args=()) + thread.start() + diff --git a/monitoring-data-persistor/src/main/runtime/DemoDataPublisher.py b/monitoring-data-persistor/src/main/runtime/DemoDataPublisher.py new file mode 100644 index 0000000..1b965be --- /dev/null +++ b/monitoring-data-persistor/src/main/runtime/DemoDataPublisher.py @@ -0,0 +1,62 @@ +import logging +import threading +import time,random + +from influxdb_client import Point, WritePrecision, InfluxDBClient +from influxdb_client.client.write_api import SYNCHRONOUS + +from Constants import Constants +from InfluxDBConnector import InfluxDBConnector +from main.exn import connector, core +from datetime import datetime + + +class Bootstrap(connector.connector_handler.ConnectorHandler): + pass + + +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logging.getLogger('main.exn.connector').setLevel(logging.DEBUG) + + +metric_list = ["cpu_usage","ram_usage"] +publisher_dict = {} +publisher_list = [] +for metric in metric_list: + new_publisher = (core.publisher.Publisher("slovid","monitoring."+metric,topic=True)) + publisher_dict[metric]= new_publisher + publisher_list.append(new_publisher) + +connector = connector.EXN('slovid', handler=Bootstrap(), + consumers=[], + publishers=publisher_list, + url="localhost", + port="5672", + username="admin", + password="admin", + enable_health=False + ) +#connector.start() +thread = threading.Thread(target=connector.start,args=()) +thread.start() +time.sleep(5) +time_to_generate_time_for = 10*3600 +frequency = 5 + +for metric_name in metric_list: + current_time = int(time.time()) + counter = 0 + print("Data for "+metric_name) + for time_point in range(current_time-time_to_generate_time_for,current_time,frequency): + random_value = random.uniform(0,100) + message = { + "metricValue": random_value, + "level": 1, + "component_id":"wordpress_1", + "timestamp": time_point + } + publisher_dict[metric_name].send(body=message) + if counter%50==0: + print("Sending message "+str(counter)) + counter = counter +1 + diff --git a/monitoring-data-persistor/src/main/runtime/InfluxDBConnector.py b/monitoring-data-persistor/src/main/runtime/InfluxDBConnector.py new file mode 100644 index 0000000..178af47 --- /dev/null +++ b/monitoring-data-persistor/src/main/runtime/InfluxDBConnector.py @@ -0,0 +1,25 @@ +from influxdb_client import InfluxDBClient, Point, WritePrecision +from Constants import Constants +from influxdb_client.client.write_api import SYNCHRONOUS + + + +class InfluxDBConnector: + client = InfluxDBClient(url="http://"+Constants.db_hostname+":"+Constants.db_port, token=Constants.db_token, org=Constants.organization_name) + write_api = client.write_api(write_options=SYNCHRONOUS) + + def InfluxDBConnector(self): + pass + def write_data(self,data): + self.write_api.write(bucket=Constants.bucket_name, org=Constants.organization_name, record=data, write_precision=WritePrecision.S) + + def get_data(self): + query_api = self.client.query_api() + query = """from(bucket: "nebulous") + |> range(start: -1m) + |> filter(fn: (r) => r._measurement == "temperature")""" + tables = query_api.query(query, org=Constants.organization_name) + + for table in tables: + for record in table.records: + print(record) \ No newline at end of file diff --git a/monitoring-data-persistor/src/main/runtime/RetrieveInfluxData.py b/monitoring-data-persistor/src/main/runtime/RetrieveInfluxData.py new file mode 100644 index 0000000..3ad2ee5 --- /dev/null +++ b/monitoring-data-persistor/src/main/runtime/RetrieveInfluxData.py @@ -0,0 +1,32 @@ +from datetime import datetime +from Constants import Constants +from InfluxDBConnector import InfluxDBConnector +import time + +## This utility assumes that the database has been filled with values for cpu usage and ram usage + +metric_names = ["cpu_usage","ram_usage"] +for metric_name in metric_names: + time_interval_to_get_data_for = "10h" + print_data_from_db = True + query_string = 'from(bucket: "'+Constants.bucket_name+'") |> range(start:-'+time_interval_to_get_data_for+') |> filter(fn: (r) => r["_measurement"] == "'+metric_name+'")' + influx_connector = InfluxDBConnector() + for counter in range(10): + print("performing query") + current_time = time.time() + result = influx_connector.client.query_api().query(query_string, Constants.organization_name) + elapsed_time = time.time()-current_time + print("performed query, it took "+str(elapsed_time) + " seconds") + #print(result.to_values()) + for table in result: + #print header row + print("Timestamp,ems_time,"+metric_name) + for record in table.records: + dt = datetime.fromisoformat(str(record.get_time())) + epoch_time = int(dt.timestamp()) + metric_value = record.get_value() + if(print_data_from_db): + print(str(epoch_time)+","+str(epoch_time)+","+str(metric_value)) + time.sleep(10) + + diff --git a/monitoring-data-persistor/src/main/runtime/State.py b/monitoring-data-persistor/src/main/runtime/State.py new file mode 100644 index 0000000..e69de29 diff --git a/monitoring-data-persistor/src/main/runtime/__init__.py b/monitoring-data-persistor/src/main/runtime/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/monitoring-data-persistor/src/prepare_project_code.sh b/monitoring-data-persistor/src/prepare_project_code.sh new file mode 100644 index 0000000..42cf312 --- /dev/null +++ b/monitoring-data-persistor/src/prepare_project_code.sh @@ -0,0 +1,8 @@ +#!/bin/bash +VERSION="1.0.0" + + +pip install monitoring-data-persistor-$VERSION.tar.gz +tar -xzvf monitoring-data-persistor-$VERSION.tar.gz + +pip3 install -r requirements.txt diff --git a/monitoring-data-persistor/src/requirements.txt b/monitoring-data-persistor/src/requirements.txt new file mode 100644 index 0000000..60f5b15 --- /dev/null +++ b/monitoring-data-persistor/src/requirements.txt @@ -0,0 +1,5 @@ +python-dotenv==1.0.0 +python-qpid-proton==0.39.0 +influxdb-client==1.39.0 +jproperties==2.1.1 +#libffi7 is required in linux first for python-qpid-proton diff --git a/monitoring-data-persistor/src/resources/config.properties b/monitoring-data-persistor/src/resources/config.properties new file mode 100644 index 0000000..5794e3b --- /dev/null +++ b/monitoring-data-persistor/src/resources/config.properties @@ -0,0 +1,5 @@ +broker_ip=localhost +broker_port=5672 +broker_username=admin +broker_password=admin +monitoring_broker_topic =monitoring \ No newline at end of file diff --git a/monitoring-data-persistor/src/setup.py b/monitoring-data-persistor/src/setup.py new file mode 100644 index 0000000..02d6330 --- /dev/null +++ b/monitoring-data-persistor/src/setup.py @@ -0,0 +1,16 @@ +from setuptools import setup, find_packages + +setup( + name='monitoring-data-persistor', + version='1.0.0', + #packages=find_packages('.'), + packages=["main","main.exn","main.exn.core","main.exn.handler","main.exn.settings","main.runtime"], + +package_dir={'': '.'}, + entry_points={ + 'console_scripts': [ + 'start_exsmoothing = main.runtime:DataPersistor', + ], + } + # other setup configurations +) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8c39397 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +jproperties~=2.1.1 +setuptools~=49.2.1 \ No newline at end of file diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 3dee311..3d6a578 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -8,15 +8,15 @@ - nebulous-monitoring-data-persistor-container-images description: Build the container images. files: &image_files - - ^java-spring-boot-demo/ + - ^monitoring-data-persistor/ vars: &image_vars promote_container_image_job: nebulous-monitoring-data-persistor-upload-container-images container_images: - - context: java-spring-boot-demo + - context: monitoring-data-persistor registry: quay.io - repository: quay.io/nebulous/monitoring-data-persistor-java-spring-boot-demo + repository: quay.io/nebulous/monitoring-data-persistor-monitoring-data-persistor namespace: nebulous - repo_shortname: monitoring-data-persistor-java-spring-boot-demo + repo_shortname: monitoring-data-persistor-monitoring-data-persistor repo_description: "" - job: @@ -44,7 +44,7 @@ description: Run Hadolint on Dockerfile(s). vars: dockerfiles: - - java-spring-boot-demo/Dockerfile + - monitoring-data-persistor/Dockerfile - job: name: nebulous-monitoring-data-persistor-helm-lint